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
d3c743bb27
[feaLib] Build feature tables
2015-09-07 17:22:37 +02:00
Sascha Brawer
2537a4da29
[feaLib] Enforce uniform lookup types inside named lookup blocks
2015-09-07 16:27:12 +02:00
Sascha Brawer
0963673d58
[feaLib] Rename a test case, for consistency with other test cases
2015-09-07 16:13:34 +02:00
Sascha Brawer
80de401c09
[feaLib] Implement ligature substitutions
2015-09-07 16:10:13 +02:00
Sascha Brawer
8e8a0d68c7
[feaLib] Prohibit script
and language
statements within named lookups
2015-09-07 13:33:44 +02:00
Sascha Brawer
5f2e55d5fc
[feaLib] Emit lookups for alternate substitutions
2015-09-07 11:39:09 +02:00
Sascha Brawer
102c0e0e56
[feaLib] Handle languagesystem
, script
and languaguage
statements
...
Currently, the compiler uses them to figure out which set of
languagesystems would apply for the current scope. However, this
information is not yet used for anything.
2015-09-07 11:39:09 +02:00
Sascha Brawer
701c72116d
[feaLib] Make feaLib compliant with the PEP8 style guide
...
After this change, pep8 v1.6.2 reports no style guide violations.
2015-09-07 11:39:09 +02:00
Sascha Brawer
4f27ce3585
[feaLib] Ensure that "languagesystem DFLT dflt;" comes first
...
According the to the OpenType Feature File specification,
"languagesystem DFLT dflt;" must be the first languagesystem
statement in a file.
2015-09-07 11:39:09 +02:00
Sascha Brawer
df740092d9
[feaLib] Basic test framework for building OpenType features
2015-09-07 11:39:09 +02:00
Sascha Brawer
b54c04f1d4
[feaLib] Enforce language "dflt" for script "DFLT"
...
Also add ';' to some langaugesystem test cases. This makes the
snippets syntactically valid. The parser is still expected to
reject them for other reasons, just as before this change.
2015-09-07 11:39:09 +02:00
Sascha Brawer
9ddd313577
[feaLib] Merged LexerError and ParserError
...
This simplifies the public API to the library. For clients, it does
not matter which exact component was detecting an error. And we will
soon have more components; there would be little point in declaring
CompilerError, TableBuilderError, and so forth.
2015-09-07 11:39:09 +02:00
Sascha Brawer
f38cc9f821
Write XML for alternate glyphs (GSUB lookup type 3) in deterministic order
...
Before this change, the XML output for GSUB lookups of type 3
was not deterministic; multiple runs of TTX on the same font
could therefore emit the alternates in a different order.
Since alternate glyphs are sets, this change makes no semantic
difference to the output. However, a deterministic ordering
is needed for tests that compare GSUB tables in TTX format.
2015-09-07 11:21:17 +02:00
Behdad Esfahbod
58f86f318a
3.0
2015-08-31 18:57:15 +01:00
Behdad Esfahbod
9cbfede2a2
[subset] Minor: move pruning to right place
2015-08-24 12:48:47 +01:00
Behdad Esfahbod
6519752913
[subset] Speedup GSUB/GPOS.prune_pre_subset()
...
Instead of remapping used lookups, just nuke unused ones, as
subset_glyphs() does a remapping of used lookups already.
2015-08-24 12:45:29 +01:00
Behdad Esfahbod
8cc69ab2ed
[subset] Remove no-op Lookup.prune_pre_subset() and deps
2015-08-24 12:08:27 +01:00
Behdad Esfahbod
89f0c0ce7f
Speed up hdmx loading by using custom glyphnamed-list
...
The data-structure can be used in more places, but it's most beneficial in
this table since hdmx tables can have tens of ppem's, each having a dictionary
keyed by glyphnames...
2015-08-23 20:40:51 +01:00
Behdad Esfahbod
46840d2d32
[subset] Speed up subsetting of dictionaries
...
Speeds things up for the tables affected. But more importantly, allows for
lazy-loading of hdmx using custom data-structure coming in next patch.
2015-08-23 20:39:34 +01:00
Cosimo Lupo
ef71757a42
[woff2] cache reconstructed glyf data if requested to reconstruct loca before glyf
2015-08-19 22:58:17 +01:00
Cosimo Lupo
ef7310a293
[woff2_test] assert glyf isn't reconstructed twice if loca is accessed before
2015-08-19 22:55:24 +01:00
Cosimo Lupo
18d02aece9
[ttLib] convert KeyView object to list for py23 compatibility
2015-08-19 17:57:37 +01:00
Cosimo Lupo
3142e3319e
add reordersTables() method to SFNTWriter and WOFF2Writer (return True for the latter)
2015-08-19 17:56:46 +01:00
Cosimo Lupo
1a34f0bd38
[woff2_test] no need to reorder tables when saving test WOFF2 fonts
...
the WOFF2 encoder currently must reorder them alphabetically in any case (for compatibility with the legacy OTS), so we don't need to do it twice
2015-08-19 17:00:43 +01:00
Cosimo Lupo
ebb64da7c0
[woff2_test] fix test failing in py3
2015-08-19 16:40:45 +01:00
Cosimo Lupo
4c8960bb9a
[woff2_test] use OrderedDict like sfnt module
2015-08-19 16:36:32 +01:00
Cosimo Lupo
f083209590
[woff2] use OrderedDict like sfnt module
2015-08-19 16:36:03 +01:00
Cosimo Lupo
4fe88a41f3
[TTFont] fix reorderTable logic
2015-08-19 15:47:07 +01:00
Behdad Esfahbod
9aed8e1e9d
Merge pull request #270 from anthrotype/woff2_14
...
implement WOFF2 encoder/decoder as standalone module
2015-08-19 15:33:44 +01:00
Cosimo Lupo
6ba67ab699
[TTFont] changed behaviour of 'reorderTables' argument of save function
...
Reorder to OT spec recommended order if reorederTables == True (default).
Don't reorder if reorderTables == None.
Keep the input font original table order if reorderTables == False (and
the font has a reader object from which to get the original order).
2015-08-19 14:36:58 +01:00
Cosimo Lupo
099c260b36
[sfnt] use OrderedDict for SFNT{Reader,Writer}.tables dictionaries
2015-08-19 14:36:51 +01:00
Sascha Brawer
6c623928be
Merge pull request #334 from brawer/feaLib
...
Parser for OpenType feature files
2015-08-17 20:13:53 +02:00
Cosimo Lupo
4d6a94dfaa
[_v_h_e_a] don't recalc vertical bounds if recalcBBoxes == False
2015-08-17 10:23:03 +01:00
Cosimo Lupo
f7064535ba
[woff2_test] rename py3 deprecated 'assertRaisesRegexp' to 'assertRaisesRegex'
2015-08-11 17:47:17 +01:00
Cosimo Lupo
77b1a4aa8e
rename 'test_data' folder to 'testdata' so it matches #334
2015-08-11 16:31:09 +01:00
Sascha Brawer
fb050c7a7f
[feaLib] Parse rules for multiple substitution (GSUB LookupType 2)
2015-08-11 16:45:54 +02:00
Sascha Brawer
72c1f165b4
[feaLib] Parse substitute from
statements
2015-08-11 15:54:54 +02:00
Sascha Brawer
8b77f68dec
[feaLib] Parse feature blocks with useExtension keyword
2015-08-11 15:28:59 +02:00
Sascha Brawer
f60d49471d
[feaLib] Parse subtable
statements
2015-08-11 15:14:47 +02:00
Sascha Brawer
e132741b2c
[feaLib] Parse languagesystem
in the same way as all other statements
...
In the new version, the parse_languagesystem_() function returns
an ast.LanguageSystemStatement, which then gets appended to the
current list of statements by the caller. Before this change,
the parse_languagesystem_() function would always append the
newly parsed statement to the list of top-level statements.
In practice, it does not matter because `languagesystem` is
only valid at the top level, but there is no good reason why
the parser method would have to be different from all other
constructs.
2015-08-11 12:55:09 +02:00
Sascha Brawer
abb9edacc9
[feaLib] Parse anchorDef
statements
2015-08-11 12:53:30 +02:00
Sascha Brawer
00714511f0
[feaLib] Parse chained contextual substitution rules
2015-08-11 12:22:07 +02:00
Sascha Brawer
c165a1e019
[feaLib] Parse lookup
blocks and references
2015-08-11 10:59:26 +02:00
Sascha Brawer
6d7540ecac
[feaLib] Move block parsing to a separate method
...
We will soon support additional blocks beyond `feature`,
and keeping this refactoring separate from new functionality
makes it easier for code reviewers to follow the changes.
2015-08-11 10:19:39 +02:00
Sascha Brawer
1f2fadc864
[feaLib] Parse language
statements
2015-08-10 16:30:10 +02:00
Sascha Brawer
4ab6e6b169
[feaLib] Parse script statement
2015-08-10 11:30:47 +02:00
Sascha Brawer
4bcdc60ca8
[feaLib] Remove write() methods
...
For now, it looks like we won't need them for anything; removing this
code makes the codebase a little bit less complicated.
2015-08-10 11:24:24 +02:00
Sascha Brawer
bc8279bab1
[feaLib] Parse ignore sub
and ignore substitute
statements
2015-08-10 11:17:52 +02:00
Sascha Brawer
482c498943
[feaLib] Improve unit tests for subtitution rules
2015-08-10 11:17:52 +02:00