プログラミング用フォント編集に、FontForgeの代わりに BirdFontというソフトが使えるかもしれない

# フリーソフト（オープンソース）の鉄板「FontForge」に代わる「BirdFont」という選択

フォントの制作や編集など、フリーソフトの鉄板として「<a href="https://fontforge.org/en-US/" target="_blank" rel="noopener">FontForge</a>」があります。今回はそれに代わるかもしれない、割と安価で入手できる「BirdFont」というソフトウェアを紹介したいと思います。

**BirdFont**
<a href="https://birdfont.org/" target="_blank" rel="noopener">https://birdfont.org/</a>


# 有料ソフトは少し高い

有料ソフトに関して言えば、WindowsでもMacでも使える「<a href="https://opentype.jp/" target="_blank" rel="noopener">武蔵システム</a>」の TTEdit や、OTEdit などが有名どころでしょうが、TrueTypeフォントを作成に使える「TTEdit」は、Light版が税込7,700円、通常版が税込13,200円と少しお高め（2020年8月現在）。

一方、OpenTypeフォントを作成を行える「OTEdit」も税込19,800円と、これもなかなか。

体験版を試したところ、使い勝手も良く、本格的にフォント制作や編集を行いたい場合は、こちらを使うのがベターかもしれません。

# プログラミング用フォントについて

私も、プログラミング用フォントの <a href="https://rictyfonts.github.io/" target="_blank" rel="noopener">Ricty</a> や、<a href="https://github.com/MasayukiFukada/CodeMFont" target="_blank" rel="noopener">CodeM</a> を使うときに利用したことがあります。CodeM に至っては文字のカーニング修正をプルリクエストしたこともあります。

ここでの詳説は控えますが、プログラミング言語は、代表的なところで言えば「0（ゼロ）」と「o（オー）」、「1（イチ）」「l（小文字エル）」「I（大文字アイ）」などの区別がしやすくなっています。

ただ、「日本語」のコメントアウトを書くときに、いわゆる欧米圏のアルファベットや記号だけでは使えないことが多く、ライセンス的にきつくない日本語フォントを合成して使うことになります。そこで、FontForge などの制作・編集ツールが必要になってきます。Ricty フォントなどは、フォントデータセットそのものの配布はライセンス的にNGで行っておらず、FontForge で個々のユーザーが当該フォント生成して使う前提になっているかと思います。

# なぜ今回、BirdFontを使うことになったか

<a href="https://github.com/adobe-fonts/source-han-code-jp" target="_blank" rel="noopener">Source Han Code JP</a> を使いたくなったのがキッカケです。

これもプログラミング用に特化して開発されたAdobe社のフリーフォントで、あの「<a href="https://github.com/adobe-fonts/source-code-pro" target="_blank" rel="noopener">Source Code Pro</a>」に、読みやすい日本語フォントである、<a href="https://github.com/adobe-fonts/source-han-sans" target="_blank" rel="noopener">源ノ角ゴシック</a>が、組み合わされ、しかも単純合成ではなく、日本語の仮名や漢字とマッチするように文字幅などを調整し、快適に表示される和欧表示用UIフォントとしての利用を想定しています。

ただ。。。

## 全角スペースと、半角スペースの区別がつかない

「CodeM」フォントの方には、全角スペースが可視化されているんですよ。

![全角スペースの可視化](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/957fe421-7c95-d832-f727-ce99ab7daf51.png)

しかし、Source Han Code JP には、それがない。

だからこれを「Source Han Code JP」にも組み込みたい。ようは、自分専用として全角スペースの可視化をするため、フォントを編集しようと考えたわけです。

## Source Han Code JP を FontForge で読み込めない

ところが、いざ編集に挑戦してみると、「Source Han Code JP」がそもそも Post Script ベースの Open Type Font だからなのか、詳しいことは良く分かりませんが、FontForge に読み込んでみても、表示＆編集できないんですよね。

True Type Font も付属しているので、同様に試しても一覧表には文字が表れない。

肝心の全角スペースを「U+3000」で検索して出てこないところを見ると、もはや手も足も出なくなります。そこで、別のフォント制作・編集ソフトを試してみようと考えました。

武蔵システムシリーズの体験版で試したところ、問題なく読み込めました。ただ、値段がなあ・・・しかも体験版ではフォントを編集しても保存し直すことができません。体験期間中にチョロッと直してエクスポートしまおうかという淡い期待も消えました。

そしてついに見つけました。

# 基本、英語圏向けフォント用だが、BirdFont というソフトウェア

基本的には、オープンソースで開発が進められており、完全に英語圏向けフォント制作・編集ソフトになっていますが、Unicodeセットも読み込むことができ、漢字フォントも表示・編集できます。Open Tyep Font も、True Type Font も読み込むことができます。

**Birdfont** – A free font editor for TTF, OTF, EOT and SVG fonts
[BirdFont公式サイト](Birdfontサイト.png)

なお、Windows版、Mac版ともに用意されており、有料版を購入した場合、どちらのプラットフォーム用でもダウンロードして使うことができます。

# ただ、購入するとき、ちょっとややこしい

Donate（寄付）と、購入代金の決定がごっちゃになっているので、よく読んで入力しないと、フリー版と、Plus版のダウンロードへうまく辿り着けません。

まず、トップページ（<https://birdfont.org/>）の以下のリンクからダウンロードページへ行きましょう（少し分かりにくい）。

![こちらからダウンロード](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/c42a02e0-ecb7-3e02-09a3-ef97be71db81.png)

基本的に、BirdFont には、４つのバージョンがあります。

- オープンソース（無料）
- フリーウェア（無料）
- 商用バージョン（有料 - $4.99 USD or more）
- Plusバージョン（有料 - $9.99 USD or more）

上２つは無料ですが、下２つは有料です。ただ、ここがややこしいところで有料バージョンは、「もしよろしければそれ以上の金額を寄付されても良いですよ」となっているようで、次のダウンロードページの値段入力欄には、デフォルトで「20」があらかじめ入力されているので余計に分かりにくくなってます。

たとえば、フリー版を入手したいのなら、金額欄に「0」を入力して、「Continue」ボタンを押します。有料版なら、その所定の金額を入力してボタンを押しましょう。まあ、私の場合はけっきょくキリの良い「10」ドル入金したのですけどね。

![ダウンロード入金ページ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/2861d8b2-b813-dccf-cdf8-ec384a96523f.png)

# 支払いは、PayPalのみ

残念ながら支払いは、PayPalのみになっています（2020年8月現在）。寄付する場合も、同様です。

![PayPalへの支払い](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/a20b1ebc-1d1a-2145-48ad-a1c95ff7cc4d.png)

「Buy Now」ボタンを押して、PayPal画面へ遷移した後に、所定の金額支払いを行うと、自動的にPayPalアカウントに登録されているメールアドレスへ作者から「BirdFont Receipt」という件名のメールが届きます。そのメールには、有料版などのソフトをダウンロードできるリンク（Windows, Macの両方）が含まれます。

また、その後に、ログインページから作者のダウンロードページへ入ることができるようになります。おそらく今後、ソフトがバージョンアップされる度に、こちらのダウンロードページへ行く必要があるのかもしれません。IDは、PayPalのメールアドレスになります。

ちなみに、パスワードの再発行（reset）を行うと、勝手にランダム文字列が生成され、かなりの時間差でメールが送られてきます。ですので、何度もリセットしないよう注意が必要です。気長に待ちましょう。

# 新しい全角スペースフォントを自作してみた

さっそく、BirdFont を使って、Source Han Code JP を読み込んで、そこへ新しい全角スペース可視化フォントを追加してみようと思います。

まずは、ベースとなるフォントファイルを開いてみましょう。

BirdFont の UI は、少し独特で、最初の操作には少し戸惑うかもしれません。まず、ベースとなるフォントファイルを開くには、画面右上にあるハンバーガーメニューをクリックして、「File」を選択します。

![00-BirdFontメニュー「ファイル」](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/bb814736-c9a4-5a88-9b89-d4b54a27eedf.png)

その次に、「Open」メニューをクリックし、ベースフォントファイルの選択を行います。

![01-BirdFontメニュー「開く」](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/014e51c0-23c0-6abf-1248-8e43e5531e38.png)

フォントによっては、けっこう読み込みに時間がかかります。

右上のローディングマークが終わるのをしばらく待ってみてください。

![02-BirdFontファイル読み込み中](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/0526cd3f-f017-510b-f70f-b45dadb8092a.png)

読み込みが終わると、フォントビューが表示されます。漢字など、英数字以外のフォントを探す場合は、左メニューの「Unicode」をクリックします。

![03-BirdFontフォントビュー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/1ae2e370-2870-4bc0-d397-6e6e99ad8564.png)

また、今回の例のように「全角スペース」といった特定のフォントを探す場合は、同じく左メニューの Overviewにある「虫眼鏡アイコン」をクリックし、ウィンドウ上部に現れたボックスに、文字コードを直接入力して指定します。この例の場合は、全角スペースは、「U+3000」ですので、「3000」の数値を入力します。

![04-BirdFont文字検索](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/de42d277-9b3e-e4a8-f7c5-1e236650d09c.png)

検索結果として、該当するフォントが表示されますので、編集したいフォントを選択・ダブルクリックします。

![05-BirdFont全角スペース選択](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/5e65f3c7-6a3c-0a9c-6983-5f089d86cf29.png)

すると、ウィンドウ全体がアウトラインエディタになりますので、左に出たツールアイコンを選択し、好きなように編集しましょう。なお、フォント表示の際、上部でタブ化されますので、先ほど表示された Overview にもすばやく切り替えて表示することができます。

![07-BirdFontエディタ編集](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/ab547003-1b35-477a-ed66-5c9fa09ba0f9.png)

なお、フォント情報については、フォントファイルを開いたときと同様に、ウィンドウ右上のハンバーガーメニューの「Name and Description」を選択します。

![08-BirdFontフォント情報メニュー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/559aa9f1-503e-bd82-d56c-bf4f4daa272b.png)

ここで、フォント詳細などを編集します。若干、半角スペースなどによりワードラップがバグって表示されていますが、これくらいは気にしない(笑)。

![09-BirdFontフォント情報表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/df6bdafe-24df-cb7c-0892-694e6661b293.png)

編集が終了したら、フォントをエクスポートします。左上のハンバーガーメニューから、「Import and Export」を選択し、次のメニュー「Export Fonts」を選択します。

![10-フォントのエクスポート](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/c22a4dd1-ac9e-3ea2-ffa8-f4b6c4224965.png)

おそらく最初のエクスポートでは、「エクスポート設定」がデフォルトで表示されますが、メニューからも再設定可能です。同メニューの「Export Settings」を選択してください。

![11-フォントのエクスポート設定メニュー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/5a53ac03-c258-fb61-bc2b-cf9a58cf5ceb.png)

ただし、OTF フォントについては、BirdFont Plus版を購入していないと出力できませんのでご注意ください（フリー版だとチェックボックス自体が無効になっているはず）。

![12-エクスポート設定画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/90af93b4-2d87-ea89-c003-9e49eda888bf.png)

# 新しく作ったフォントでコードを表示してみた

さっそく、BirdFont を使って全角スペースを作ってみました。CodeMで表示される全角スペースは、角っこの空白が大きく、少し「円」っぽく見えるので、自分なりに点線風にデザインしてみました。

![全角スペースを作ってみた](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/1009739b-a6cb-282b-21ba-82a795ac5793.png)

実際に、エディタで表示してみると、全角スペースとしてハッキリと判別できます。

![独自で作った全角スペース](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30945/018b5a5a-4c95-c3b0-75a9-3fdf67c689ab.png)

コーディング中に余計な全角スペースが入っても、これならすぐに気がつき、良い感じです。

# この独自全角スペース可視化版が欲しい人がいれば

もし、この私が作った「Source Han Code JP」に、ただ全角スペース可視化を追加しただけというバージョンが欲しいという方は、以下からダウンロードしてください。
<a href="https://github.com/hibara/SHCode-JP-Zen-Haku/releases" target="_blank" rel="noopener">https://github.com/hibara/SHCode-JP-Zen-Haku/releases</a>

BirdFont で編集するデータなど一式が欲しい場合は、GitHub のレポジトリを参照してください。
<a href="https://github.com/hibara/SHCode-JP-Zen-Haku" target="_blank" rel="noopener">https://github.com/hibara/SHCode-JP-Zen-Haku</a>

一応、「Source Han Code JP」には、SIL Open Font License が適用されているようなので、改良前の名前と同一でなく、かつその名前の一部も含まれもしなければ、再頒布は問題ないはずです。

もし、何か問題があれば、ご指摘いただければ幸いです。