Open Type字体中的字形宽度

时间:2012-08-15 18:53:49

标签: 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.

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

  1. 预定义的ISO Adob​​e字符集(228个名称)1429 + 228 = 1649;
  2. 预定义的“专家”字符集(115个名称)1429 + 115 = 1544;
  3. 预定义的“专家子集”字符集(86个名称)1429 + 116 = 1515
  4. 最接近1668的数字是1649,但差异19意味着我在这个索引理念中失去了一些重要的东西。

    问题是:

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

      Charsets无所谓!这是错误的方式!

1 个答案:

答案 0 :(得分:5)

好的,最后我理解了!

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

工作原理:

Open Type字体文件(OTF)包含hhea表,其中包含参数numberOfHMetricshmtx表,其中包含字体中每个字形的水平指标数组。

CFF表包含字符串数组。 versionNotesFullNameFamilyName参数有0 ... 1428个字形名称和1429 ... 1432个字符串值。我怎么理解,这4个字符串总是额外的。

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

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

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