403 Commits

Author SHA1 Message Date
Khaled Hosny
c82fb8fa13 [feaLib] Support Python < 3.5 in previous commits 2019-03-01 01:48:48 +02:00
Khaled Hosny
7d03e93e67 [feaLib] Make unsupported "subtable" a warning
AFDKO’s makeotf warns and ignores the statement, so do the same. I’m
abusing FeatureLibError() as a lazy way to keep reporting the location.
2019-03-01 01:48:48 +02:00
Khaled Hosny
10cad7be3a [feaLib] Refactor almost duplicated subtable code
Also make the code a little less ugly.
2019-03-01 01:48:48 +02:00
Khaled Hosny
226f5518b7 [feaLib] "subtable" in single substitutions 2019-03-01 01:48:48 +02:00
Khaled Hosny
3be73365a5 [feaLib] Reverse chain need not handle subtable 2019-03-01 01:48:48 +02:00
Khaled Hosny
d9893ab05a [feaLib] "subtable" in multiple substitutions 2019-03-01 01:48:48 +02:00
Khaled Hosny
c87e5cf4ad [feaLib] "subtable" in alternate lookups 2019-03-01 01:48:48 +02:00
Khaled Hosny
7454a3eb48 [feaLib] "subtable" in ligature lookups 2019-03-01 01:48:48 +02:00
Khaled Hosny
cc1b6baff7 [feaLib] "subtable" in contextual positioning 2019-03-01 01:48:48 +02:00
Khaled Hosny
47d30499a5 [feaLib] "subtable" in contextual substitution 2019-03-01 01:48:48 +02:00
Khaled Hosny
6bb0545655 [feaLib] Don’t hard-code "subtable" support
Allow for making more lookups support subtabe breaks. Although AFDKO’s
makeotf supports subtable breaks only in pair pos lookups, I believe
that is an implementation limit that we don’t have to follow; all
OpenType lookups has subtables and it should be possible to code that in
the feature files.
2019-03-01 01:48:48 +02:00
Khaled Hosny
cbd0995224 [feaLib] Fix double indentation of subtable
Similar to 05329ed033ae0aa2451272a39ada9aad9f1f5ed7.
2019-02-19 19:00:16 +02:00
Khaled Hosny
1a0aec4c56 [feaLib] Add forceChain to MultipleSubstStatement
For consistency with other substitution statements.
2019-02-19 18:59:58 +02:00
Cosimo Lupo
72e046647b
Add parentheses to clarify operators
Co-Authored-By: punchcutter <punchcutter@gmail.com>
2019-02-13 11:12:21 -08:00
punchcutter
da5b1500b9 Read special case of contextual positioning. 2019-02-12 12:35:34 -08:00
Miguel Sousa
17b2108666 [feaLib] Add 'tables' option to __main__.py
Relates to #1159
2019-02-10 22:27:26 -08:00
Khaled Hosny
c3f3606c59 [feaLib] Allow hyphen in glyph class names
Matches AFDKO’s makeotf behaviour.
2019-02-10 14:31:37 +02:00
Khaled Hosny
83434b4286 [feaLib] Escape glyph names matching keywords
Glyph names matching reserved keywords were not consistently escaped;
they were escaped in GDEF classes but not elsewhere. Call module’s
asFea() function in GlyohName.asFea() to ensure they are consistently
escaped.
2019-02-05 13:10:33 +02:00
Khaled Hosny
a291e9a2f1 [feaLib] Add table names to reserved keywords
Apparently AFDKO expects these to be escaped in glyph names.
2019-02-05 13:10:33 +02:00
Khaled Hosny
05329ed033 [feaLib] Fix double indentation of markClass
When a MarkClassDefinition is inside a block, it gets double indentation
compared to the rest of the block. It should ignore the indent argument
like other similar statements.
2019-02-05 00:46:58 +02:00
Khaled Hosny
354b89c068 [feaLib] Implement ValueRecord.asFea()
ValueRecord had a makeString() method that takes an optional “vertical”
argument, but no code outside the tests sets this argument. Renamed it
to asFea() and dropped the “vertical”, so that it consistent with the
rest of feaLib.ast classes.
2019-01-28 11:52:36 +02:00
Khaled Hosny
f48f4cc6b4 [feaLib] Round-trip useExtension keyword 2019-01-27 12:16:35 +02:00
Cosimo Lupo
23f0b5f5b1
[feaLib.builder] do not make <NULL> ValueRecord 2019-01-19 12:11:14 +00:00
Cosimo Lupo
091b05296d
[feaLib] distinguish missing value and explicit '<NULL>' for PairPos2 format A
Fixes #1459
2019-01-19 11:46:05 +00:00
Khaled Hosny
baf4f560bb [feaLib] Skip noop class PairPos subtables
If Coverage is None then the subtable is a noop that does nothing and
there is no point in building it. As a bonus, it makes OTS happy since
it will reject subtables where coverageOffset is NULL (0) and the spec
does not say whether this is allowed or not.
2018-09-16 12:23:34 +02:00
Cosimo Lupo
9536541aba
feaLib: demote warning about redefined kern pairs to debug message
https://github.com/fonttools/fonttools/issues/1147#issuecomment-421539956
2018-09-15 10:09:49 +02:00
Martin Hosken
59a4e934ee Get the fix we want 2018-09-07 15:37:33 +07:00
Martin Hosken
0902cea8b6 Fix default lookups for a language 2018-08-17 10:32:55 +07:00
Cosimo Lupo
83f9156f8d
Merge pull request #1302 from moyogo/fix-subtable-break
Fix subtable break
2018-07-26 11:16:58 +01:00
Denis Moyogo Jacquerye
18ad93fb41 feaLib: reset forceSubtableBreak_ to False 2018-07-26 11:06:24 +01:00
Cosimo Lupo
68951b7c3d
feaLib: when name table not selected, skip building featureNames blocks
ufo2ft feature writer calls feaLib builder with tables=[GSUB] first, to run closure
over glyph substitutions; if the GSUB features contains 'featureNames' blocks, then
an AssertionError will be raised; in this case, we can simply skip building the
FeatureParams tables as we haven't build the name records they point to.
2018-07-26 10:51:37 +01:00
Cosimo Lupo
9456ae9485
feaLib: support explicit 'subtable' statements in PairPos lookups
Fixes https://github.com/fonttools/fonttools/issues/1279
2018-07-24 17:13:52 +01:00
Cosimo Lupo
d3229d5777
feaLib: ensure languagesystems using 'DFLT' script tag precede all others
https://github.com/fonttools/fonttools/pull/1292#issuecomment-407427544

this is to match makeotf's behavior

https://github.com/adobe-type-tools/afdko/pull/498/files#diff-17824930b3cdfb707ae56e1f42bccec6R2305
2018-07-24 16:17:23 +01:00
Martin Hosken
d5a1e5257e Simplify code for language statement 2018-07-09 21:10:46 +01:00
Martin Hosken
d76f447775 More depths to allowing languages in DFLT 2018-07-09 16:41:54 +01:00
Martin Hosken
1ae0bf87a0 Allow any languages under DFLT script 2018-06-20 09:42:46 +01:00
Denis Moyogo Jacquerye
b3edba70e9 [feaLib] implement SubtableStatement.asFea() 2018-06-15 10:53:38 +01:00
Cosimo Lupo
fc6f758d20
feaLib: add __all__ to ast module
for * imports
2018-05-21 12:40:14 +01:00
Cosimo Lupo
88f495dd68
feaLib.parser: use set for predefined ssXX and cvXX tags
it turns out regex would be slower in this case

See comments:
7cefeadb3a (r28011318)
2018-03-15 13:07:53 +00:00
Cosimo Lupo
5c83b7483e
feaLib.parser: use class attributes for ss and cv tags; minor comment 2018-03-01 11:20:22 +00:00
Cosimo Lupo
3a41e70fd4
make 'location' optional for newly added cvXX elements 2018-03-01 10:39:17 +00:00
Miguel Sousa
7cefeadb3a
[feaLib] Improve feature tag sniffing
https://github.com/fonttools/fonttools/pull/1169#discussion_r170216680
2018-03-01 10:25:24 +00:00
Miguel Sousa
ce5cebfef2
[feaLib] Use tuple for dict key
https://github.com/fonttools/fonttools/pull/1169#discussion_r170218517
2018-03-01 10:25:24 +00:00
Miguel Sousa
6810f02528
[feaLib] Add TODOs for work needed on Lexer.NUMBER 2018-03-01 10:25:24 +00:00
Miguel Sousa
f6bcea960d
[feaLib] asFea methods for statements in cvParameters 2018-03-01 10:25:23 +00:00
Miguel Sousa
d0fd2759d4
[feaLib] Build cvParameters block 2018-03-01 10:25:23 +00:00
Miguel Sousa
9c38b8a9d0
[feaLib] Method to parse 'name' records in cvXX features 2018-03-01 10:23:54 +00:00
Miguel Sousa
0667875538
[feaLib] Method to parse Character statements 2018-03-01 10:23:54 +00:00
Miguel Sousa
82c54f4601
[feaLib] Method to parse cvParameters block 2018-03-01 10:23:54 +00:00
Miguel Sousa
dbe4dce070
[feaLib] Special handle Character Variants features (cvXX) 2018-03-01 10:23:54 +00:00