誕生日プレゼント
Ligatures

10,127 Lines

Kern_2

カーニングのコードが書けました。
こんな調子じゃちっとも出来上がらないと言われそうですが、基礎的な部分は使い心地に大きな影響を及ぼすため絶対に手を抜けません。

今書いているコードは文字を一文字ずつ精査するコードです。文章を書いているときに何十万回、長い文章を読み込んだときには何百万回も呼び出されます。ここでの小さな手抜きが大きなロスにつながります。またバグがあったら目も当てられません。

Mac OS X にも今書いていることをやってくれるサービスがありますが、自分で書く事で、例えば特定のフォントで縦書きの約物が置き換わらないといった問題にも簡単に対応でき、パフォーマンスも自分でコントロールできます。

フォントに含まれるグリフ合成のルールやカーニングのパラメータはタイプデザイナーが決めます。タイプデザイナーは文字ではなく単語をデザインすると言われます。高品質なフォントは単語として組んだときに最も美しく見えるようにカーニング等のパラメーターが調整されています。僕のようなプログラマがそれを無視したり、間違った値を使ったりする事は絶対にできません。

例えば、ヒラギノ明朝 ProN W3 の「て」には29通りのカーニングが指定されています。「て」の後ろに「。,ーぁぃぉくぐせぜっつのふぶぷへべぺみゃやゅらゎゐ」などの文字が来たときに少しだけ「て」に食い込ませるパラメーターが後に続く文字に対して個別に決められています。それも10ptのサイズで僅か0.3pt〜1.5ptという小さな調整値がそれぞれ決めてあるのです。

高品質な日本語フォントの開発は気の遠くなるような作業です。彼らの努力に報いるためにもしっかりと実装したいところです。

Comments