1738 Commits

Author SHA1 Message Date
Jens Kutilek
55cda3901c Only emit a cvar tuple if any delta is not zero. 2017-10-09 17:30:27 +02:00
Jens Kutilek
f7c4995413 Set correct expected control value 2017-10-09 13:22:33 +02:00
Jens Kutilek
9209da1bc3 Add cvt table to test data 2017-10-09 13:18:59 +02:00
Jens Kutilek
5b39aa7af2 Implement building cvar tables 2017-10-09 13:08:55 +02:00
Jens Kutilek
f0d5db9975 Add cvt tables to test data 2017-10-06 11:47:20 +02:00
Jens Kutilek
80414303d0 Add interpolation of cvt/cvar table 2017-10-05 13:32:06 +02:00
Bill Amidei
11bfd82854 Added xmlReader test for sub_file 2017-10-03 09:07:07 -07:00
Cosimo Lupo
2e4b1d05df [timeTools_test] use pytest.raises to catch ValueError 2017-10-02 14:19:01 +01:00
Khaled Hosny
4b3a2eb1d9 Respect SOURCE_DATE_EPOCH for time stamp
For reproducible builds, check the presence of SOURCE_DATE_EPOCH
environment variable and use it for the time stamp. This affects the
head.modified (and head.created in merge.py).

See https://reproducible-builds.org/specs/source-date-epoch/
2017-10-02 11:37:00 +02:00
Denis Moyogo Jacquerye
7f352b028b TSI tables content as utf-8 and unicode instead of bytes (#1060)
* TSI tables content as unicode

* TSI1: update tests for utf-8
2017-09-21 18:04:57 +02:00
Martin Hosken
b0ae563d4d Add Graphite table tests 2017-09-19 15:45:44 +02:00
Cosimo Lupo
de59719db4 move stuff to fontTools.svgLib.path sub-package
in case later on we want to add things to svgLib which don't have to do with paths specifically
2017-09-12 22:21:20 -04:00
Cosimo Lupo
ecf781cfce move fontTools.misc.svgPath to fontTools.svgLib 2017-09-12 08:46:04 -04:00
Cosimo Lupo
69a75f5f3a [Tests/misc/svgPath] add tests for SVGPath and parse_path 2017-09-11 17:38:33 +01:00
Sascha Brawer
db0d193db6 [AAT] Support cidg table with CID-to-glyph mapping 2017-09-06 12:52:22 +02:00
Sascha Brawer
0f05f824d2 [AAT] Support gcid table with glyph-to-CID mapping 2017-09-06 01:40:49 +02:00
Sascha Brawer
ee1662e57e [AAT] Support morx tables with contextual substitution 2017-09-05 23:01:21 +02:00
Sascha Brawer
31b02d0bed [AAT] Support morx tables with Rearrangement subtables 2017-09-04 21:26:53 +02:00
Sascha Brawer
49fc88244b [AAT] Write AATLookups to XML in alphabetical order again
The XML output for other tables is also sorted alphabetically
by glyph name, not by glyph order.

This reverts commit c77e9fe12d5879aeb79c05f8ececebb3275524b7.
2017-09-01 15:56:21 +02:00
Sascha Brawer
c77e9fe12d [AAT] Write AATLookups to XML in glyph order
Before this change, the AAT lookups were alphabetically sorted by glyph name,
but it seems more natural to write XML in the usual glyph order. No changes to
the binary format (which already was in glyph order); this only affects how
XML output is produced.
2017-08-31 17:50:45 +02:00
Sascha Brawer
f80b341977 [AAT] Another unit test for decoding the ankr anchor points table 2017-08-31 14:44:24 +02:00
Sascha Brawer
898f6911f8 [AAT] Implement subsetting of anchor points table 2017-08-31 12:49:55 +02:00
Sascha Brawer
92124ee5a6 [AAT] Implement anchor point table
The AAT `ankr` anchor point table is an auxiliary table for `kerx`,
used to store anchor overrides in case the glyph itself does not
supply the needed anchors as control points. Among the fonts that
come pre-installed with MacOS 10.12.6, `ankr` is used by a handful
of non-Latin fonts such as “Myanmar MN”, “Devanagari Sangam MN”,
and “Arial HB”.

https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ankr.html
2017-08-31 11:45:18 +02:00
Sascha Brawer
90f257cc60 [AAT] Support mort and morx tables with non-contextual substitutions
Other metamorphosis types are not yet supported and will raise an error
upon decompilation. The TTX tool catches the error and continues to emit
a hexdump of the table contents, just as before this change.
2017-08-30 14:46:34 +02:00
Sascha Brawer
307d0d4c57 [AAT] Implement subsetting of baseline table 2017-08-26 09:53:04 +02:00
Sascha Brawer
16a4001901 [AAT] Implement subsetting of lcar ligature carets table 2017-08-25 07:35:13 -07:00
Sascha Brawer
13fe9b5c34 [AAT] Make lcar ligature carets table a format-switching table
For consistency with other AAT tables, and to support additional
formats in the (rather unlikely) case those would ever be defined.
2017-08-25 14:53:43 +02:00
Sascha Brawer
f5793401ce [AAT] Implement bsln baseline table
The AAT baseline table uses arrays whose length is constant instead of
getting encoded in the data. Extended otBase to support such arrays.
2017-08-25 03:55:06 -07:00
Sascha Brawer
84b0cacf95 [AAT] Implement subsetting of opbd Optical Bounds table 2017-08-22 14:36:05 -07:00
Sascha Brawer
28b179a018 [AAT] Implement subsetting of prop table with AAT glyph properties 2017-08-22 08:06:59 -07:00
Sascha Brawer
2f69d2959c [AAT] Fix decompilation of AppleChancery and other AAT fonts
Fixes https://github.com/fonttools/fonttools/issues/1031.
2017-08-19 20:41:43 -07:00
Cosimo Lupo
4bf68d82bc [otConverters_test] add tests for _LazyList 2017-08-18 17:26:35 +01:00
Sascha Brawer
a47f658855 [AAT] Support the opbd table with optical bounds
Interestingly, this can handle the examples from the AAT specification
(which are part of the unit tests), and also most AAT fonts on my disk.
However, some other AAT fonts such as Apple Chancery cannot be decompiled.
The failure seems to be a general problem with how fonttools decompiles
AAT lookups of format 4, and unrelated to this present change.
2017-08-18 08:39:44 -07:00
Sascha Brawer
d05617b4bd [AAT] Support prop table with glyph properties 2017-08-17 11:09:53 -07:00
Cosimo Lupo
ed0d09be22 Merge pull request #1026 from anthrotype/avar-tests
[varLib] add tests for avar; always include default maps
2017-08-17 11:12:37 +01:00
Sascha Brawer
d11e7d98e8 [AAT] Support lcar table 2017-08-16 11:47:27 -07:00
Cosimo Lupo
8f5929879d [varLib_test] minor
There must be some keystroke in my text editor that triggers these
strange non-ASCII unprintable characters...

I didn't have time to investigate.
2017-08-16 19:04:13 +01:00
Cosimo Lupo
2524d76bdb [varLib/data] add UFO sources for Noto Sans subset
used to build the the interpolatable ttx files.

We can reuse it for other variation-related tests.
2017-08-16 18:46:38 +01:00
Cosimo Lupo
45c08d2858 [varLib_test] add tests for building avar table
this adds three new tests for varLib.build:

1) the input designspace contains a single 'weight' axis with <map>
   elements that modify the normalization mapping;

2) the input designspace contains two 'weight' and 'width' axes both
   with <map> elements, but the 'width' axis only contains identity
   mappings;

3) the input designspace contains two 'weight' and 'width' axes, but
   only one axis ('weight') has some <map> elements.

The master interpolatable ttx files for 'TestFamily3' are a subset of
Noto Sans containing only the letters to type the word "FontTools".
2017-08-16 18:44:18 +01:00
Sascha Brawer
ff7cf27777 [AAT] Fix binary search headers of AATLookup formats 2 and 6
In format 2 and 6, AAT lookups contain a binary search header with
the number of elements in the lookup table. Before this change, the
element count would also include the special trailing end-of-table
value that is required by the font format specification.  However,
the binary search header should only count the actual elements
without the trailer.

Also, in the examples from the AAT specification, the special
end-of-table entries use 0xFFFF for glyph ID keys, and zeroes
for the filler values. Before this change, we had filled the
values with 0xFF bytes.
2017-08-16 19:43:25 +02:00
Sascha Brawer
4cf76edd87 [AAT] Delegate XML reading and writing to value class converter
Before this change, the code assumed that all values of AAT lookups
get internally represented as strings, which is correct for GlyphID
values but not generally the case.

Also renaming the XML element from `Substitution` to `Lookup`
because AAT lookups have other uses beyond glyph substitutions.
2017-08-15 19:40:50 +02:00
Sascha Brawer
228550a1d2 [AAT] Do not prune AATLookup values
Before this change, the decoder would silently remove "redundant" values
when decompiling AAT lookups. However, it is perfectly valid for a lookup
to map a glyph ID to itself, and also not all AAT lookups have glyph IDs as
their value range.
2017-08-15 18:33:57 +02:00
Sascha Brawer
020f7391ef [morx] Parametrize AATLookup value type in otData 2017-08-14 21:34:15 +02:00
Sascha Brawer
61874d3600 [morx] Generalize AATLookup to other value types
With AAT, the same lookup data structure can be used for various
types of values. In the morx table, the values are glyph IDs or
glyph classes, which both are encoded as 16-bit unsigned integers.
In other AAT tables, however, the values can be different data types
with different encodings. By passing a `valueWriter` callback and
explicit `valueSize`, we prepare for eventually templatizing
the building of AATLookups.

Also, assert that the called writer wrote the exact number of bytes
that was predicted when figuring out what format should be used for
encoding an AATLookup.
2017-08-14 21:34:15 +02:00
Sascha Brawer
7f2007f46c [morx] Write AATLookup format 8 2017-08-14 21:34:15 +02:00
Sascha Brawer
91827e663f [morx] Write AATLookup format 2 2017-08-14 21:34:15 +02:00
Sascha Brawer
68dc15375b [morx] Fix output for AATLookup format 6
We now produce the correct binary search headers, and add a fake item
for terminating the binary search.
2017-08-14 21:34:15 +02:00
Sascha Brawer
57f01b27cb [morx] Preliminary code for writing AATLookups
Needs more work.
2017-08-14 21:34:15 +02:00
Sascha Brawer
4b5b8ea53d [morx] Implement AATLookup.xmlRead 2017-08-14 21:34:15 +02:00
Sascha Brawer
b40ba05f6f [morx] Group AATLookup substitutions into a parent XML element 2017-08-14 21:34:15 +02:00