在ttf字体GPOS表中配对重复

时间:2014-10-17 04:22:59

标签: true-type-fonts specifications

我正在阅读ttf规范并实现解析器。但我遇到了解析'GPOS'表的问题。 这是GPOS表规范的链接:http://www.microsoft.com/typography/otspec/gpos.htm 它说: ValueFormat2适用于每对中第二个字形的ValueRecord。所有第二个字形的ValueRecords必须使用ValueFormat2。如果ValueFormat2设置为null,则该对的第二个字形是应该执行查找的“下一个”字形。

我的第一个问题:当'ValueFormat2'为'null'时会发生什么?和'ValueFormat1'一样吗?如果是这样,为什么规范使用不同的表达式?

与ttx生成的.ttx文件相比,我发现GPOS部分中有PairSet重复。但我的解析器无法从ttf二进制文件中读出这样的重复。例如:Windows7上的times.ttf。文件'time.ttx'有以下项目,但我的解析器读出'索引13',然后下一组是'索引16',这意味着我错过了'索引14'和'索引15'。我不知道为什么我不能读出与ttx相同的结果。

我的第二个问题:ttf规范中有什么我错过的吗?这种重复在哪里和哪里解释?提前谢谢!

      <PairSet index="13">
        <!-- PairValueCount=2 -->
        <PairValueRecord index="0">
          <SecondGlyph value="comma"/>
          <Value1 XAdvance="-133"/>
        </PairValueRecord>
        <PairValueRecord index="1">
          <SecondGlyph value="period"/>
          <Value1 XAdvance="-133"/>
        </PairValueRecord>
      </PairSet>
      <PairSet index="14">
        <!-- PairValueCount=2 -->
        <PairValueRecord index="0">
          <SecondGlyph value="comma"/>
          <Value1 XAdvance="-133"/>
        </PairValueRecord>
        <PairValueRecord index="1">
          <SecondGlyph value="period"/>
          <Value1 XAdvance="-133"/>
        </PairValueRecord>
      </PairSet>
      <PairSet index="15">
        <!-- PairValueCount=2 -->
        <PairValueRecord index="0">
          <SecondGlyph value="comma"/>
          <Value1 XAdvance="-133"/>
        </PairValueRecord>
        <PairValueRecord index="1">
          <SecondGlyph value="period"/>
          <Value1 XAdvance="-133"/>
        </PairValueRecord>
      </PairSet>
      <PairSet index="16">
        <!-- PairValueCount=1 -->
        <PairValueRecord index="0">
          <SecondGlyph value="quoteleft"/>
          <Value1 XAdvance="-152"/>
        </PairValueRecord>
      </PairSet>

0 个答案:

没有答案