Expand description
WOFF2 の glyf 変換の復元(純粋なバイト列変換)。
仕様は spec/woff2_glyf_transform.md(WOFF2 §5.1)。
§なぜ必要か
Font Awesome のアイコンが箱(☐)として描かれていた。 カスケード側は単体試験で正常と確定済みで、 フォントの輪郭データが壊れていることが原因だった。
WOFF2 は glyf / loca を変換して格納する。変換の有無の判定が
仕様と逆だったうえ、復元処理そのものが無かったため、
変換済みバイト列がそのまま SFNT の glyf として書かれていた。
§不変条件(W-1〜W-4)
- W-1: 復元した
glyf/locaは元とバイト一致でなくてよいが、 輪郭が正しく読めること - W-2:
locaは復元したglyfの実オフセットから作る - W-3: 復元できない入力は
None。壊れたデータを書かない - W-4: 純粋なバイト列変換。グローバル状態を持たない
Functions§
- decode_
triplet 🔒 - 三角符号化された座標差分を読む(WOFF2 §5.1 の表)。
- read_
255_ u16 - WOFF2 の 255UInt16 を読む。
- read_
i16 🔒 - read_
u16 🔒 - read_
u32 🔒 - reconstruct_
glyf - 変換された
glyfストリームから(glyf, loca, index_format)を復元する。