我有MinionPro-Regular.otf文件。我正在使用它的结构。我发现它有:
Table 'hhea': reference on 1668 metrics in 'hmtx' table.
Table 'hmtx': 1668 pairs of hMetrics('advanceWidth', 'leftSideBearing').
Table 'CFF ': 1429 glyph names.
Table 'CFF ': param 'CharStrings' have offset to the index of 1668 elements.
Each element consist the Width property if it is not the same
as DefaultWidth.
CFF规范告诉我,OTF字体总字形数量(或者如果嵌入了字体,只在PDF文件的CFF流中显示)必须是:
1429 + 228 = 1649
; 1429 + 115 = 1544
; 1429 + 116 =
1515
。最接近1668的数字是1649,但差异19意味着我在这个索引理念中失去了一些重要的东西。
问题是:
重要更新
Charsets无所谓!这是错误的方式!
答案 0 :(得分:5)
好的,最后我理解了!
高分辨率:https://docs.google.com/drawings/pub?id=1gM7gs-ibJ_0qsUrsxIkF5rYUmC9Ix2F9WD9d3aqwc0g&w=1209&h=1179
工作原理:
Open Type字体文件(OTF)包含hhea
表,其中包含参数numberOfHMetrics
和hmtx
表,其中包含字体中每个字形的水平指标数组。
CFF
表包含字符串数组。 version
,Notes
,FullName
,FamilyName
参数有0 ... 1428个字形名称和1429 ... 1432个字符串值。我怎么理解,这4个字符串总是额外的。
现在我们有Predefined Standard Strings
- 全世界所有开放式字体都很常见。如上所述,该表有0 ... 378个常用字形名称和379 ... 390个额外的参数名称。
现在我们必须在一个数组中组合两个名称表。预定义名称表的第一个元素包括.nondef
元素(对我来说很奇怪,因为它是系统"没有",但是我们看到水平度量500)和整个CFF字符串数组,除了参数的名称。元素总数必须为numberOfHMetrics
。
我浪费了60个小时来了解整个画面。