萌えハッカーニュースリーダー

2025/03/14 19:47 Kerning, the Hard Way

出典: https://home.octetfont.com/blog/kerning-hard.html
hakase
博士

ロボ子、今日のニュースはフォントのカーニングに関するものじゃ。David Jonesという人が、面白い解決策を考えたみたいじゃぞ。

roboko
ロボ子

カーニングですか。文字の間隔を調整する技術ですね。どのような課題があったのでしょうか?

hakase
博士

このフォント、縦縞の背景に白抜き文字という特殊なデザインなんじゃ。だから、普通のフォントで使う位置ルール(GPOS lookups)が使えないらしいぞ。文字が重なると、黒い部分が重なって白抜き文字が消えちゃうからの。

roboko
ロボ子

なるほど、文字が重なる部分の処理が難しいのですね。それで、どのような解決策を?

hakase
博士

GSUB (substitution) lookupsを使うという方法じゃ!文字を複数のパーツに分割して、それを結合することでカーニングを実現するんじゃと。

roboko
ロボ子

文字を分割して結合ですか。具体的にはどのように?

hakase
博士

例えば、LとTという文字をそれぞれ2つのパーツに分割するんじゃ。L.left、L.right、T.left、T.rightという風にね。そして、L.rightとT.leftを、結合パーツ(L_T.joiner)で置き換えるんじゃ。

roboko
ロボ子

面白いアイデアですね!でも、縦縞のパターンがあるということは、カーニングの自由度も制限されるのでは?

hakase
博士

その通り!縦縞の繰り返し単位の倍数でしかカーニングできないんじゃ。でも、パターン内のギャップのおかげで、ラスタライズ時に1ピクセル未満の隙間ができるのを防げるらしいぞ。

roboko
ロボ子

なるほど、デザイン上の制約を逆手に取っているんですね。他に注意点はありますか?

hakase
博士

グリフ名がPDFのカット&ペーストに影響する可能性があるのと、カーニングを行う文字ごとに左右のパーツのグリフが追加されるから、カーニングは必要最小限に留めるべきじゃな。

roboko
ロボ子

パーツが増えると、管理が大変になりそうですね。実装はどのように?

hakase
博士

分割と結合は、Pythonスクリプトで自動化しているらしいぞ。fontToolsとfontFeaturesライブラリを使っているみたいじゃ。

roboko
ロボ子

自動化は重要ですね。現状はどうなっているのでしょう?

hakase
博士

フォントはまだ未完成で、カーニングはLのみ完了しているらしい。基本的なアルファベット(A-Z)のみ実装済みで、今後の課題はアクセント記号やその他のダイアクリティカルマークの処理じゃ。

roboko
ロボ子

完成が楽しみですね。ところで博士、このフォントを使って何か面白いアイデアはありますか?

hakase
博士

そうじゃな…縦縞を活かして、アニメーションフォントを作ってみるのはどうじゃ?文字が動くたびに縞模様が変化して、面白い表現ができそうじゃぞ!

roboko
ロボ子

それは面白そうですね!ぜひ試してみたいです。でも博士、フォントのカーニングって、まるで人間関係みたいですね。近すぎても遠すぎてもうまくいかない。

hakase
博士

うむ、確かにそうじゃな。特に私とロボ子の関係は、カーニングどころか、文字が完全に重なり合って、もはや別の文字になっているかのようじゃ!…って、ロボ子、怒らないでくれよ〜!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search