イラレ合成フォントデータについて

内部は４つのチャンクに分かれている。

- CFNA
- CID
- RLBL
- name

![ヘッダー部分](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/5b4b2327-afa6-20e0-8c98-35b6828db550.png)

- シグネチャ: 4byte (typ1)
- padding: 8byte

- ヘッダーたち (16byte x4)

シグネチャは ```typ1```、このファイルがイラレの合成フォントであることを表している。
次の8byteは分からないのでスキップ
そっからはデータを構成する４つのチャンク情報がそれぞれ16byteずつ

この中でデータの核となりそうなのは ```CID``` と ```RLBL```かな
CFNAとnameはメタデータっぽいし、あまり考えなくていいかも。

:::note warn
また、少し注意が必要なのは、CFNAとCIDは順番が逆だということ。
ヘッダーではCFNA → CIDの順で書かれているが、実際にはCID → CFNAの順でチャンクが置かれている。
:::

## CIDチャンク

![image 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/b87e6637-5f95-29f3-bc6b-80fb9fee802c.png)

ヘッダー部分 (16byte)

- tag: 4byte (CID )
- skip: 4byte
- offset: 4byte (0x4C)
- length: 4byte (0x13F6)

ファイル先頭から<offset>後の<length>分

この例の場合、ファイル先頭から**76byte**先の**5110byte**分がCIDチャンクとなる

![image 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/608a141a-06ea-4946-4207-aa54b3868955.png)

こっから

![image 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/0132a214-dbdd-18b2-390e-7219d0d02f5d.png)

ここまで

この中に、フォント名だったりスケールだったりが入るらしい

~~長い~~

## CFNAチャンク

![image 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/5acc3be6-9479-3785-8f19-cdf39c32a2ce.png)

ヘッダー部分 (16byte)

- tag: 4byte (CFNA)
- skip: 4byte
- offset: 4byte (0x1442)
- length: 4byte (0xAA)

ファイル先頭から<offset>後の<length>分

この例の場合、ファイル先頭から**5186byte**進めたあとの**170byte**分がCFNAチャンクとなる

![image 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/13803057-9ce4-17a7-5c3b-4e571ba69f15.png)

~~ここはよくわからない~~

## RLBLチャンク

![image 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/5cc59b98-ef36-364d-3c1e-23ddc152989a.png)

ヘッダー部分 (16byte)

- tag: 4byte (RLBL)
- skip: 4byte
- offset: 4byte (0x14EC)
- length: 4byte (0x042B)

ファイル先頭から<offset>後の<length>分

この例の場合、ファイル先頭から**5356byte**進めたあとの**1067byte**分がRLBLチャンクとなる

![image 7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/506e8cc4-6507-59d5-0da7-ed3ba55b4dac.png)

こっから

![image 8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/f23bdb0b-2ed6-5f62-5ac9-bfee935bccf0.png)

ここまで

居ますね、ヤツが

まずは、L 0 9 0からKanjiまでの部分

![image 9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/e984b5e8-4c4b-d3a1-be74-b702f6bf2c72.png)

- 目印: 8byte ( L 0 9 0)
- 文字セットたち（個数分連なる）
    - skip: 16byte
    - offset: 2byte - Kanjiからのオフセット
    - char: 2byte x3 (Unicode)

L 0 9 0はよくわからないが、なんか不変なので目印に使えそう

char 2byteには、特例文字セットで設定した文字がUnicodeで３つずつ ← ？ 並んでる

「あ」と「い」だったら、U+3042とU+3044なので、

```text
304230423042304430443044
    ↓↓↓
0B0B0B0D0D0D
```

となる

んで、Kanjiから先の部分

![image 10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/37c35d03-eb6b-edb6-0e3f-f0b40d9418d9.png)

ここに文字セットの名前が、特に区切り記号などなく、詰めて連ねてある

まずはおきまりのやつら

```text
Kanji漢字KaneかなPunctuation全角約物Symbols全角記号Alphabetic半角欧文Numbers半角数字
```

これの尻尾に特例文字セットが連なる

Kanjiから<offset>分進めた先に名前がある

（そして１つ目の文字セットのoffsetは必ず0x54(84byte)になる）

例えば、１つ目の「特例1」であれば、オフセットが0x54で**84byte**

よって、Kanjiから84byte進めた先に名前が存在する

![image 11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/90b7927f-0f50-d439-7776-2bbf7e4bb303.png)

![image 12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/18139882-f35d-1482-bc42-7781266a5812.png)

青い部分が文字セット名

そして２つ目の「特例2」であれば、オフセットが0x59で89byte
よって、Kanjiから89byte進めた先に名前がある

![image 13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/ce365094-ad7b-8869-2c18-ea4af7133f3d.png)

![image 14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/c1350566-e41b-a6c1-e771-df3275290a4e.png)

~~Shift-JIS表示できなくてゴメン；；~~

## nameチャンク

![image 15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/3226ed7b-27e1-900c-6068-ac718b80d543.png)

ヘッダー部分

- tag: 4byte (name)
- skip: 4byte
- offset: 4byte (0x1917)
- length: 4byte (0x98)

ファイル先頭から<offset>後の<length>分
この例の場合、ファイル先頭から**6423byte**進めたあとの**152byte**分がnameチャンクとなる

![image 16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/0a072568-a8f3-6a37-1405-2b8f1646650d.png)

この部分

ATC-で始まる部分には、保存した合成フォントのプリセット名がUnicode表記とShift-JIS表記でそれぞれ書いてある。
また、それぞれのバイト数は、その直前に書いてある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740248/960dd372-a16d-3994-f177-c051b19be1b1.png)

```text
<Unicodeバイト数><Shift-JISバイト数>ATC-<Unicodeプリセット名><Shift-JISプリセット名>
```

のような型になっている。
また、その後ろにある部分については、ある時と無い時があるようだ。
（まだ判明していない）