首页 > 教育学习 > 为什么 > OpenType 中有什么 feature 会影响 Kerning的值?

OpenType 中有什么 feature 会影响 Kerning的值?
2012-01-19 17:32:26   来源:   点击:

    OpenType 中有什么 feature 会影响 Kerning的值?手上一个OpenType的Font,我确认读取Font没有错误,但是在取得Kerning信息的时候,只能取到"TA"的值是-74,但是得不到"AT"的值。但是InDesign可以取得这两个值,应该都为-74。请问OpenType规范中有什么说明会有这样的情况么?( CoverageTable中有A和T的GlyphID,但是在ClassDef1中只能找到T,却找不到A。)

    3 个答案

    • 答案 1:

      SFNT 字体本身有 kern table,而 OpenType 字体的 GPOS table 里有 kern feature,你检查的应该是后者,可以检查前者。另外可以用 ttx 工具 [1] 把这两个表 dump 下来用 pastebin 之类的网站贴出。 [1]letterror.com/code...
    • 答案 2:

      刚刚又看了一遍,忽然明白了。。。

        <PairPosindex="1"Format="2">

        <CoverageFormat="1">

        <Glyphvalue="quoteright"/>

        <Glyphvalue="A"/>

        <Glyphvalue="F"/>

        <Glyphvalue="L"/>

        <Glyphvalue="P"/>

        <Glyphvalue="R"/>

        <Glyphvalue="T"/>

        <Glyphvalue="V"/>

        <Glyphvalue="W"/>

        <Glyphvalue="Y"/>

        <Glyphvalue="f"/>

        <Glyphvalue="r"/>

        <Glyphvalue="v"/>

        <Glyphvalue="w"/>

        <Glyphvalue="y"/>

        <Glyphvalue="Lslash"/>

        <Glyphvalue="Aacute"/>

        <Glyphvalue="Acircumflex"/>

        <Glyphvalue="Adieresis"/>

        <Glyphvalue="Agrave"/>

        <Glyphvalue="Aring"/>

        <Glyphvalue="Atilde"/>

        <Glyphvalue="Yacute"/>

        <Glyphvalue="Ydieresis"/>

        <Glyphvalue="yacute"/>

        <Glyphvalue="ydieresis"/>

        </Coverage>

        <ValueFormat1value="4"/>

        <ValueFormat2value="0"/>

        <ClassDef1Format="2">

        <ClassDefglyph="F"class="2"/>

        <ClassDefglyph="L"class="3"/>

        <ClassDefglyph="Lslash"class="3"/>

        <ClassDefglyph="P"class="4"/>

        <ClassDefglyph="R"class="6"/>

        <ClassDefglyph="T"class="7"/>

        <ClassDefglyph="V"class="9"/>

        <ClassDefglyph="W"class="11"/>

        <ClassDefglyph="Y"class="13"/>

        <ClassDefglyph="Yacute"class="13"/>

        <ClassDefglyph="Ydieresis"class="13"/>

        <ClassDefglyph="f"class="1"/>

        <ClassDefglyph="quoteright"class="14"/>

        <ClassDefglyph="r"class="5"/>

        <ClassDefglyph="v"class="8"/>

        <ClassDefglyph="w"class="10"/>

        <ClassDefglyph="y"class="12"/>

        <ClassDefglyph="yacute"class="12"/>

        <ClassDefglyph="ydieresis"class="12"/>

        </ClassDef1>

        <ClassDef2Format="2">

        <ClassDefglyph="T"class="1"/>

        </ClassDef2>

        <!-- Class1Count=15 -->

        <!-- Class2Count=29 -->

        <Class1Recordindex="0">

        <Class2Recordindex="0">

        <Value1XAdvance="0"/>

        </Class2Record>

        <Class2Recordindex="1">

        <Value1XAdvance="-74"/>

        </Class2Record> 虽说ClassDef1中没有定义“A”,但是Coverage中定义了“A”,则其默认的class应该等于0. 这样"AT"就是Class1Record[0]Class2Record[1]=-74. 又去翻了遍Pair Adjustment Positioning Subtable。 确实没提这茬啊!!!! 要不是看了ttx导出的文本估计做鬼也明白不了了。。。多谢疆域兄。

    • 答案 3:

      字体发上来.

相关热词搜索:

上一篇:电子游戏属于艺术吗?
下一篇:Mac OS X 的 iTunes 没有下完的 podcast 存放在什么文件夹下?