Open Type字体中的字形宽度

Rub*_*mov 4 pdf typography opentype fontmetrics

我有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.
Run Code Online (Sandbox Code Playgroud)

CFF规范告诉我,OTF字体总字形数量(或者如果嵌入了字体,只是在PDF文件的CFF流中显示)必须是:

  1. 预定义的ISO Adob​​e charset(228个名字)1429 + 228 = 1649;
  2. 预定义的"专家"字符集(115个名字)1429 + 115 = 1544;
  3. 预定义的"专家子集"字符集(86个名称)1429 + 116 = 1515.

最接近1668的数字是1649,但差异19意味着我在这个索引理念中失去了一些重要的东西.

问题是:

  1. 名称INDEX和metrics/charstrings INDEX之间的关系在哪里?
  2. FLAG在哪里,使用什么样的预定义字符集?

重要更新

Charsets没关系!这是错误的方式!

Rub*_*mov 5

好的,最后我明白了!

高分辨率:https://docs.google.com/drawings/pub?id = 1gM7gs-ibJ_0qsUrsxIkF5rYUmC9Ix2F9WD9d3aqwc0g&w = 1209&h = 1179

它是如何工作的:

Open Type字体文件(OTF)包含hhea带有参数numberOfHMetricshmtx表的表,其中包含字体中每个字形的水平度量数组.

CFFtable包含字符串数组.有0 ... 1428元名字和1429 ... 1432个字符串值version,Notes,FullName,FamilyName的参数.我怎么理解,这4个字符串总是额外的.

现在我们有Predefined Standard Strings- 全世界所有开放式字体都很常见.如上所述,该表具有0 ... 378个常用字形名称和379 ... 390个额外的参数名称.

现在我们必须在一个数组中组合两个名称表.预定义名称表的第一个元素是include .nondef元素(对我来说很奇怪,因为它是系统"无",但是我们看到水平度量500)和整个CFF字符串数组,除了参数的名称.元素总数必须是numberOfHMetrics.

我浪费了60个小时来了解整个画面.