Skip to main content

Module woff2_glyf

Module woff2_glyf 

Source
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) を復元する。