混植支援フォント「Dal」

テキストエディタ用の混植支援フォントを作った。「Dal」と命名した。dash、arrow、leaderの頭文字を取って「Dal」である。

背景

VSCodeやAtomなどの最近のテキストエディタでは複数のフォントを指定することができる。欧文フォントを先に指定することにより、簡易的に、和文と欧文との混植を行なうことができる。

例えば、VSCodeのフォント設定を次のようにすると、IBM Plex Monoとヒラギノゴシックとの混植が可能だ。

"IBM Plex Mono", "Hiragino Sans", monospace

しかしこのやり方には問題がある。和文フォントで表示してほしい文字種まで欧文フォントで表示されてしまうことがあるのだ。これにより、見栄えが悪くなる。特に見栄えを損ねるのは、ダーシと矢印←↓↑→と三点リーダである。

そこでダーシと矢印と三点リーダのみをグリフとして持つフォントを作成することにした。こうしたフォントを作るのは簡単である。

M+Web FONTS Subsetter

最も簡単には、M+Web FONTS Subsetterを利用し、「サブセット化する文字を入力」の欄に―‥…←↓↑→とだけ書いて「変換・ダウンロード」ボタンを押せばよい。

ただし、これだとあまりうまくいかない。M+フォントは、もともと矢印が半角になってしまっているので、矢印に関しては期待通りの結果が得られないのだ(三点リーダとダーシについてはうまくいくのだが)。

IBM Plex Sans JPのサブセット化

そこで、ダーシがきちんとつながり、三点リーダや矢印が半角でなく、かつフリーで使える和文フォントを探すことにする。幸い、そのようなフォントは存在する。その一つがIBM Plex Sans JPである。

fontforge でフォントのサブセットを生成するを参考にフォントを作る。

必要なソフトウェアのインストール

まずFontForgeとpython3-fontforgeをインストールする。なおFontForgeはLinux環境で使うのが無難なようだ。

$ sudo apt install fontforge
$ sudo apt install python3-fontforge

Pythonスクリプトの使用

IBM Plex Sans JPをOTFからTTFに変換し、そののち、記事内にあるPythonスクリプトを利用してサブセット化する。コードポイントは次のように指定する。

codepoints = [(0x2015, 0x2015), (0x2025, 0x2026), (0x2190, 0x2193)]

こうするとダーシ、三点リーダ、矢印のみからなるフォントができあがる。

Dalフォントの作成

このままではフォント情報がIBM Plex Sans JPのままなので、FontForgeをGUIで立ち上げてフォント情報を書き換える。フォントの名前は「Dal」とでもしておく。

フォントをOSにインストールすれば使えるようになる。

エディタでフォント設定

VSCodeなどの設定で「Dal」を先頭に書き加える。

"Dal", "IBM Plex Mono", "Hiragino Sans", monospace

これで三点リーダやダーシや矢印がきちんと全角で表示される。

比較画像

Dalフォント適用前。

 

Dalフォント適用後。

schedule 2022年2月10日
local_offer #font