我从ttx fonttools获得了以下数据,这些数据描述了我手动构建的字体二进制文件:
<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="true" ttLibVersion="3.36">
<GlyphOrder>
<!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
<GlyphID id="0" name=".notdef"/>
<GlyphID id="1" name="b"/>
<GlyphID id="2" name="d"/>
</GlyphOrder>
<head>
<!-- Most of this table will be recalculated by the compiler -->
<tableVersion value="1.0"/>
<fontRevision value="1.0681"/>
<checkSumAdjustment value="0x0"/>
<magicNumber value="0x5f0f3cf5"/>
<flags value="00000000 00000011"/>
<unitsPerEm value="1000"/>
<created value="Tue Jan 22 12:25:10 2019"/>
<modified value="Tue Jan 22 12:25:10 2019"/>
<xMin value="10"/>
<yMin value="10"/>
<xMax value="90"/>
<yMax value="90"/>
<macStyle value="00000000 00000000"/>
<lowestRecPPEM value="3"/>
<fontDirectionHint value="2"/>
<indexToLocFormat value="1"/>
<glyphDataFormat value="0"/>
</head>
<hhea>
<tableVersion value="0x00010000"/>
<ascent value="200"/>
<descent value="100"/>
<lineGap value="0"/>
<advanceWidthMax value="90"/>
<minLeftSideBearing value="0"/>
<minRightSideBearing value="0"/>
<xMaxExtent value="0"/>
<caretSlopeRise value="1"/>
<caretSlopeRun value="0"/>
<caretOffset value="0"/>
<reserved0 value="0"/>
<reserved1 value="0"/>
<reserved2 value="0"/>
<reserved3 value="0"/>
<metricDataFormat value="0"/>
<numberOfHMetrics value="3"/>
</hhea>
<maxp>
<!-- Most of this table will be recalculated by the compiler -->
<tableVersion value="0x10000"/>
<numGlyphs value="3"/>
<maxPoints value="5"/>
<maxContours value="1"/>
<maxCompositePoints value="0"/>
<maxCompositeContours value="0"/>
<maxZones value="1"/>
<maxTwilightPoints value="0"/>
<maxStorage value="0"/>
<maxFunctionDefs value="0"/>
<maxInstructionDefs value="0"/>
<maxStackElements value="0"/>
<maxSizeOfInstructions value="0"/>
<maxComponentElements value="0"/>
<maxComponentDepth value="0"/>
</maxp>
<OS_2>
<!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
will be recalculated by the compiler -->
<version value="5"/>
<xAvgCharWidth value="90"/>
<usWeightClass value="500"/>
<usWidthClass value="5"/>
<fsType value="00000000 00000000"/>
<ySubscriptXSize value="650"/>
<ySubscriptYSize value="699"/>
<ySubscriptXOffset value="0"/>
<ySubscriptYOffset value="140"/>
<ySuperscriptXSize value="650"/>
<ySuperscriptYSize value="699"/>
<ySuperscriptXOffset value="0"/>
<ySuperscriptYOffset value="479"/>
<yStrikeoutSize value="49"/>
<yStrikeoutPosition value="258"/>
<sFamilyClass value="0"/>
<panose>
<bFamilyType value="0"/>
<bSerifStyle value="0"/>
<bWeight value="0"/>
<bProportion value="0"/>
<bContrast value="0"/>
<bStrokeVariation value="0"/>
<bArmStyle value="0"/>
<bLetterForm value="0"/>
<bMidline value="0"/>
<bXHeight value="0"/>
</panose>
<ulUnicodeRange1 value="00000000 00000000 00000000 00000000"/>
<ulUnicodeRange2 value="00000000 00000000 00000000 00000000"/>
<ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
<ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
<achVendID value="XXXX"/>
<fsSelection value="00000000 01000000"/>
<usFirstCharIndex value="97"/>
<usLastCharIndex value="100"/>
<sTypoAscender value="200"/>
<sTypoDescender value="100"/>
<sTypoLineGap value="0"/>
<usWinAscent value="90"/>
<usWinDescent value="10"/>
<ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
<ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
<sxHeight value="100"/>
<sCapHeight value="40"/>
<usDefaultChar value="0"/>
<usBreakChar value="0"/>
<usMaxContext value="0"/>
<usLowerOpticalPointSize value="0.0"/>
<usUpperOpticalPointSize value="0.15"/>
</OS_2>
<hmtx>
<mtx name=".notdef" width="90" lsb="0"/>
<mtx name="b" width="90" lsb="0"/>
<mtx name="d" width="90" lsb="0"/>
</hmtx>
<cmap>
<tableVersion version="0"/>
<cmap_format_4 platformID="3" platEncID="1" language="0">
<map code="0x62" name="b"/><!-- LATIN SMALL LETTER B -->
<map code="0x64" name="d"/><!-- LATIN SMALL LETTER D -->
</cmap_format_4>
</cmap>
<loca>
<!-- The 'loca' table will be calculated by the compiler -->
</loca>
<glyf>
<!-- The xMin, yMin, xMax and yMax values
will be recalculated by the compiler. -->
<TTGlyph name=".notdef" xMin="0" yMin="0" xMax="100" yMax="300">
<contour>
<pt x="10" y="10" on="1"/>
<pt x="90" y="10" on="1"/>
<pt x="90" y="90" on="1"/>
<pt x="10" y="90" on="1"/>
<pt x="10" y="10" on="1"/>
</contour>
<instructions/>
</TTGlyph>
<TTGlyph name="b" xMin="0" yMin="0" xMax="100" yMax="300">
<contour>
<pt x="10" y="10" on="1"/>
<pt x="90" y="10" on="1"/>
<pt x="90" y="90" on="1"/>
<pt x="10" y="90" on="1"/>
<pt x="10" y="10" on="1"/>
</contour>
<instructions/>
</TTGlyph>
<TTGlyph name="d" xMin="0" yMin="0" xMax="100" yMax="300">
<contour>
<pt x="10" y="10" on="1"/>
<pt x="90" y="10" on="1"/>
<pt x="90" y="90" on="1"/>
<pt x="10" y="90" on="1"/>
<pt x="10" y="10" on="1"/>
</contour>
<instructions/>
</TTGlyph>
</glyf>
<name>
<namerecord nameID="6" platformID="1" platEncID="0" langID="0x0" unicode="True">
Foo
</namerecord>
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
Foo
</namerecord>
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
Regular
</namerecord>
<namerecord nameID="3" platformID="1" platEncID="0" langID="0x0" unicode="True">
foo
</namerecord>
<namerecord nameID="4" platformID="1" platEncID="0" langID="0x0" unicode="True">
Foo Regular
</namerecord>
<namerecord nameID="13" platformID="1" platEncID="0" langID="0x0" unicode="True">
Licensed under the Apache License, Version 2.0
</namerecord>
<namerecord nameID="5" platformID="1" platEncID="0" langID="0x0" unicode="True">
Version 1.000
</namerecord>
</name>
<post>
<formatType value="3.0"/>
<italicAngle value="0.0"/>
<underlinePosition value="0"/>
<underlineThickness value="0"/>
<isFixedPitch value="0"/>
<minMemType42 value="0"/>
<maxMemType42 value="0"/>
<minMemType1 value="0"/>
<maxMemType1 value="0"/>
</post>
</ttFont>
所有3个符号都只是一个正方形:
<TTGlyph name="d" xMin="0" yMin="0" xMax="100" yMax="300">
<contour>
<pt x="10" y="10" on="1"/>
<pt x="90" y="10" on="1"/>
<pt x="90" y="90" on="1"/>
<pt x="10" y="90" on="1"/>
<pt x="10" y="10" on="1"/>
</contour>
<instructions/>
</TTGlyph>
在“字体查看器”中为我显示的内容是这样的:
在底角只有一些对角线。
在浏览器中,用字体设置字母b
和d
的样式时,显示的字体几乎没有宽度或高度。看起来好像是一个很小的正方形。
想念我所缺少的。具体来说,以下是字形的实际显示/大小/位置所涉及的变量。
glyf
表:
head
表:
hhea
表:
os2
表:我认为这不是必需的,虽然不确定,但是这里有一些与大小/位置有关的变量是其他表中其他变量的副本。post
表:
我认为差不多了。请让我知道是否还需要 。
这些属性以某种方式控制字形的大小/位置。我认为上面的字形显示问题可能与这些变量的大小/比例有关。我不确定它们是否应为100、1000或10,000等的数量级。我不确定所有内容的“锚”大小是多少关。也许是unitsPerEm
,或者它是基于xMin
和xMax
以及yMin
和yMax
(所以100、300)。
我目前具有的这些值是:
glyf
表:
head
表:
hhea
表:
os2
表:我认为这不是必需的,虽然不确定,但是这里有一些与大小/位置有关的变量是其他表中其他变量的副本。post
表:
我的问题是:
b
和d
,因此如果我写abcd
,则我的字符应该是为每个字符绘制一个简单的正方形(并且大小应大致相同)。现在,我只看到一条小斜线。