らんだむな記憶

blogというものを体験してみようか!的なー

フォントの中身を覗く

harfbuzzばかりいじってても仕方ないし、なんだかよく分からないので、仕様書をもとに中身を見てみる。

から突入して、各種テーブルをがさがさ漁りつつ、CFF (PostScript font program (compact font format)) を展開すれば良い。この時、

の2つを読むことになる。
まずは 5176.CFF.pdf を見ながら Top DICT INDEX を解体していく。次に、Top DICT INDEX の DICT データから key = CharStrings(17)演算子を探してその value としてオフセット値を取得。
そのオフセット値に対応する CFF の先頭からの位置を CharStrings INDEX として解釈して解体。そのデータ部分を 5177.Type2.pdf を見ながら、Type 2 Charstring として逆ポーランド記法の流儀でばらしていく...。

ということをすれば、グリフのアウトラインを定義する曲線の描画命令が抽出できるわけだが、言うは易く行うは難しという感じでくっっっそ面倒くさい。仕様書を見ながらちまちまやるからこれだけで丸1日は潰れた。他のテーブルも解析すると2~3日は潰れる。なんてこった。
あとは、取り出した Type 2 演算子SVG の命令に置き換えていけばグリフを視覚的に描画できるはずだが、どうもすぐには気力がわかない...。あぁ、疲れた...。

harfbuzz がやっていることを更に真似るなら、GSUB を取り出して、言語および指定に合わせてグリフの置換をほどこし、次いで GPOS を取り出して指定に合わせて位置を調節してラスタ画像に落とせばやったね!となるはずだが....... そんな面倒な車輪を再発明しようという気は起こらないな...。