最初は0とし以降は前の値からの数値となるまずflagsですが、ビット単位で意味があり以下のようになっています。1:このポイントは曲線上にある。1:このX座標は1バイト符号なし。1:このY座標は1バイト符号なし。1:繰り返しで次も同じ値が入る。1:1ビット目が1の場合この座標は整数。1ビット目が0の場合X座標は前の値と同じ。1:2ビット目が1の場合この座標は整数。2ビット目が0の場合X座標は前の値と同じ。上記を意識しないといけないのは「flags」を読み込む時と「xCoordinates」「yCoordinates」を読み込む時です、まず「flags」を読み込む際は3ビット目を確認して繰り返しなら、次読み込まれる1バイトは繰り返し回数が格納されていますですので読み込む際はnumberOfContours+1ループ内で繰り返し回数分前回と同じ値を格納してスキップしないといけません。次に1バイトの場合4ビット目or5ビット目を確認し、整数なのか負数なのか決めます。2バイトの場合は4ビット目or5ビット目を確認し繰り返しなら0を格納しスキップします。xCoordinates.append(data)なお「xCoordinates」と「yCoordinates」はxCoordinatesをすべて読み込んでからyCoordinatesの読み込みを行うので2回flags[]でループさせます。コンポジットグリフ「A」と「-」をくっ付けたような文字「Ā」等に使用されるグリフ。1:「argument1・2」は2バイトである。1:「argument1・2」は符号付である。1:変換オプションscaleを読み込む。1:この次にもまだグリフが存在する。1:変換オプションxscaleとyscale。1:変換オプションxscaleとscale01とscale10とyscale。1:最後の構成要素の後に、合成文字の指示がある。