[feaLib] Use specification example for table GDEF as unit test

This commit is contained in:
Sascha Brawer 2016-01-11 07:17:29 +01:00
parent 79eb7d11f7
commit 03796cf3a4
3 changed files with 90 additions and 2 deletions

View File

@ -30,7 +30,7 @@ def makeTTFont():
"f_l c_h c_k c_s c_t f_f f_f_i f_f_l f_i o_f_f_i s_t "
"ydieresis yacute "
"grave acute dieresis macron circumflex cedilla umlaut ogonek caron "
"damma hamza sukun kasratan lam_meem_jeem "
"damma hamza sukun kasratan lam_meem_jeem noon.final noon.initial "
).split()
font = TTFont()
font.setGlyphOrder(glyphs)
@ -167,7 +167,7 @@ class BuilderTest(unittest.TestCase):
def test_spec(self):
for name in ("4h1 5d1 5d2 5fi1 5fi2 5fi3 5fi4 5h1 "
"6d2 6e 6f 6h_ii").split():
"6d2 6e 6f 6h_ii 9b").split():
font = makeTTFont()
addOpenTypeFeatures(self.getpath("spec%s.fea" % name), font)
self.expect_ttx(font, self.getpath("spec%s.ttx" % name))

View File

@ -0,0 +1,13 @@
@BASE = [f i];
@LIGATURES = [c_s c_t f_i f_f_i s_t];
@MARKS = [acute grave];
@COMPONENT = [noon.final noon.initial];
table GDEF {
GlyphClassDef @BASE, @LIGATURES, @MARKS, @COMPONENT;
Attach noon.final 5;
Attach noon.initial 4;
LigatureCaretByPos f_i 400 380;
LigatureCaretByPos [c_t s_t] 500;
LigatureCaretByIndex f_f_i 23 46;
} GDEF;

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="true" ttLibVersion="3.0">
<GDEF>
<Version value="1.0"/>
<GlyphClassDef>
<ClassDef glyph="acute" class="3"/>
<ClassDef glyph="c_s" class="2"/>
<ClassDef glyph="c_t" class="2"/>
<ClassDef glyph="f" class="1"/>
<ClassDef glyph="f_f_i" class="2"/>
<ClassDef glyph="f_i" class="2"/>
<ClassDef glyph="grave" class="3"/>
<ClassDef glyph="i" class="1"/>
<ClassDef glyph="noon.final" class="4"/>
<ClassDef glyph="noon.initial" class="4"/>
<ClassDef glyph="s_t" class="2"/>
</GlyphClassDef>
<AttachList>
<Coverage>
<Glyph value="noon.final"/>
<Glyph value="noon.initial"/>
</Coverage>
<!-- GlyphCount=2 -->
<AttachPoint index="0">
<!-- PointCount=1 -->
<PointIndex index="0" value="5"/>
</AttachPoint>
<AttachPoint index="1">
<!-- PointCount=1 -->
<PointIndex index="0" value="4"/>
</AttachPoint>
</AttachList>
<LigCaretList>
<Coverage>
<Glyph value="c_t"/>
<Glyph value="f_f_i"/>
<Glyph value="f_i"/>
<Glyph value="s_t"/>
</Coverage>
<!-- LigGlyphCount=4 -->
<LigGlyph index="0">
<!-- CaretCount=1 -->
<CaretValue index="0" Format="1">
<Coordinate value="500"/>
</CaretValue>
</LigGlyph>
<LigGlyph index="1">
<!-- CaretCount=2 -->
<CaretValue index="0" Format="2">
<CaretValuePoint value="23"/>
</CaretValue>
<CaretValue index="1" Format="2">
<CaretValuePoint value="46"/>
</CaretValue>
</LigGlyph>
<LigGlyph index="2">
<!-- CaretCount=2 -->
<CaretValue index="0" Format="1">
<Coordinate value="380"/>
</CaretValue>
<CaretValue index="1" Format="1">
<Coordinate value="400"/>
</CaretValue>
</LigGlyph>
<LigGlyph index="3">
<!-- CaretCount=1 -->
<CaretValue index="0" Format="1">
<Coordinate value="500"/>
</CaretValue>
</LigGlyph>
</LigCaretList>
</GDEF>
</ttFont>