円記号問題は百害あって一利なし
本来、Windowsのディレクトリ セパレーターは 円記号 (¥)
ではなく backslash (\)
なのだが。Windowsの日本語環境では 円記号 (¥)
で表示されているのが死ぬほど気持ち悪い。
S-JIS
には バックスラッシュ
が収録されていないと思い、グリフが無さそうであきらめていたが。そもそも Yu Gothic UI
は 游ゴシック
と Segoe UI
との合成フォントらしい。であれば、 Segoe UI
から バックスラッシュ
のグリフが補完出来るのではと思い、 Yu Gothic UI
を真っ当なフォントに修正しようと、合成に挑戦してみた。
※ なお本記事では U+005C
を backslash (\)
から 円記号 (¥)
に置き換えているフォントは 真っ当なフォントではない と言う扱いで進めます。
http://www.jiyu-kobo.co.jp/wp@test/wp-content/uploads/2020/11/compatibility201102.pdf
(Windowsだけ置き換えているのが滑稽すぎる。)
(結論) あまりうまく行かなかった。。。
普段は 。Meiryo UIも大っきらい!! (No!! Meiryo UI)
で Migu 1P
置き換えて使っていたが、置き換えられるのには限界があり、フォントの合成にチャレンジしてみたのだけど。
ダイアログのフォントとか、色々とおかしくなってしまった。。。取り敢えず使い物にならないので、戻しました(苦笑)
(´;ω;`)・・・
しかし、Segoe UI
はとっても見栄えが良くて好きになる。
合成とインストール
※ 自己責任でお願いします。
※ 自己責任でお願いします。
※ 自己責任でお願いします。
※ 自己責任でお願いします。
※ 自己責任でお願いします。
環境
手順
手順① 必要なフォントを作業用にコピー
Segoe UI
と 游ゴシック
をコピーしてくる。
@REM 游ゴシックのTTC
copy C:\Windows\Fonts\YuGothB.ttc .\
copy C:\Windows\Fonts\YuGothL.ttc .\
copy C:\Windows\Fonts\YuGothM.ttc .\
copy C:\Windows\Fonts\YuGothR.ttc .\
@REM Segoe UIのTTF
copy C:\Windows\Fonts\segoeui.ttf .\
copy C:\Windows\Fonts\segoeuib.ttf .\
copy C:\Windows\Fonts\segoeuii.ttf .\
copy C:\Windows\Fonts\segoeuil.ttf .\
copy C:\Windows\Fonts\segoeuisl.ttf .\
copy C:\Windows\Fonts\segoeuiz.ttf .\
copy C:\Windows\Fonts\seguibl.ttf .\
copy C:\Windows\Fonts\seguibli.ttf .\
copy C:\Windows\Fonts\seguili.ttf .\
copy C:\Windows\Fonts\seguisb.ttf .\
copy C:\Windows\Fonts\seguisbi.ttf .\
copy C:\Windows\Fonts\seguisli.ttf .\
※一括でコピってるけど、使わないのもある。
手順② TTCの分割
TTCはTTFの集合体。
作業はTTFで行うため、ため分割する。
FOR %A IN (*.ttc) DO unitettc64.exe "%A"
※生成されたTTFの内、赤字のものが Yu Gothic UI
のため、それらと Segoe UI
を合成する。
手順③ 合成
ベース フォント
に対して、 追加フォント
を足し込むイメージ。
※ 字游工房で公開されている資料とは突合していないため、不正確かもしれない。
諸々作業が終わった後、PDFに記載されていることに気づいた(苦笑)
正確な情報は 字游工房で公開されている資料 を参照。
Yu Gothic UI
系のフォントに対して、以下の手順を繰り返す。
(1). FontForge
で Segoe UI フォント
を開く
(2). [エレメント]
> [フォントの統合]
選択し、 Yu Gothic UI フォント
を読み込ませる。
(3). カーニング
についてのダイアログが表示されるので [いいえ]
を選択する。
(4). [エンコーディング]
> [エンコーディングを変換]
> [ISO 10646-1 (Unicode, 完全)]
を選択する。
(5). FontForge
で Yu Gothic フォント
を開く
(6). [エレメント]
> [フォント情報]
を開き、 Yu Gothic フォント
のフォント情報を転記する。
PS Names
-
TTF名
※ 両フォントにある属性のみコピー。
※ オリジナルのYu Gothic フォント
に無い属性は削除する。
(7). [ファイル]
> [フォントを出力]
を選択し、 ファイル名を入力し、 [生成]
ボタンを押下して出力する。
※ [Validate Before Saving]
は OFF
にする。
(上書きしても良いけど、別名がベター。自分で分かる名前で。)
Yu Gothic UI
系のフォントに対して、以上の手順を繰り返す。
手順④ TTCに結合
合成フォントでTTCファルを作り直し。
以下のコマンドは、Yu Gothic UI
のTTFファイルを上書きした想定のコマンド。
unitettc64.exe YuGothB.ttc YuGothB001.ttf YuGothB002.ttf YuGothB003.ttf
unitettc64.exe YuGothL.ttc YuGothL001.ttf YuGothL002.ttf
unitettc64.exe YuGothM.ttc YuGothM001.ttf YuGothM002.ttf
unitettc64.exe YuGothR.ttc YuGothR001.ttf YuGothR002.ttf
※ このツールって、スイッチじゃなくて、引数の数で生成 or 結合の挙動が変わるの、申し訳ないけどちょっと気持ち悪い。。。
手順⑤ フォントのインストール事前作業
游ゴシック
のTTCファイルの所有権を奪取し、 Adoministrators
に フル コントロール
を与える。
※ 游ゴシック
のTTCファイル、全部やるます。
※ 手順は腐るほど転がっているので割愛。
手順⑥ フォントのインストール
回復オプション
の コマンド プロンプト
を起動してコピーする。
-
SHIFT
キーを押下しながら再起動
を選択。 -
[オプションの選択]
>[トラブルシューティング]
>[コマンド プロンプロン]
を選択。 - よしなに。
@REM before
dir C:\Windows\Fonts\YuGoth*
@REM 上書き
copy /y YuGothB.ttc C:\Windows\Fonts\YuGothB.ttc
copy /y YuGothL.ttc C:\Windows\Fonts\YuGothL.ttc
copy /y YuGothM.ttc C:\Windows\Fonts\YuGothM.ttc
copy /y YuGothR.ttc C:\Windows\Fonts\YuGothR.ttc
@REM after
dir C:\Windows\Fonts\YuGoth*
※ システム ドライブは状況によって変わるので、適宜確認しながら作業してください。
手順⑨ 以上
以上。
トラブル シューティング
Q. なんで Yu Gothic UI
のTTCのグリフを直接 backslash
に置き換えないの?
A. U+005C
と U+00A5
がリンクされてて、それの解除の仕方がわかんなかったんだよ。。。
(´;ω;`)
Q. FontForge
でコピペできない。
A. コンテキスト メニュー
で頑張ろう。 (プロセスが違うとコピペ出来ない?)
Q. FontForge
文字入力がうまく入力できない。
A. US キーボード
を使おう。取り敢えず、英字はまともに入力出来る様になる。
個人的には US インターナショナル
が欧州文字も入力出来て、おすすめ。
(後述) 円記号問題について
日本ではこれまで ASCII領域
の 0x5C
を backslash (\)
ではなく Yen (¥)
として使っていた。そのため日本ではWindowsの ディレクトリ セパレータ
や、 エスケープ シーケンス
が 円記号 (¥)
として認識されている。
と言うのも、ASCII領域には実は再定義可能な文字がいくつかあり、そのうちの1つが backslash (\)
だった模様。計算機が真っ先に活躍したであろう市場の1つに金融系があると考えると、通貨記号が必要になるのは至極当然のため、 ASCII時代から 円記号 (¥)
に置き換えて使用していたのだと推察。
しかし、0x5C
を backslash (\)
として扱っている ISO-8859
をベースに拡張されている UNICODE
では U+005C (0x5C)
は Yen (¥)
ではなく backslash (\)
である。まぁ当然である。特異なS-JISをベースにする理由もない。
まぁ半角カタカナ同様、移動した文字として扱えば良いのにと思うだけど。基本的に、様々な文字コードの中で互換性を持つ扱いとしている ASCII領域
の基本文字ため、ちょっと一筋縄では行かない。
そして、日本のMicrosoftは U+005C (0x5C)
のフォント グリフを Yen (¥)
にして回避しており、さらに混乱させているのは YenSign問題
である。
ただし、これは日本固有の問題では無く、0x5C
を backslash (\)
から通貨記号に置き換えていた国がいくつか有る様で。この対応自体は誤りではないのだけど。知れば知るほど、利点が無い。こんなのユーザーが認識改めて、システムを改修するべき話である。改修規模を軽視するつもりも無いが、プログラマやSEなど、プログラマへの認知も阻害している要因になっており、正直こんなの要らない機能でしか無い。
先日も、プログラム系の記事の中で、パスを表現で、ディレクトリ セパレーター
に態々 U+00A5
の 円記号 (¥)
を使っている馬鹿なページを見かけて辟易とした。(他にも 全角の円記号 (¥)
とか、、、) ディレクトリ セパレーター
は U+005C
だ!
それでも必要だと言うのであれば、Microsoftはちゃんとその理由などを明示的に示すべきである。
昔からある MS Gothic
や MS 明朝
、 メイリオ
も時期的には仕方ないとして。游ゴシック
まで置き換える必要があったのだろうか。正直、微塵も必要性が感じられない。通貨記号使っているシステムが改修するべき問題だろう。実際、YodobashiのGOLD POINTの3Dセキュア認証ページは、2019年3月頃には遅いながらも改修がされていた。
(以前チェックしていたときのSS。画角が違うのは、使っていたAndroid端末が違うからだと思うけど、何れも、差し替え無しフォントで検証。)
他の通貨記号を扱うサイトも同様に改修されていると思うが、これが真っ当な対応だと思う。
さっさと、このフォント置き換えは悪法として撤廃してほしい。
あと、日本語キーボードで直接 0xA5 (¥)
が打てる様に、キーボード配列も見直してほしい。英語キーボード配列をベースにして。
尚、Androidでもこの悪法を行っている愚かなフォントが存在するので、実際にはMicrosoftだけが罪人ではない。だけど、天下のMicrosoft様が 鶴の一声 があれば、業界も変わりやすいと思う。UNICODEの健全な将来のためにも、頼んます!もう潮時でしょう!
正直パッケージも買って 游ゴシック
と 游明朝
の バックスラッシュ
も補完しようと思ったけど。流石に1書体で3万とかムリゲー過ぎる。。。こんな マイノリティのエゴ のために、十数万も出すなら、Windows使うの辞めるよ、、、、マジで。。。
(おまけ) Migu 1P
によるUI
Meiryo UIも大っきらい!! (No!! Meiryo UI)
を使って色々試した結果。WindowsのUIフォントとしては、Migu 1P
が最もベターだったので、ここ数年使っている。
Windowsの ディレクトリ セパレーター
で円記号問題にゲロ吐いている同士には、オススメしたい。
(NOTOとかTakao、梅とか試したけど。個人的に一番好みだった。)
参考 (謝辞)
-
FontForge Open Source Font Editor
https://fontforge.org/en-US/ -
Vista のメイリオを改造版に置き換える — バックスラッシュをバックスラッシュとして表示するために: まじかんと雑記
http://magicant.txt-nifty.com/main/2009/04/vista-ddf5.html -
フォントの合成 - ふなWiki
https://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=%A5%D5%A5%A9%A5%F3%A5%C8%A4%CE%B9%E7%C0%AE -
TTCフォントをTTFに分解する方法。 - Qiita
https://qiita.com/maboy/items/9f64d406c830aab548b1 -
Windowsカスタマイズシリーズ
http://tatsu.life.coocan.jp/MySoft/WinCust/index.html -
Miguフォント : M+とIPAの合成フォント
https://mix-mplus-ipa.osdn.jp/migu/