2012-08-15 25 views
4

我有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

最接近1668的數字是1649,但差異19意味着我失去了一些重要的東西在這個索引的想法。

的問題是:

  1. 在哪裏名字指數和指標/ charstrings指數之間的關係?
  2. FLAG在哪裏,在使用什麼樣的預定義字符集?

重要更新

的集並不重要!這是錯誤的方式!

回答

4

好的,終於明白了!

在高分辨率

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

它是如何工作:

開放式字體文件(OTF)由hhea表參數numberOfHMetricshmtx表的數組字體中每個字形的水平度量。表格由字符串數組組成。有0 ... 1428個字形名稱和1429 ... 1432個字符串值:version,Notes,FullName,FamilyName參數。我如何理解,這4條線總是額外的。

現在我們有Predefined Standard Strings - 通用於所有開放式字體整個世界。如上所述,該表具有0 ... 378個常用字形名稱和379 ... 390個額外名稱的參數。

現在我們必須在一個數組中組合兩個名稱表。預定義名稱表的第一個元素包括.nondef元素(這對我來說很奇怪,因爲它是系統「無」,但正如我們看到的水平度量500)以及整個CFF字符串數組,除了參數的名稱。元素總數必須是numberOfHMetrics

我浪費了60個小時來了解整個圖片。