CFF テーブル (2)

プログラム
>> 15_cff.c

CFF テーブルのデータを表示するプログラムです。
CID フォントでない場合 (欧文フォントなど)
---- Header ----

version: 1.0
hdrSize: 4
offSize: 3

---- Name INDEX ----

"SourceCodePro-Regular" (21)

---- Top DICT INDEX ----

1746, [0]
1747, [1]
1748, [12, 0]
1749, [3]
1, [12, 1]
-193, -454, 793, 1060, [5]
22652, [15]
60, 86887, [18]
23525, [17]

---- String INDEX ----

SID[391] "Amacron" (7)
SID[392] "Abreve" (6)
..
SID[1746] "1.0" (3)
SID[1747] "Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries." (96)
SID[1748] "Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved." (69)
SID[1749] "Source Code Pro" (15)

---- Charsets ----

(glyphs: 1585)
format: 2

GID 1: 1
GID 2-27: 34-59
GID 28-53: 66-91
...
GID 1273: 135
GID 1274-1584: 1435-1745

---- Private DICT ----

-12, 12, 486, 12, 76, 12, 52, 12, 6, 12, 44, 12, [6]
-217, 12, [7]
-12, 12, 486, 12, 76, 12, 52, 12, 6, 12, 44, 12, [8]
-217, 12, [9]
.0625, [12, 9]
0, [12, 11]
67, [10]
85, [11]
67, [12, 12]
85, [12, 13]
600, [20]
60, [19]

Top DICT には、先頭から順に、
「version」「Notice」「Copyright」「FamilyName」の文字列 ID が指定されています。
これらは、String INDEX から文字列を取得できます。

また、String INDEX には、各グリフの名前も定義されています。
CID フォントの場合
---- Header ----

version: 1.0
hdrSize: 4
offSize: 4

---- Name INDEX ----

"SourceHanSerif-Regular" (22)

---- Top DICT INDEX ----

391, 392, 0, [12, 30]
393, [1]
394, [2]
395, [3]
388, [4]
-150, [12, 3]
-997, -1049, 2929, 1809, [5]
1.00100005, [12, 31]
65535, [12, 34]
40502, [15]
40854, [17]
40507, [12, 37]
21281540, [12, 36]

---- String INDEX ----

SID[391] "Adobe" (5)
SID[392] "Identity" (8)
SID[393] "Copyright 2017 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries." (197)
SID[394] "Source Han Serif Regular" (24)
SID[395] "Source Han Serif" (16)
SID[396] "SourceHanSerif-Regular-Alphabetic" (33)
SID[397] "SourceHanSerif-Regular-AlphabeticDigits" (39)
SID[398] "SourceHanSerif-Regular-Bopomofo" (31)
...

---- Charsets ----

(glyphs: 65535)
format: 2

GID 1-65534: 1-65534

---- FDSelect ----

format: 3

0, 5
1, 15
102, 3
103, 15
...

---- Font DICT INDEX ----

## 0 ##

396, [12, 38]
34, 21281772, [18]

<< Private DICT >>

-18, 18, 527, 18, 203, 17, [6]
-278, 0, 10, 0, [7]
42, [10]
79, [11]
42, 25, [12, 12]
53, 26, 13, [12, 13]
1000, [20]
596, [19]
...

Top DICT の先頭には、「ROS (key = 12,30)」があります。
上記の場合、「Adobe-Identity-0」となります。

String INDEX にはグリフ名の定義がなく、代わりに Font DICT の「FontName (key = 12,38)」の文字列があります。
グリフの文字種類ごとに名前が分けられています。

また、FDArray のオフセット位置に、「Font DICT INDEX」データがあります。
INDEX のオブジェクトデータは DICT 構造で、「FontName」と「Private」の値があります。
ここでは、Private DICT の値も表示しています。