Sascha Brawer
dbefc71d23
[feaLib] Minor: Rename a test file, for consistency with other test caes
...
It is example 1 in section 5.f.i of the specification, and there
more examples in the same section. For consistency, use the same convention
as the other test cases.
2015-10-27 19:59:25 +01:00
Sascha Brawer
792a958d6c
[feaLib] Implement parser for multiple substitutions (GSUB LookupType 2)
...
Actually building the GSUB table is not implemented yet, since this
will probably need changes to otTables.
2015-09-08 12:05:44 +02:00
Sascha Brawer
b0bbce88b1
[feaLib] Implement Single Substitution (GSUB lookup type 1)
2015-09-08 10:33:07 +02:00
Sascha Brawer
86004df3b0
[feaLib] Reject script dflt
and language DFLT
...
These are invalid casing variants of the frequently used
`script DFLT` and `language dflt`. Adobe's makeotf tool
does a similar check.
2015-09-08 09:26:24 +02:00
Sascha Brawer
20392fb491
[feaLib] Fix test failures caused by an earlier bug fix
...
An earlier change made sure that language tags would always be
four characters in length, even when ending in whitespace.
This made a few test cases in parser_test.py fail. By accident,
I had only run builder_test (instead of all unittest in fonttools)
before committing that change.
2015-09-07 22:05:10 +02:00
Sascha Brawer
80de401c09
[feaLib] Implement ligature substitutions
2015-09-07 16:10:13 +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
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
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
Sascha Brawer
08d01bb24d
[feaLib] Parse substitution rules for LookupTypes 1 and 3
...
The parsed representation should handle most of other LookupTypes
as well, but the parser cannot recognize them yet.
2015-08-10 11:17:52 +02:00
Sascha Brawer
37fa652fa9
[feaLib] Add unit test for scoping of valueRecordDef statements
2015-08-10 11:17:52 +02:00
Sascha Brawer
c06a377aa3
[feaLib] Implement valueRecordDef statements
2015-08-10 11:17:52 +02:00
Sascha Brawer
4169e584cc
[feaLib] Clarify error message for malformed glyph class references
...
The new message makes clearer what exactly the parser was looking for
when processing a glyph class reference.
2015-08-10 11:17:52 +02:00
Sascha Brawer
bb5a7e7caf
[feaLib] Make symbol tables separate objects
...
For example, named value records follow the same scoping rules
as named glyph classes.
2015-08-10 11:17:52 +02:00
Sascha Brawer
944fab8a5f
[feaLib] Implement parsing of feature blocks
2015-08-10 11:17:52 +02:00
Sascha Brawer
3936e334f1
[feaLib] Resolve references to glyph classes
2015-08-10 11:17:52 +02:00
Sascha Brawer
a0bbd5fab9
[feaLib] Detect duplicate glyph class definitions
2015-08-10 11:17:52 +02:00
Sascha Brawer
ba238344b1
[feaLib] Implement top-level glyph class definitions
2015-08-10 11:17:52 +02:00
Sascha Brawer
b86e30d7c6
[feaLib] Rename features.py to ast.py, for Abstract Syntax Tree
2015-08-10 11:17:52 +02:00
Sascha Brawer
23997cfd95
[feaLib] Prevent deprecation warnings on Python 3
...
In Python 3, the method unittest.TestCase.assertRaisesRegexp
has been renamed to "assertRaisesRegex", and the frameworks spits
out deprecation warnings when using the method name from Python 2.
2015-08-10 11:17:52 +02:00
Sascha Brawer
05fe077654
[feaLib] Parse languagesystem
2015-08-10 11:17:52 +02:00