Khaled Hosny
b99ae0d469
[feaLib] Fix handing of duplicate LigatureCaret
...
The spec has been updated for a while to allow only one rule per glyph,
and makeotf uses the first and ignores the rest.
See https://github.com/adobe-type-tools/afdko/issues/95 , and
https://github.com/adobe-type-tools/afdko/issues/155
2019-09-26 16:44:46 +02:00
Khaled Hosny
197b36fef4
[feaLib] Don’t accept hex/octal numbers everywhere
...
Only in name, nameid, sizemenuname and Character.
2019-08-17 13:43:18 +02:00
Khaled Hosny
ae239722d4
[feaLib] Correctly handle octal numbers
...
From https://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html#9.e :
> Decimal numbers must begin with a non-0 digit, octal numbers with a 0
> digit, and hexadecimal numbers with a 0x prefix to numbers and
> hexadecimal letters a-f or A-F.
Fixes https://github.com/fonttools/fonttools/issues/1541
2019-08-17 13:43:18 +02:00
Nikolaus Waxweiler
01328213c7
Remove __future__ imports
2019-08-09 12:20:13 +01:00
Khaled Hosny
41c7760be3
[feaLib] don’t write None in ast.ValueRecord.asFea()
...
The code tries to write the short format when some values as None, but
when writing the long format it would write any None value as is which
is invalid, use 0 for None values instead.
2019-05-03 00:53:09 +02:00
Miguel Sousa
45596108e2
(Re)calculate OS/2.usMaxContext value
...
The value is only modified in the context of fontBuilder or subset. It will NOT be modified when using ttx.
maxContextCalc.py was copied from https://github.com/googlefonts/ufo2ft/blob/master/Lib/ufo2ft/maxContextCalc.py
Fixes #1191
Fixes #466
2019-04-24 18:31:12 -07:00
Khaled Hosny
45861a15ca
[feaLib] Reject invalid lookupflag without a value
...
Fixes https://github.com/fonttools/fonttools/issues/1538
2019-03-15 14:13:46 +02:00
Khaled Hosny
250eac4cae
[feaLib] Correctly handle lookupflag 0 in asFea()
...
Part of https://github.com/fonttools/fonttools/issues/1538
2019-03-15 14:13:46 +02:00
Cosimo Lupo
abae80d730
[feaLib] make 'forceChain' an optional kwarg for barkward compat
...
See discussion at:
https://github.com/fonttools/fonttools/pull/1511#issuecomment-472425283
2019-03-13 15:11:53 +00:00
justvanrossum
723e7a1d3c
updated inline github issue URLs
2019-03-06 16:01:28 +01:00
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