57 Commits

Author SHA1 Message Date
Sascha Brawer
d2f9fa8a39 [feaLib] Simplify how ClassDef tables are built
In f0eb7e98ca0642f17ac82433db8c957fffd6a9d3, the various subclasses
of otTables.ClassDef were merged into one single class. Therefore,
we can now always instantiate otTables.ClassDef() which is simpler.
2016-01-14 11:56:57 +01:00
Cosimo Lupo
3dec54f24a builder_test: move BuilderTest's dynamic method setting out of "__main__" for py.test 2016-01-14 09:43:42 +00:00
Sascha Brawer
6246c71a07 [feaLib] Port to otlLib builder for supported lookups
Make the output of otlLib.buildLigatureSubst() deterministic.
Before this change, otlLib ligatures were emitted in a non-deterministic
sorting order (depending on what hash value Python would give
to a string tuple).
2016-01-14 10:27:54 +01:00
Sascha Brawer
0171515246 [feaLib] Fix for b4919b6c0a5ea0ca6747fe7699554e8a14d1f77f
After b4919b6c0a5ea0ca6747fe7699554e8a14d1f77f, the tests were
named correctly but they always used the exact same feature file,
irrespective of what file they were supposed to test.

Resolves https://github.com/behdad/fonttools/issues/465
2016-01-14 09:22:24 +01:00
Sascha Brawer
b4919b6c0a [feaLib] Check each test feature file in a separate unit test
Resolves https://github.com/behdad/fonttools/issues/465
2016-01-14 08:37:37 +01:00
Behdad Esfahbod
c3cb356e7f [feaLib] Fix for f0eb7e98ca0642f17ac82433db8c957fffd6a9d3
ClassDef1 and ClassDef2 are now same type, so can't differentiate
based on that anymore.
2016-01-13 17:29:42 +00:00
Sascha Brawer
67686691c4 [feaLib] Also handle feature aalt without any custom lookups
Before this change, feaLib did not handle feature files that specified
`feature aalt` whose block just was referring to other features without
defining any lookups on its own. After this change, we can handle it.

Resolves https://github.com/behdad/fonttools/issues/441
2016-01-11 18:12:23 +01:00
Sascha Brawer
38f4ee7908 [feaLib] Implement table head with FontRevision statement 2016-01-11 18:01:47 +01:00
Sascha Brawer
2de6fc7744 [feaLib] Imlement special support for feature aalt 2016-01-11 16:00:52 +01:00
Sascha Brawer
03796cf3a4 [feaLib] Use specification example for table GDEF as unit test 2016-01-11 07:18:18 +01:00
Sascha Brawer
5696b50fac [feaLib] Implement the GlyphClassDef statement 2016-01-08 19:06:52 +01:00
Sascha Brawer
89ac1b2d0d [feaLib] Implement the Attach statement 2016-01-08 08:32:47 +01:00
Sascha Brawer
f8987125e7 [feaLib] Implement the LigatureCaretByIndex statement 2016-01-07 17:22:31 +01:00
Sascha Brawer
a44d8c5364 [feaLib] Implement the LigatureCaretByPos statement 2016-01-07 16:39:35 +01:00
Sascha Brawer
e19d5a8cbe [feaLib] Add an overlooked test case to the suite of unittests
Because the test case had not been executed, there was a typo
in the expected output; this is now fixed.
2016-01-07 10:36:08 +01:00
Sascha Brawer
931bbc50c1 [feaLib] Support compact syntax for chaining to ligature substitutions
https://github.com/behdad/fonttools/issues/445
2016-01-07 10:31:13 +01:00
Sascha Brawer
7eee900ea3 [feaLib] Add test for rejecting inconsistent flags in a named lookup block 2016-01-06 17:53:26 +01:00
Sascha Brawer
45cc496bed [feaLib] Support compact syntax for chaining to multiple substitutions
https://github.com/behdad/fonttools/issues/445
2016-01-06 17:33:34 +01:00
Sascha Brawer
a543b2e3b9 [feaLib] Support compact syntax for chaining to single substitutions
Resolves https://github.com/behdad/fonttools/issues/445 for single
substitutions. The compact forms for chaining to other GSUB types
are not yet supported; these will get fixed in follow-up changes.
2016-01-06 16:15:26 +01:00
Sascha Brawer
654c086574 [feaLib] Do not use glyph class 0 when building ClassDef2 tables
See https://github.com/adobe-type-tools/afdko/issues/90 for context.
2015-12-23 15:14:00 +01:00
Sascha Brawer
6254974112 [feaLib] Support GPOS type 2, format 2: Class-based kerning tables 2015-12-23 11:35:49 +01:00
Sascha Brawer
26c02e4d95 [feaLib] Add helper for creating glyph class definition tables
The helper will be used for building class-based kerning tables.
2015-12-22 14:42:13 +01:00
Sascha Brawer
dd23788a53 [feaLib] Raise a not-yet-implemented error for class-based kerning
Before this change, we silently generated bad fonts. After this
change, we emit the exact same output like `makeotf` for specific
kerning pairs, and reject the input file for the not yet implemented
class-based kerning. (The implementation of class-based kerning
is coming soon).
2015-12-21 16:06:59 +01:00
Sascha Brawer
3812e992c1 [feaLib] Enumerate also the second glyph class in enum pos statements
Before this change, the compiler would enumerate only the first
glyph class of a kerning pair. However, that behavior did not match
the behavior of the `makeotf` tool.
2015-12-21 15:16:47 +01:00
Sascha Brawer
0dd370760e [feaLib] Clean up the handling of markClass statements 2015-12-12 12:55:21 +01:00
Sascha Brawer
ac86de36fb [feaLib] Implement the lookupflag statement 2015-12-10 19:17:11 +01:00
Sascha Brawer
e0a3350406 [feaLib] Implement GPOS type 8: Chaining contextual positioning 2015-12-09 23:53:20 +01:00
Sascha Brawer
c2c033d3cf [feaLib] Implement GPOS type 6: Mark-to-mark attachment positioning 2015-12-09 17:56:47 +01:00
Sascha Brawer
96223b8aee [feaLib] Implement GPOS type 5: Mark-to-ligature attachment positioning 2015-12-09 16:51:15 +01:00
Sascha Brawer
0fbbe037bf [feaLib] Implement GPOS type 4: Mark-to-Base Attachment Positioning 2015-12-08 22:28:02 +01:00
Sascha Brawer
790ea83a02 [feaLib] Parse GPOS type 4 aka Mark-to-Base Attachment Positioning
However, no output tables are being built yet. This change is just
implementing the feature file parser.
2015-12-08 19:04:42 +01:00
Sascha Brawer
bc4828589e [feaLib] Merge test cases from the OpenType Feature File specification
The setup code for these unit tests was copied and pasted,
and this became a little repetitive.
2015-12-08 17:19:30 +01:00
Sascha Brawer
dfa1551ece [feaLib] Implement markClass statement 2015-12-08 17:04:21 +01:00
Cosimo Lupo
db57418b55 Merge pull request #420 from moyogo/fealib-typo
feaLib: misnamed function in builder_test.py
2015-12-08 09:48:40 +00:00
Sascha Brawer
c6ee46f299 [feaLib] Implement GPOS type 3: Cursive Attachment Positioning 2015-12-07 23:56:08 +01:00
Sascha Brawer
3433f363e7 [feaLib] Implement GPOS type 2, format 1 2015-12-07 21:26:58 +01:00
moyogo
38b335e131 feaLib: misnamed function in builder_test.py 2015-12-04 16:56:58 +00:00
Sascha Brawer
b99f1c9af4 [feaLib] Implement GPOS type 1, Single Adjustment Positioning 2015-12-04 12:22:01 +01:00
Sascha Brawer
f45fab8c3a [feaLib] Sort GSUB glyph coverage tables by glyph ID
Before this change, feaLib would sort coverage tables by glyph name,
which is against the OpenType specification.  The current unittests
happen to use only glyphs where the ordering is identical whether
sorting by name or by ID; but I am about to add unittests (for GPOS)
where the ordering is different.

The ordering cannot be enforced by otTables because otTables does
not have access to the font's glyph order; therefore, the sorting
needs to happen inside feaLib.
2015-12-04 11:11:17 +01:00
Sascha Brawer
cab0067c7e [feaLib] Implement GSUB LookupType 8: Reverse chaining single substitutions 2015-12-03 13:05:42 +01:00
Sascha Brawer
152dff4361 [feaLib] Implement GSUB chain substitution rules 2015-11-30 15:02:09 +01:00
Sascha Brawer
3f5e2ae820 [feaLib] Add expected output for chain substitution rules
Generated by running example 1 from the Feature File specification
section 5.f.i (Specifying a Chain Sub rule and marking sub-runs)
through AFDKO's makeotf tool, and then decompiling the resulting
GSUB table with ttx.

The actual test is commented out because the current version of feaLib
is not able to produce this output yet; marked with a TODO comment.
2015-10-27 20:36:56 +01:00
Sascha Brawer
75e4053e39 [feaLib] Handle references to named lookup blocks 2015-09-28 16:49:17 +02:00
Sascha Brawer
17ab15c4af [feaLib] Implement GSUB lookup type 2 2015-09-10 15:28:02 +02:00
Sascha Brawer
a35291e8c1 [feaLib] Implement required qualifier on language statements 2015-09-08 15:55:54 +02:00
Sascha Brawer
a3783e1095 [feaLib] Reject language and script within feature aalt and size 2015-09-08 12:18:03 +02:00
Sascha Brawer
683a8f5dbc [feaLib] Reject duplicate languagesystem declarations 2015-09-08 10:56:07 +02:00
Sascha Brawer
b0bbce88b1 [feaLib] Implement Single Substitution (GSUB lookup type 1) 2015-09-08 10:33:07 +02:00
Sascha Brawer
6140a4ec2b [feaLib] Build ScriptList subtable
Also, fixed a bug that caused language tags to be sometimes stripped.
Added an assertion to verify that language tags are always 4 chars.
2015-09-07 21:34:10 +02:00
Sascha Brawer
2537a4da29 [feaLib] Enforce uniform lookup types inside named lookup blocks 2015-09-07 16:27:12 +02:00