【ITニュース解説】How I ended up creating my own programming font...
2025年10月03日に「Dev.to」が公開したITニュース「How I ended up creating my own programming font...」について初心者にもわかりやすく解説しています。
ITニュース概要
既存フォントに満足できず、開発者が理想のプログラミング用フォント「psudoFont Liga Mono」を自作した経緯。知識ゼロから学び、既存フォントを参考に、文字の太さや合字など細部にこだわり、何度も再設計を経て完成させた過程を語る。
ITニュース解説
このニュース記事は、ある開発者が自分にとって理想的なプログラミングフォントを探し求め、最終的には「psudoFont Liga Mono」という独自のフォントを作り上げた過程を詳しく説明している。これは、システムエンジニアを目指す皆さんにとって、単なるフォント作成の技術的な話だけでなく、一つの「ものづくり」を通して課題を発見し、解決し、学びながら改善していくプロセスとして読み解くことができるだろう。
物語は、著者が当時使っていたプログラミングフォント「Menlo/Meslo」に文字の太さに関する不満を抱き、一方で「IBM Plex Mono/Lilex」のイタリック体(斜体)には魅力を感じていたところから始まる。彼は、これらのフォントの良い部分を組み合わせて、自分にとって完璧なフォントを作れないかと考えた。具体的には、通常(レギュラー)のスタイルにはMesloのグリフ(個々の文字の形)を使い、イタリック体にはLilexのグリフを使うという方法を試みた。これらは完全に一致するわけではなかったが、比較的近いデザインであったため、ある程度は機能するように見えた。しかし、この組み合わせは彼の心に残る「痒み」、つまり完全に満たされない不満を解消するには至らなかった。その「痒み」を完全に無くすには、グリフの一つ一つを編集し、多くの文字を再設計し、全体として調和するように調整するという、途方もない作業が必要だと感じていたため、最初は手を出すのをためらっていた。
だが、その「痒み」は彼の予想以上に強く、わずか一ヶ月後には、彼は既存のフォントをただ継ぎ合わせたようなものではなく、最初から最後まで一貫したデザインを持つ、ちゃんとしたフォントファミリーを自分で作ることを決意した。
フォントの作り方について、当初彼は全く知識がなかった。しかし、調査を進めるうちに、フォントのグリフが「SVG」という形式の画像ファイルのようなものであり、フォントエディタからAdobe Illustratorのようなベクター描画ソフトにコピーして編集できることを発見した。彼は慣れているIllustratorでデザインを修正し、それをフォントエディタに戻すという方法を試みた。
しかし、新たな課題もすぐに現れた。Lilexのフォント内部の解像度を示す「UPM」(Units Per Em)が1000だったのに対し、Mesloは2048だったのだ。このUPMの値が異なるため、グリフを単純にコピー&ペーストすることができなかった。加えて、二つのフォントでは文字の太さやイタリック体の傾きも異なっていた。彼は数日間、何時間もかけて細部の調整とグリフの再設計を行い、フォント全体に統一感を持たせる努力をした。しかし、一度完成したと思った後も、さらに二、三回の再設計と一ヶ月の期間を費やして、ようやく本当に完成したと実感するに至った。
この作成プロセスを通じて、彼は多くのことを学んだ。当初のIllustratorとフォントエディタを行き来する作業は、非常に非効率で時間もかかり、間違いも起こしやすい方法だったと振り返る。特に、グリフの曲線や角のデザインの一貫性を保つのが難しかった。彼は、もっと早くフォントエディタの専門的な使い方を習得すべきだったと認めているが、早く結果を出したいという焦りから、その学習を後回しにしていたのだ。しかし、十分な困難を経験したことで、フォントエディタをきちんと学ぶことの重要性を痛感し、その習得に励んだ。
以前はMesloのUPMを1000に縮小してLilexと合わせようとしたこともあったが、最終的にはすべてのグリフを2048UPMに拡大した。これは多くの新しいフォントの標準的な解像度だとされている。最終バージョンを開発する際は、ほとんど最初からやり直すことになったものの、この時点では何をするべきか理解していたため、以前よりもはるかに迅速かつ容易に進めることができた。それでも、彼は結果に満足し、「痒み」が完全に解消されるまで、何度も見直しと修正を繰り返した。主にフォントエディタで作業を行い、Illustratorは特定の作業が効率的な場合にのみ使用した。彼はまだフォントエディタを完全に使いこなしているわけではないが、満足のいく結果を出すのに十分な知識は習得したと述べている。
デザイン面では、ゼロから作るよりもLilexをベースにする方が効率的だと判断した。また、Lilexの1000UPMのグリフをすべて2048UPMに拡大した。通常(レギュラー)のスタイルではMesloを参考にしつつ、Lilexの文字の終わりの曲線や角など、彼が気に入った細かなデザインも取り入れた。Lilexのイタリック体には鋭い角が多かったため、それらをより丸く滑らかに再設計した。この変更は多くのグリフに影響を与え、w、v、r、{、}、@、5、6、9など、特定の文字のデザインも変更した。数字は通常とイタリックの両方で修正された。
「合字」(リガチャ)と呼ばれる、特定の文字が組み合わさった時に一つの文字のように表示される機能についても、彼は独自の考えを持っていた。例えば、「fi」や「fl」といった組み合わせが、従来のフォントでは文字同士が近すぎて見栄えが悪いと感じたため、これらの特定の合字はサポートしないという決断を下した。MesloはLilexよりもほぼ倍の数のグリフを持っていたが、それらすべてを再設計・調整するのは現実的ではないと判断し、実用上問題のない範囲でグリフを選択した。それでも、Lilexの持つ合字や記号、そして彼が追加したいくつかのグリフはすべてサポートされている。
最終的に、著者の「痒み」は解消されたようだ。現在のところ、バージョン3.0を作成する予定はないが、将来的に軽微な調整や修正が必要になる可能性は否定しない。フォント作成を始めた当初はグリフ一つも編集できなかった彼が、多くの困難と三回の再設計を経て、最終的な結果に非常に満足している。彼の「psudoFont Liga Mono」は、MesloとLilexにインスパイアされているものの、多くのグリフが彼独自のデザインであり、独自のフォントファミリーと呼べるものに仕上がっている。既存のフォントから影響を受けつつも独自のものを生み出すことは、この分野ではよくある慣習だという。
この開発者の経験は、システムエンジニアを目指す皆さんにとって、非常に重要な示唆を与えてくれるだろう。目の前にある「不満点」や「課題」をただ受け入れるのではなく、それを解決するために自ら行動を起こし、必要な知識を学び、試行錯誤を繰り返すことの重要性を示している。非効率な方法から効率的な方法へと改善していく姿勢、そして困難に直面しても諦めずに、自分が納得できる結果が出るまで粘り強く取り組む姿勢は、ソフトウェア開発やシステム構築のプロセスにおいても不可欠な要素だ。完璧な技術やツールを最初から持っていなくても、まずは手元のリソースでできることから始め、実践を通して学びを深め、より良い解決策を模索していくこと。そして、最終的に自分だけの「作品」を完成させる達成感は、皆さんが将来直面するであろう様々な「ものづくり」の課題を乗り越えるための大きな力となるだろう。