話題(スレッド): Migu1Mで「—」「−」が半角になる

Migu1Mで「—」「−」が半角になる (2013-09-25 19:26, 匿名, #70296)

Migu1Mの「—(ダッシュ、ダーシ)」と「−(マイナス)」がMac OS X Lion/Mountain Linon上で半角表示になってしまいます。
OSX標準のFont book、テキストエディットや、MacVimでも半角になりました。
一応、Fontforgeにて

Open("migu-1m-regular.ttf")
Select(0x2014)
Scale(180, 100)
SetWidth(1024)
CenterInWidth()
SelectNone()
Generate("hoge.ttf")
Close()

というスクリプトをかけたら「—(ダッシュ/u+2014)」は修正できたのですが、知識不足でマイナスのほうは直せず…。
両方とも、本家のほうで対応してもらえたらなと思っています。

メッセージ #70296 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: Migu1Mで「—」「−」が半角になる (2013-09-28 11:48, itouhiro, #70303)

— U+2014 'EM DASH' emダッシュ
− U+2212 'MINUS SIGN' マイナス記号
についてですね。

これはWindowsとそれ以外のOSで、Shift_JIS→Unicode のマッピングが違うという文字です。

> マイクロソフトは同様に EM DASH (U+2014, "—") を HORIZONTAL BAR (U+2015, "―") に、‥‥
> MINUS SIGN (U+2212, "−") を FULLWIDTH HYPHEN-MINUS (U+FF0D, "-") に割り当てており、
> これらの変換時にも問題が起こる。
引用元: 「波ダッシュ・全角チルダ問題 - Unicode - Wikipedia」 http://ja.wikipedia.org/wiki/Unicode#.E6.B3.A2.E3.83.80.E3.83.83.E3.82.B7.E3.83.A5.E3.83.BB.E5.85.A8.E8.A7.92.E3.83.81.E3.83.AB.E3.83.80.E5.95.8F.E9.A1.8C

現在の Migu 1M はWindowsに合わせて、以下の文字は全角になっています。

― U+2015 'HORIZONTAL BAR' 全角ダッシュ
- U+FF0D 'FULLWIDTH HYPHEN-MINUS' 全角(ハイフン)マイナス


U+2212
======

U+2212 について調べると、Macの場合、Shift_JISの0x817C(全角マイナス)→U+2212 という変換マッピングになっているそうですね。しかし U+2212 はUnicode的には「半角」が正しいです。

曖昧幅文字(East asian ambiguous width) で調べると出てくる以下のunicode.orgの公式データでは
http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt

 2212;N # MINUS SIGN

と掲載しています。「東アジアの文字幅 http://ja.wikipedia.org/wiki/%E6%9D%B1%E3%82%A2%E3%82%B8%E3%82%A2%E3%81%AE%E6%96%87%E5%AD%97%E5%B9%85 」によると

 > Unicode のテキストを東アジアの従来文字コードの文脈で扱う場合
 > 特性値Na(狭)またはN(中立)を持つ文字は、半角の文字 (halfwidth) として扱う。

なので、特性値NのU+2212は半角です。


U+2014
======

U+2014については http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt に掲載されてませんが「ダッシュ (記号) - Wikipedia」 http://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5_(%E8%A8%98%E5%8F%B7)
見ると

 >東アジアの文字幅 (East Asian Width) では‥emダッシュ(U+2014)はA

つまり

 >Unicode のテキストを東アジアの従来文字コードの文脈で扱う場合
 >特性値A(曖昧)を持つ文字は、全角の文字 (fullwidth) として扱う。
 >
 >Unicode のテキストを東アジア以外の従来文字コードの文脈で扱う場合
 >特性値 A(曖昧)を持つ文字は、幅の狭い文字 (narrow) として扱う。

日本語フォントなら全角、欧文フォントなら半角扱いなのですね。

「U+2015 HORIZONTAL BARとは何か - Mac OS Xの文字コード問題に関するメモ」 http://d.hatena.ne.jp/NAOI/20100128/1264669476
を見ると、Unicode的には U+2014もU+2015と同じような形状でよい、むしろU+2014はU+2015より横に長い。

「Emacs23(以降) と 曖昧幅文字(East asian ambiguous)」 http://d.hatena.ne.jp/khiker/20110327/emacs_cjkamb をやってみると
 U+2014
 (char-width ?—)
 2
Emacsの日本語環境ではU+2014は全角扱いです。

U+2014についてはこだわりのある様子のRictyフォント http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/ricty.html では
 >en ダッシュ(U+2013)、em ダッシュ(U+2014)が破断線のようになります (LaTeX での入力ミス防止のため)。
と書いてありますが、U+2014が半角幅ですね。日本語フォントとしては全角が正しい気がします‥‥
http://f.hatena.ne.jp/itouhiro/20130928110152


英語ページの http://en.wikipedia.org/wiki/Dash を欧文フォントで見るとen dashとem dashは明確に区別ついてますね。フォントにもよりますがen dashは半角幅、em bashは全角幅に見えます。


結論
====

Migu 1Mの次バージョンでU+2014は全角にしたいと思います。U+2212は半角のままの予定。



回避策
======

U+2015とU+2014、U+FF0DとU+2212を各々同じ形状にしたいなら以下で可能です。

Open("migu-1m-regular.ttf")
Select(0x2015)
Copy()
Select(0x2014)
Paste()
Select(0xFF0D)
Copy()
Select(0x2212)
Paste()
Generate("foo.ttf")
Close()
#70296 への返信

メッセージ #70303 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: Migu1Mで「—」「−」が半角になる (2015-07-12 15:22, itouhiro, #76513)

20150712版で、Migu 1M, Migu 2MのU+2014を全角幅に修正しました。
U+2014は欧文フォントならば半角幅なので、プログラミング向けフォントなら半角幅でもよいと今は考えていますが、小説や文章に使うなら全角幅でよいと思います。
#70303 への返信

メッセージ #76513 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする