Add variable support for BASE table 1.1

This commit is contained in:
punchcutter 2020-03-19 22:50:52 -07:00
parent 2a28574260
commit aeb5149f15
7 changed files with 1965 additions and 0 deletions

View File

@ -601,6 +601,22 @@ def _add_MVAR(font, masterModel, master_ttfs, axisTags):
mvar.ValueRecord = sorted(records, key=lambda r: r.ValueTag)
def _add_BASE(font, masterModel, master_ttfs, axisTags):
log.info("Generating BASE")
merger = VariationMerger(masterModel, axisTags, font)
merger.mergeTables(font, master_ttfs, ['BASE'])
store = merger.store_builder.finish()
if not store.VarData:
return
base = font['BASE'].table
assert base.Version == 0x00010000
base.Version = 0x00010001
base.VarStore = store
def _merge_OTL(font, model, master_fonts, axisTags):
log.info("Merging OpenType Layout tables")
@ -906,6 +922,8 @@ def build(designspace, master_finder=lambda s:s, exclude=[], optimize=True):
assert 0 == model.mapping[ds.base_idx]
log.info("Building variations tables")
if 'BASE' not in exclude and 'BASE' in vf:
_add_BASE(vf, model, master_fonts, axisTags)
if 'MVAR' not in exclude:
_add_MVAR(vf, model, master_fonts, axisTags)
if 'HVAR' not in exclude:

View File

@ -1052,6 +1052,15 @@ def buildVarDevTable(store_builder, master_values):
base, varIdx = store_builder.storeMasters(master_values)
return base, builder.buildVarDevTable(varIdx)
@VariationMerger.merger(ot.BaseCoord)
def merge(merger, self, lst):
if self.Format != 1:
raise VarLibMergeError(f"BaseCoord format {self.Format} unsupported.")
self.Coordinate, DeviceTable = buildVarDevTable(merger.store_builder, [a.Coordinate for a in lst])
if DeviceTable:
self.Format = 3
self.DeviceTable = DeviceTable
@VariationMerger.merger(ot.CaretValue)
def merge(merger, self, lst):
if self.Format != 1:

View File

@ -0,0 +1,36 @@
<?xml version='1.0' encoding='utf-8'?>
<designspace format="3">
<axes>
<axis default="0" maximum="900" minimum="0" name="weight" tag="wght" />
</axes>
<sources>
<source filename="master_base_test/TestBASE.0.ufo" stylename="w0.00">
<info copy="1" />
<location>
<dimension name="weight" xvalue="0.00" />
</location>
</source>
<source filename="master_base_test/TestBASE.900.ufo" stylename="w900.00">
<location>
<dimension name="weight" xvalue="900.00" />
</location>
</source>
</sources>
<instances>
<instance familyname="TestBASE" filename="instances/TestBASE-Thin.otf" postscriptfontname="TestBASE-Thin" stylename="ExtraLight">
<location>
<dimension name="weight" xvalue="0" />
</location>
<kerning />
<info />
</instance>
<instance familyname="TestBASE" filename="instances/TestBase-Black.otf" postscriptfontname="TestBASE-Black" stylename="Heavy">
<location>
<dimension name="weight" xvalue="900" />
</location>
<kerning />
<info />
</instance>
</instances>
</designspace>

View File

@ -0,0 +1,700 @@
<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.4">
<GlyphOrder>
<!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
<GlyphID id="0" name=".notdef"/>
<GlyphID id="1" name="space"/>
<GlyphID id="2" name="A"/>
<GlyphID id="3" name="uni5B89"/>
<GlyphID id="4" name="uni304B"/>
</GlyphOrder>
<head>
<!-- Most of this table will be recalculated by the compiler -->
<tableVersion value="1.0"/>
<fontRevision value="1.0"/>
<checkSumAdjustment value="0xf10ba20c"/>
<magicNumber value="0x5f0f3cf5"/>
<flags value="00000000 00000011"/>
<unitsPerEm value="1000"/>
<created value="Thu Mar 19 17:38:24 2020"/>
<modified value="Thu Mar 19 12:05:00 2020"/>
<xMin value="-2"/>
<yMin value="-200"/>
<xMax value="801"/>
<yMax value="800"/>
<macStyle value="00000000 00000000"/>
<lowestRecPPEM value="7"/>
<fontDirectionHint value="2"/>
<indexToLocFormat value="0"/>
<glyphDataFormat value="0"/>
</head>
<hhea>
<tableVersion value="0x00010000"/>
<ascent value="1096"/>
<descent value="-161"/>
<lineGap value="0"/>
<advanceWidthMax value="1000"/>
<minLeftSideBearing value="-2"/>
<minRightSideBearing value="0"/>
<xMaxExtent value="801"/>
<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="4"/>
</hhea>
<maxp>
<!-- Most of this table will be recalculated by the compiler -->
<tableVersion value="0x10000"/>
<numGlyphs value="5"/>
<maxPoints value="73"/>
<maxContours value="10"/>
<maxCompositePoints value="0"/>
<maxCompositeContours value="0"/>
<maxZones value="1"/>
<maxTwilightPoints value="2"/>
<maxStorage value="30"/>
<maxFunctionDefs value="6"/>
<maxInstructionDefs value="0"/>
<maxStackElements value="100"/>
<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="3"/>
<xAvgCharWidth value="740"/>
<usWeightClass value="100"/>
<usWidthClass value="5"/>
<fsType value="00000000 00001000"/>
<ySubscriptXSize value="650"/>
<ySubscriptYSize value="600"/>
<ySubscriptXOffset value="0"/>
<ySubscriptYOffset value="75"/>
<ySuperscriptXSize value="650"/>
<ySuperscriptYSize value="600"/>
<ySuperscriptXOffset value="0"/>
<ySuperscriptYOffset value="350"/>
<yStrikeoutSize value="50"/>
<yStrikeoutPosition value="300"/>
<sFamilyClass value="0"/>
<panose>
<bFamilyType value="0"/>
<bSerifStyle value="0"/>
<bWeight value="2"/>
<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="UKWN"/>
<fsSelection value="00000000 01000000"/>
<usFirstCharIndex value="32"/>
<usLastCharIndex value="23433"/>
<sTypoAscender value="1096"/>
<sTypoDescender value="-161"/>
<sTypoLineGap value="0"/>
<usWinAscent value="1096"/>
<usWinDescent value="161"/>
<ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
<ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
<sxHeight value="500"/>
<sCapHeight value="700"/>
<usDefaultChar value="0"/>
<usBreakChar value="32"/>
<usMaxContext value="0"/>
</OS_2>
<hmtx>
<mtx name=".notdef" width="500" lsb="93"/>
<mtx name="A" width="600" lsb="-2"/>
<mtx name="space" width="600" lsb="0"/>
<mtx name="uni304B" width="1000" lsb="199"/>
<mtx name="uni5B89" width="1000" lsb="198"/>
</hmtx>
<cmap>
<tableVersion version="0"/>
<cmap_format_4 platformID="0" platEncID="3" language="0">
<map code="0x20" name="space"/><!-- SPACE -->
<map code="0x41" name="A"/><!-- LATIN CAPITAL LETTER A -->
<map code="0x304b" name="uni304B"/><!-- HIRAGANA LETTER KA -->
<map code="0x5b89" name="uni5B89"/><!-- CJK UNIFIED IDEOGRAPH-5B89 -->
</cmap_format_4>
<cmap_format_4 platformID="3" platEncID="1" language="0">
<map code="0x20" name="space"/><!-- SPACE -->
<map code="0x41" name="A"/><!-- LATIN CAPITAL LETTER A -->
<map code="0x304b" name="uni304B"/><!-- HIRAGANA LETTER KA -->
<map code="0x5b89" name="uni5B89"/><!-- CJK UNIFIED IDEOGRAPH-5B89 -->
</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="93" yMin="-200" xMax="410" yMax="800">
<contour>
<pt x="410" y="800" on="1"/>
<pt x="410" y="-200" on="1"/>
<pt x="93" y="-200" on="1"/>
<pt x="93" y="800" on="1"/>
</contour>
<contour>
<pt x="333" y="733" on="1"/>
<pt x="168" y="733" on="1"/>
<pt x="168" y="700" on="1"/>
<pt x="233" y="700" on="1"/>
<pt x="233" y="663" on="1"/>
<pt x="167" y="663" on="1"/>
<pt x="167" y="630" on="1"/>
<pt x="333" y="630" on="1"/>
<pt x="333" y="663" on="1"/>
<pt x="267" y="663" on="1"/>
<pt x="267" y="700" on="1"/>
<pt x="333" y="700" on="1"/>
</contour>
<contour>
<pt x="267" y="604" on="1"/>
<pt x="167" y="604" on="1"/>
<pt x="167" y="500" on="1"/>
<pt x="333" y="500" on="1"/>
<pt x="333" y="534" on="1"/>
<pt x="267" y="534" on="1"/>
</contour>
<contour>
<pt x="233" y="570" on="1"/>
<pt x="233" y="534" on="1"/>
<pt x="200" y="534" on="1"/>
<pt x="200" y="570" on="1"/>
</contour>
<contour>
<pt x="333" y="473" on="1"/>
<pt x="167" y="473" on="1"/>
<pt x="167" y="440" on="1"/>
<pt x="233" y="440" on="1"/>
<pt x="233" y="403" on="1"/>
<pt x="167" y="403" on="1"/>
<pt x="167" y="370" on="1"/>
<pt x="267" y="370" on="1"/>
<pt x="267" y="440" on="1"/>
<pt x="333" y="440" on="1"/>
</contour>
<contour>
<pt x="333" y="413" on="1"/>
<pt x="300" y="413" on="1"/>
<pt x="300" y="347" on="1"/>
<pt x="167" y="347" on="1"/>
<pt x="167" y="313" on="1"/>
<pt x="333" y="313" on="1"/>
</contour>
<contour>
<pt x="333" y="291" on="1"/>
<pt x="233" y="291" on="1"/>
<pt x="233" y="235" on="1"/>
<pt x="267" y="235" on="1"/>
<pt x="267" y="258" on="1"/>
<pt x="300" y="258" on="1"/>
<pt x="300" y="211" on="1"/>
<pt x="200" y="211" on="1"/>
<pt x="200" y="291" on="1"/>
<pt x="167" y="291" on="1"/>
<pt x="167" y="178" on="1"/>
<pt x="333" y="178" on="1"/>
</contour>
<contour>
<pt x="333" y="118" on="1"/>
<pt x="167" y="118" on="1"/>
<pt x="167" y="5" on="1"/>
<pt x="333" y="5" on="1"/>
</contour>
<contour>
<pt x="300" y="85" on="1"/>
<pt x="300" y="38" on="1"/>
<pt x="200" y="38" on="1"/>
<pt x="200" y="85" on="1"/>
</contour>
<contour>
<pt x="333" y="-18" on="1"/>
<pt x="167" y="-18" on="1"/>
<pt x="167" y="-51" on="1"/>
<pt x="237" y="-51" on="1"/>
<pt x="167" y="-98" on="1"/>
<pt x="167" y="-131" on="1"/>
<pt x="333" y="-131" on="1"/>
<pt x="333" y="-98" on="1"/>
<pt x="231" y="-98" on="1"/>
<pt x="301" y="-51" on="1"/>
<pt x="333" y="-51" on="1"/>
</contour>
<instructions/>
</TTGlyph>
<TTGlyph name="A" xMin="-2" yMin="0" xMax="600" yMax="700">
<contour>
<pt x="-2" y="700" on="1"/>
<pt x="600" y="700" on="1"/>
<pt x="600" y="0" on="1"/>
<pt x="-2" y="0" on="1"/>
</contour>
<instructions/>
</TTGlyph>
<TTGlyph name="space"/><!-- contains no outline data -->
<TTGlyph name="uni304B" xMin="199" yMin="-20" xMax="801" yMax="630">
<contour>
<pt x="199" y="630" on="1"/>
<pt x="801" y="630" on="1"/>
<pt x="801" y="-20" on="1"/>
<pt x="199" y="-20" on="1"/>
</contour>
<instructions/>
</TTGlyph>
<TTGlyph name="uni5B89" xMin="198" yMin="-51" xMax="800" yMax="649">
<contour>
<pt x="198" y="649" on="1"/>
<pt x="800" y="649" on="1"/>
<pt x="800" y="-51" on="1"/>
<pt x="198" y="-51" on="1"/>
</contour>
<instructions/>
</TTGlyph>
</glyf>
<name>
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
TestBASE
</namerecord>
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
Thin
</namerecord>
<namerecord nameID="3" platformID="1" platEncID="0" langID="0x0" unicode="True">
1.000;UKWN;TestBASE-Thin
</namerecord>
<namerecord nameID="4" platformID="1" platEncID="0" langID="0x0" unicode="True">
TestBASE Thin
</namerecord>
<namerecord nameID="5" platformID="1" platEncID="0" langID="0x0" unicode="True">
Version 1.000
</namerecord>
<namerecord nameID="6" platformID="1" platEncID="0" langID="0x0" unicode="True">
TestBASE-Thin
</namerecord>
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
TestBASE Thin
</namerecord>
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
Regular
</namerecord>
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
1.000;UKWN;TestBASE-Thin
</namerecord>
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
TestBASE Thin
</namerecord>
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
Version 1.000
</namerecord>
<namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
TestBASE-Thin
</namerecord>
<namerecord nameID="16" platformID="3" platEncID="1" langID="0x409">
TestBASE
</namerecord>
<namerecord nameID="17" platformID="3" platEncID="1" langID="0x409">
Thin
</namerecord>
</name>
<post>
<formatType value="2.0"/>
<italicAngle value="0.0"/>
<underlinePosition value="-75"/>
<underlineThickness value="50"/>
<isFixedPitch value="0"/>
<minMemType42 value="0"/>
<maxMemType42 value="0"/>
<minMemType1 value="0"/>
<maxMemType1 value="0"/>
<psNames>
<!-- This file uses unique glyph names based on the information
found in the 'post' table. Since these names might not be unique,
we have to invent artificial names in case of clashes. In order to
be able to retain the original information, we need a name to
ps name mapping for those cases where they differ. That's what
you see below.
-->
</psNames>
<extraNames>
<!-- following are the name that are not taken from the standard Mac glyph order -->
<psName name="uni5B89"/>
<psName name="uni304B"/>
</extraNames>
</post>
<BASE>
<Version value="0x00010000"/>
<HorizAxis>
<BaseTagList>
<!-- BaseTagCount=5 -->
<BaselineTag index="0" value="icfb"/>
<BaselineTag index="1" value="icft"/>
<BaselineTag index="2" value="ideo"/>
<BaselineTag index="3" value="idtp"/>
<BaselineTag index="4" value="romn"/>
</BaseTagList>
<BaseScriptList>
<!-- BaseScriptCount=6 -->
<BaseScriptRecord index="0">
<BaseScriptTag value="DFLT"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-75"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="835"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="1">
<BaseScriptTag value="cyrl"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-75"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="835"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="2">
<BaseScriptTag value="grek"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-75"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="835"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="3">
<BaseScriptTag value="hani"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-75"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="835"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="4">
<BaseScriptTag value="kana"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-75"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="835"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="5">
<BaseScriptTag value="latn"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-75"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="835"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
</BaseScriptList>
</HorizAxis>
<VertAxis>
<BaseTagList>
<!-- BaseTagCount=5 -->
<BaselineTag index="0" value="icfb"/>
<BaselineTag index="1" value="icft"/>
<BaselineTag index="2" value="ideo"/>
<BaselineTag index="3" value="idtp"/>
<BaselineTag index="4" value="romn"/>
</BaseTagList>
<BaseScriptList>
<!-- BaseScriptCount=6 -->
<BaseScriptRecord index="0">
<BaseScriptTag value="DFLT"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="45"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="955"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="1">
<BaseScriptTag value="cyrl"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="45"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="955"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="2">
<BaseScriptTag value="grek"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="45"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="955"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="3">
<BaseScriptTag value="hani"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="45"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="955"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="4">
<BaseScriptTag value="kana"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="45"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="955"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="5">
<BaseScriptTag value="latn"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="45"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="955"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
</BaseScriptList>
</VertAxis>
</BASE>
<GSUB>
<Version value="0x00010000"/>
</GSUB>
<DSIG>
<!-- note that the Digital Signature will be invalid after recompilation! -->
<tableHeader flag="0x0" numSigs="0" version="1"/>
</DSIG>
</ttFont>

View File

@ -0,0 +1,700 @@
<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.4">
<GlyphOrder>
<!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
<GlyphID id="0" name=".notdef"/>
<GlyphID id="1" name="space"/>
<GlyphID id="2" name="A"/>
<GlyphID id="3" name="uni5B89"/>
<GlyphID id="4" name="uni304B"/>
</GlyphOrder>
<head>
<!-- Most of this table will be recalculated by the compiler -->
<tableVersion value="1.0"/>
<fontRevision value="1.0"/>
<checkSumAdjustment value="0xc8faf2b8"/>
<magicNumber value="0x5f0f3cf5"/>
<flags value="00000000 00000011"/>
<unitsPerEm value="1000"/>
<created value="Thu Mar 19 17:38:24 2020"/>
<modified value="Thu Mar 19 12:04:56 2020"/>
<xMin value="-2"/>
<yMin value="-200"/>
<xMax value="801"/>
<yMax value="800"/>
<macStyle value="00000000 00000000"/>
<lowestRecPPEM value="7"/>
<fontDirectionHint value="2"/>
<indexToLocFormat value="0"/>
<glyphDataFormat value="0"/>
</head>
<hhea>
<tableVersion value="0x00010000"/>
<ascent value="1000"/>
<descent value="-200"/>
<lineGap value="0"/>
<advanceWidthMax value="1000"/>
<minLeftSideBearing value="-2"/>
<minRightSideBearing value="0"/>
<xMaxExtent value="801"/>
<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="4"/>
</hhea>
<maxp>
<!-- Most of this table will be recalculated by the compiler -->
<tableVersion value="0x10000"/>
<numGlyphs value="5"/>
<maxPoints value="73"/>
<maxContours value="10"/>
<maxCompositePoints value="0"/>
<maxCompositeContours value="0"/>
<maxZones value="1"/>
<maxTwilightPoints value="2"/>
<maxStorage value="30"/>
<maxFunctionDefs value="6"/>
<maxInstructionDefs value="0"/>
<maxStackElements value="100"/>
<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="3"/>
<xAvgCharWidth value="740"/>
<usWeightClass value="900"/>
<usWidthClass value="5"/>
<fsType value="00000000 00001000"/>
<ySubscriptXSize value="650"/>
<ySubscriptYSize value="600"/>
<ySubscriptXOffset value="0"/>
<ySubscriptYOffset value="75"/>
<ySuperscriptXSize value="650"/>
<ySuperscriptYSize value="600"/>
<ySuperscriptXOffset value="0"/>
<ySuperscriptYOffset value="350"/>
<yStrikeoutSize value="50"/>
<yStrikeoutPosition value="300"/>
<sFamilyClass value="0"/>
<panose>
<bFamilyType value="0"/>
<bSerifStyle value="0"/>
<bWeight value="10"/>
<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="UKWN"/>
<fsSelection value="00000000 01000000"/>
<usFirstCharIndex value="32"/>
<usLastCharIndex value="23433"/>
<sTypoAscender value="800"/>
<sTypoDescender value="-200"/>
<sTypoLineGap value="200"/>
<usWinAscent value="1000"/>
<usWinDescent value="200"/>
<ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
<ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
<sxHeight value="500"/>
<sCapHeight value="700"/>
<usDefaultChar value="0"/>
<usBreakChar value="32"/>
<usMaxContext value="0"/>
</OS_2>
<hmtx>
<mtx name=".notdef" width="500" lsb="93"/>
<mtx name="A" width="600" lsb="-2"/>
<mtx name="space" width="600" lsb="0"/>
<mtx name="uni304B" width="1000" lsb="199"/>
<mtx name="uni5B89" width="1000" lsb="198"/>
</hmtx>
<cmap>
<tableVersion version="0"/>
<cmap_format_4 platformID="0" platEncID="3" language="0">
<map code="0x20" name="space"/><!-- SPACE -->
<map code="0x41" name="A"/><!-- LATIN CAPITAL LETTER A -->
<map code="0x304b" name="uni304B"/><!-- HIRAGANA LETTER KA -->
<map code="0x5b89" name="uni5B89"/><!-- CJK UNIFIED IDEOGRAPH-5B89 -->
</cmap_format_4>
<cmap_format_4 platformID="3" platEncID="1" language="0">
<map code="0x20" name="space"/><!-- SPACE -->
<map code="0x41" name="A"/><!-- LATIN CAPITAL LETTER A -->
<map code="0x304b" name="uni304B"/><!-- HIRAGANA LETTER KA -->
<map code="0x5b89" name="uni5B89"/><!-- CJK UNIFIED IDEOGRAPH-5B89 -->
</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="93" yMin="-200" xMax="410" yMax="800">
<contour>
<pt x="410" y="800" on="1"/>
<pt x="410" y="-200" on="1"/>
<pt x="93" y="-200" on="1"/>
<pt x="93" y="800" on="1"/>
</contour>
<contour>
<pt x="333" y="733" on="1"/>
<pt x="168" y="733" on="1"/>
<pt x="168" y="700" on="1"/>
<pt x="233" y="700" on="1"/>
<pt x="233" y="663" on="1"/>
<pt x="167" y="663" on="1"/>
<pt x="167" y="630" on="1"/>
<pt x="333" y="630" on="1"/>
<pt x="333" y="663" on="1"/>
<pt x="267" y="663" on="1"/>
<pt x="267" y="700" on="1"/>
<pt x="333" y="700" on="1"/>
</contour>
<contour>
<pt x="267" y="604" on="1"/>
<pt x="167" y="604" on="1"/>
<pt x="167" y="500" on="1"/>
<pt x="333" y="500" on="1"/>
<pt x="333" y="534" on="1"/>
<pt x="267" y="534" on="1"/>
</contour>
<contour>
<pt x="233" y="570" on="1"/>
<pt x="233" y="534" on="1"/>
<pt x="200" y="534" on="1"/>
<pt x="200" y="570" on="1"/>
</contour>
<contour>
<pt x="333" y="473" on="1"/>
<pt x="167" y="473" on="1"/>
<pt x="167" y="440" on="1"/>
<pt x="233" y="440" on="1"/>
<pt x="233" y="403" on="1"/>
<pt x="167" y="403" on="1"/>
<pt x="167" y="370" on="1"/>
<pt x="267" y="370" on="1"/>
<pt x="267" y="440" on="1"/>
<pt x="333" y="440" on="1"/>
</contour>
<contour>
<pt x="333" y="413" on="1"/>
<pt x="300" y="413" on="1"/>
<pt x="300" y="347" on="1"/>
<pt x="167" y="347" on="1"/>
<pt x="167" y="313" on="1"/>
<pt x="333" y="313" on="1"/>
</contour>
<contour>
<pt x="333" y="291" on="1"/>
<pt x="233" y="291" on="1"/>
<pt x="233" y="235" on="1"/>
<pt x="267" y="235" on="1"/>
<pt x="267" y="258" on="1"/>
<pt x="300" y="258" on="1"/>
<pt x="300" y="211" on="1"/>
<pt x="200" y="211" on="1"/>
<pt x="200" y="291" on="1"/>
<pt x="167" y="291" on="1"/>
<pt x="167" y="178" on="1"/>
<pt x="333" y="178" on="1"/>
</contour>
<contour>
<pt x="333" y="118" on="1"/>
<pt x="167" y="118" on="1"/>
<pt x="167" y="5" on="1"/>
<pt x="333" y="5" on="1"/>
</contour>
<contour>
<pt x="300" y="85" on="1"/>
<pt x="300" y="38" on="1"/>
<pt x="200" y="38" on="1"/>
<pt x="200" y="85" on="1"/>
</contour>
<contour>
<pt x="333" y="-18" on="1"/>
<pt x="167" y="-18" on="1"/>
<pt x="167" y="-51" on="1"/>
<pt x="237" y="-51" on="1"/>
<pt x="167" y="-98" on="1"/>
<pt x="167" y="-131" on="1"/>
<pt x="333" y="-131" on="1"/>
<pt x="333" y="-98" on="1"/>
<pt x="231" y="-98" on="1"/>
<pt x="301" y="-51" on="1"/>
<pt x="333" y="-51" on="1"/>
</contour>
<instructions/>
</TTGlyph>
<TTGlyph name="A" xMin="-2" yMin="0" xMax="600" yMax="700">
<contour>
<pt x="-2" y="700" on="1"/>
<pt x="600" y="700" on="1"/>
<pt x="600" y="0" on="1"/>
<pt x="-2" y="0" on="1"/>
</contour>
<instructions/>
</TTGlyph>
<TTGlyph name="space"/><!-- contains no outline data -->
<TTGlyph name="uni304B" xMin="199" yMin="-20" xMax="801" yMax="630">
<contour>
<pt x="199" y="630" on="1"/>
<pt x="801" y="630" on="1"/>
<pt x="801" y="-20" on="1"/>
<pt x="199" y="-20" on="1"/>
</contour>
<instructions/>
</TTGlyph>
<TTGlyph name="uni5B89" xMin="198" yMin="-51" xMax="800" yMax="649">
<contour>
<pt x="198" y="649" on="1"/>
<pt x="800" y="649" on="1"/>
<pt x="800" y="-51" on="1"/>
<pt x="198" y="-51" on="1"/>
</contour>
<instructions/>
</TTGlyph>
</glyf>
<name>
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
TestBASE
</namerecord>
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
Black
</namerecord>
<namerecord nameID="3" platformID="1" platEncID="0" langID="0x0" unicode="True">
1.000;UKWN;TestBASE-Black
</namerecord>
<namerecord nameID="4" platformID="1" platEncID="0" langID="0x0" unicode="True">
TestBASE Black
</namerecord>
<namerecord nameID="5" platformID="1" platEncID="0" langID="0x0" unicode="True">
Version 1.000
</namerecord>
<namerecord nameID="6" platformID="1" platEncID="0" langID="0x0" unicode="True">
TestBASE-Black
</namerecord>
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
TestBASE Black
</namerecord>
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
Regular
</namerecord>
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
1.000;UKWN;TestBASE-Black
</namerecord>
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
TestBASE Black
</namerecord>
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
Version 1.000
</namerecord>
<namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
TestBASE-Black
</namerecord>
<namerecord nameID="16" platformID="3" platEncID="1" langID="0x409">
TestBASE
</namerecord>
<namerecord nameID="17" platformID="3" platEncID="1" langID="0x409">
Black
</namerecord>
</name>
<post>
<formatType value="2.0"/>
<italicAngle value="0.0"/>
<underlinePosition value="-75"/>
<underlineThickness value="50"/>
<isFixedPitch value="0"/>
<minMemType42 value="0"/>
<maxMemType42 value="0"/>
<minMemType1 value="0"/>
<maxMemType1 value="0"/>
<psNames>
<!-- This file uses unique glyph names based on the information
found in the 'post' table. Since these names might not be unique,
we have to invent artificial names in case of clashes. In order to
be able to retain the original information, we need a name to
ps name mapping for those cases where they differ. That's what
you see below.
-->
</psNames>
<extraNames>
<!-- following are the name that are not taken from the standard Mac glyph order -->
<psName name="uni5B89"/>
<psName name="uni304B"/>
</extraNames>
</post>
<BASE>
<Version value="0x00010000"/>
<HorizAxis>
<BaseTagList>
<!-- BaseTagCount=5 -->
<BaselineTag index="0" value="icfb"/>
<BaselineTag index="1" value="icft"/>
<BaselineTag index="2" value="ideo"/>
<BaselineTag index="3" value="idtp"/>
<BaselineTag index="4" value="romn"/>
</BaseTagList>
<BaseScriptList>
<!-- BaseScriptCount=6 -->
<BaseScriptRecord index="0">
<BaseScriptTag value="DFLT"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-92"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="852"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="1">
<BaseScriptTag value="cyrl"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-92"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="852"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="2">
<BaseScriptTag value="grek"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-92"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="852"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="3">
<BaseScriptTag value="hani"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-92"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="852"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="4">
<BaseScriptTag value="kana"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-92"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="852"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="5">
<BaseScriptTag value="latn"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="-92"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="852"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
</BaseScriptList>
</HorizAxis>
<VertAxis>
<BaseTagList>
<!-- BaseTagCount=5 -->
<BaselineTag index="0" value="icfb"/>
<BaselineTag index="1" value="icft"/>
<BaselineTag index="2" value="ideo"/>
<BaselineTag index="3" value="idtp"/>
<BaselineTag index="4" value="romn"/>
</BaseTagList>
<BaseScriptList>
<!-- BaseScriptCount=6 -->
<BaseScriptRecord index="0">
<BaseScriptTag value="DFLT"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="28"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="972"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="1">
<BaseScriptTag value="cyrl"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="28"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="972"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="2">
<BaseScriptTag value="grek"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="28"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="972"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="3">
<BaseScriptTag value="hani"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="28"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="972"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="4">
<BaseScriptTag value="kana"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="28"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="972"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="5">
<BaseScriptTag value="latn"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="1">
<Coordinate value="28"/>
</BaseCoord>
<BaseCoord index="1" Format="1">
<Coordinate value="972"/>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
</BaseScriptList>
</VertAxis>
</BASE>
<GSUB>
<Version value="0x00010000"/>
</GSUB>
<DSIG>
<!-- note that the Digital Signature will be invalid after recompilation! -->
<tableHeader flag="0x0" numSigs="0" version="1"/>
</DSIG>
</ttFont>

View File

@ -0,0 +1,477 @@
<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="OTTO" ttLibVersion="4.4">
<BASE>
<Version value="0x00010001"/>
<HorizAxis>
<BaseTagList>
<!-- BaseTagCount=5 -->
<BaselineTag index="0" value="icfb"/>
<BaselineTag index="1" value="icft"/>
<BaselineTag index="2" value="ideo"/>
<BaselineTag index="3" value="idtp"/>
<BaselineTag index="4" value="romn"/>
</BaseTagList>
<BaseScriptList>
<!-- BaseScriptCount=6 -->
<BaseScriptRecord index="0">
<BaseScriptTag value="DFLT"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="-75"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="835"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="1">
<BaseScriptTag value="cyrl"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="-75"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="835"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="2">
<BaseScriptTag value="grek"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="-75"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="835"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="3">
<BaseScriptTag value="hani"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="-75"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="835"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="4">
<BaseScriptTag value="kana"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="-75"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="835"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="5">
<BaseScriptTag value="latn"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="-75"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="835"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="-120"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="880"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="0"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
</BaseScriptList>
</HorizAxis>
<VertAxis>
<BaseTagList>
<!-- BaseTagCount=5 -->
<BaselineTag index="0" value="icfb"/>
<BaselineTag index="1" value="icft"/>
<BaselineTag index="2" value="ideo"/>
<BaselineTag index="3" value="idtp"/>
<BaselineTag index="4" value="romn"/>
</BaseTagList>
<BaseScriptList>
<!-- BaseScriptCount=6 -->
<BaseScriptRecord index="0">
<BaseScriptTag value="DFLT"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="45"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="955"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="1">
<BaseScriptTag value="cyrl"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="45"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="955"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="2">
<BaseScriptTag value="grek"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="45"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="955"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="3">
<BaseScriptTag value="hani"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="45"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="955"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="4">
<BaseScriptTag value="kana"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="2"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="45"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="955"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
<BaseScriptRecord index="5">
<BaseScriptTag value="latn"/>
<BaseScript>
<BaseValues>
<DefaultIndex value="4"/>
<!-- BaseCoordCount=5 -->
<BaseCoord index="0" Format="3">
<Coordinate value="45"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="0"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="1" Format="3">
<Coordinate value="955"/>
<DeviceTable>
<StartSize value="0"/>
<EndSize value="1"/>
<DeltaFormat value="32768"/>
</DeviceTable>
</BaseCoord>
<BaseCoord index="2" Format="1">
<Coordinate value="0"/>
</BaseCoord>
<BaseCoord index="3" Format="1">
<Coordinate value="1000"/>
</BaseCoord>
<BaseCoord index="4" Format="1">
<Coordinate value="120"/>
</BaseCoord>
</BaseValues>
<!-- BaseLangSysCount=0 -->
</BaseScript>
</BaseScriptRecord>
</BaseScriptList>
</VertAxis>
<VarStore Format="1">
<Format value="1"/>
<VarRegionList>
<!-- RegionAxisCount=1 -->
<!-- RegionCount=1 -->
<Region index="0">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
</VarRegionList>
<!-- VarDataCount=1 -->
<VarData index="0">
<!-- ItemCount=2 -->
<NumShorts value="0"/>
<!-- VarRegionCount=1 -->
<VarRegionIndex index="0" value="0"/>
<Item index="0" value="[-17]"/>
<Item index="1" value="[17]"/>
</VarData>
</VarStore>
</BASE>
</ttFont>

View File

@ -628,6 +628,31 @@ class BuildTest(unittest.TestCase):
self.expect_ttx(varfont, expected_ttx_path, tables)
self.check_ttx_dump(varfont, expected_ttx_path, tables, suffix)
def test_varlib_build_BASE(self):
ds_path = self.get_test_input('TestBASE.designspace')
ttx_dir = self.get_test_input("master_base_test")
expected_ttx_name = 'TestBASE'
suffix = '.otf'
self.temp_dir()
for path in self.get_file_list(ttx_dir, '.ttx', 'TestBASE'):
font, savepath = self.compile_font(path, suffix, self.tempdir)
ds = DesignSpaceDocument.fromfile(ds_path)
for source in ds.sources:
source.path = os.path.join(
self.tempdir, os.path.basename(source.filename).replace(".ufo", suffix)
)
ds.updatePaths()
varfont, _, _ = build(ds)
varfont = reload_font(varfont)
expected_ttx_path = self.get_test_output(expected_ttx_name + '.ttx')
tables = ["BASE"]
self.expect_ttx(varfont, expected_ttx_path, tables)
self.check_ttx_dump(varfont, expected_ttx_path, tables, suffix)
def test_varlib_build_single_master(self):
self._run_varlib_build_test(
designspace_name='SingleMaster',