以前、この記事を書いたがこの二日後には、あつかっているフォントファイルがOpenTypeだったというオチだった。同じような仕様だが、ここに来て漸く仕様の違いがでたkernテーブルはTrueTypeとで異なるテーブルの一つと言える。
ここから当時の記事
Fontファイルの中のkernテーブルの仕組みを理解しようとしてみてるのだけど、難しすぎる。公式サイトは何を言っているのかさっぱりわからん。
2バイトの左と右のグリフIDペア、2バイトのカーニング値で1つあたり6バイト。
Impact.ttfの
nTables = 0x00000b8a
で
Length = 0x000101ea
TapleIndex = 0x0008
となっていた。
ここで、長さが0x101eaは長すぎる。どこから出てくる値なのかと思ってしまう。そしてタプルインデックスって何?
ヘッダでは
kern の始まりアドレス 0002cf40 長さは00000b8e
nameの始まりアドレス 0002dad0 長さは00000ba1
だから、Length=0x101eaはありえないだろ。めちゃくちゃ長い。0x1eaならありえるのか?なんか間違えてるのかな。いや、それを信じたら0x9aeも違うし、因果関係さえ認められない。
Coverrage = 0x0600
だから
Vertical = 0x00000000
CrossStream = 0x00000001
Variation = 0x00000001
FormatNumber 0x00000000
NPair = 0x057c
SearchRange = 0x000b
EntrySelector = 0x0024
RangeShift = 0x0033
だった。
0x57cのペアがあるとしたら。カーニングの定義は、1つあたり6バイトだから0x57c×0x6=20E8でこれだけでも長さの0xb8eを越えてしまう。NPairの値を信じなければいいのか?Lengthも何かの間違いか。
もうちょっと考えないと公式ページを読み解けないな。
あー0x1ea×0x06ならb7cでb8aにかなり近い。なんか関係ありそうだな。でも明日考えよう。
投稿者-> よねっと at 2022年10月13日 22:00 | TrackBack(0)Su | Mo | Tu | We | Th | Fr | Sa |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |