6375 Commits

Author SHA1 Message Date
Sascha Brawer
f45fab8c3a [feaLib] Sort GSUB glyph coverage tables by glyph ID
Before this change, feaLib would sort coverage tables by glyph name,
which is against the OpenType specification.  The current unittests
happen to use only glyphs where the ordering is identical whether
sorting by name or by ID; but I am about to add unittests (for GPOS)
where the ordering is different.

The ordering cannot be enforced by otTables because otTables does
not have access to the font's glyph order; therefore, the sorting
needs to happen inside feaLib.
2015-12-04 11:11:17 +01:00
Sascha Brawer
cab0067c7e [feaLib] Implement GSUB LookupType 8: Reverse chaining single substitutions 2015-12-03 13:05:42 +01:00
Khaled Hosny
301d2db812 [subset] Support subsetting MS color tables
Add support for subsetting COLR table.

The CPAL table does not need subsetting, but unused palettes should be
pruned, this is not implemented however as it depends on COLR table,
which in turn will not be updated after pruning CPAL.
2015-12-01 11:59:52 +04:00
Sascha Brawer
152dff4361 [feaLib] Implement GSUB chain substitution rules 2015-11-30 15:02:09 +01:00
Cosimo Lupo
2eda1785f6 [py23] fix ImportError when trying to import unichr, basestring or unicode when already defined
When one does `from fontTools.misc.py23 import *`, everything seems to work fine.

However, linters will complain when one uses the asterisk to import all names from a module, since they can't detect when names are left undefined -- asterisks are greedy and will eat all names.

If one avoids the asterik and attempts to import explicitly, like in `from fontTools.misc.py23 import basestring`, the problem then is that, if `py23` does not re-define the name -- e.g. under python2 `basestring` or `unicode` are built-ins -- then the import statement raises `ImportError`.

The same happens for the `unichr` function on a "wide" Python 2 build (in which `sys.maxunicode == 0x10FFFF`).

Now, to work around this, we need to re-assign those built-ins to their very same names. This may look silly, but at least it works.
2015-11-23 12:02:12 +00:00
Denis Jacquerye
d05df7eb7e Python 2/3: replace str by basestring 2015-11-18 13:22:14 +00:00
Behdad Esfahbod
505c1a5ea7 Fixup previous change
ecbe8f2c37 (commitcomment-14464749)
2015-11-18 00:08:49 -08:00
Behdad Esfahbod
ecbe8f2c37 Fix decompile of Neirizi 2015-11-17 23:24:03 -08:00
Behdad Esfahbod
5d41ad985e Merge pull request #411 from miguelsousa/subset_unittest
[subset] unittest & .notdef advance width fix
2015-11-16 19:00:18 -08:00
Miguel Sousa
6db7d30ed9 [subset] Preserve the .notdef glyph width when removing its outlines 2015-11-13 17:43:22 -08:00
Miguel Sousa
270b155d45 [subset] First unit tests and test data 2015-11-13 17:40:17 -08:00
Miguel Sousa
51bd7e00b5 white space 2015-11-13 17:36:13 -08:00
Miguel Sousa
29d7edf76f [subset] mv subset.py subset/__init__.py 2015-11-13 17:36:02 -08:00
Cosimo Lupo
8019069f7c [sfnt] make SFNTReader.tables an OrderedDict sorted by table offset
Fixes https://github.com/behdad/fonttools/issues/408
2015-11-13 17:38:50 +00:00
Cosimo Lupo
f10cb1f17d [macCreatorType] fix KeyError raised by old version of xattr module
in version 0.6.4 (installed on OS X 10.10 python lib/extras) it raises
KeyError, whereas in the latest version available fom PyPI (v0.7.8) it
raises IOError.

Fixes issue in https://github.com/googlei18n/nototools/issues/113
2015-11-11 00:01:50 +00:00
Cosimo Lupo
49d929681e [_p_o_s_t] remove max indices "reserved for future use"
the third (2015) edition of ISO/IEC 14496-22 "Open Font Format" increased
the limit from 32767 to 65535 (and thus eliminated the reserved numbers).

`array.array` will take care of raising the right `OverflowError` exception
so we don't need any further checking.
2015-11-10 00:11:28 +00:00
Adrien Tétar
0d3cdb1ee4 glifLib: open files as binary to avoid line-endings normalization 2015-11-08 15:41:43 +01:00
Adrien Tétar
0b60503f4f test: fix a test on Windows 2015-11-08 11:49:06 +01:00
Adrien Tétar
ae7ad468c0 stop importing robofab in the test suite 2015-11-08 11:33:29 +01:00
Adrien Tétar
e345fec96f meta: remove robofab files 2015-11-08 11:11:11 +01:00
Cosimo Lupo
491b1ebfb0 Merge pull request #401 from jamesgk/pen-tests
TTGlyphPen tests
2015-11-06 21:00:40 +00:00
James Godfrey-Kittle
45e496fdb8 [TTGlyphPen] Use bytes for array.array for python3 2015-11-06 11:50:39 -08:00
James Godfrey-Kittle
981ad5978c Add endPath method to TransformPen
I think this was just forgotten before.
2015-11-06 11:25:48 -08:00
Denis Jacquerye
5b43ab5b42 ufoLib.test.test_glifLib: undo some 2to3 2015-11-06 15:11:04 +00:00
Denis Jacquerye
3be6afbf72 ufoLib.test.test_glifLib: remove test for robofab’s glyphNameToShortFileName 2015-11-06 15:06:52 +00:00
Denis Jacquerye
929ed4454c ufoLib: drop READ_MODE and WRITE_MODE 2015-11-06 15:06:52 +00:00
Denis Jacquerye
92bf29bd70 ufoLib.glifLib: add anchors to list of attributes in description of readGlyph() and writeGlyph() 2015-11-06 15:06:51 +00:00
Denis Jacquerye
31d358af40 test_UFOConversion, test_UFO{1,2,3}: use plistlib load and dump 2015-11-06 15:06:51 +00:00
Denis Jacquerye
3df210b68f ufoLib.test.test_glifLib: testRoundTrip() anchors don't come in the same order anymore 2015-11-06 15:06:51 +00:00
Denis Jacquerye
c643b67f08 ufoLib.glifLib: glyph.drawPoints(None) should set attr anchors 2015-11-06 15:06:51 +00:00
Denis Jacquerye
e1dd985741 ufoLib.glifLib: undo some 2to3 2015-11-06 15:06:51 +00:00
Denis Jacquerye
7deef57dd0 ufoLib.__init__: add basestring in Python3 and undo 2to3 2015-11-06 15:06:51 +00:00
Denis Jacquerye
07c10687c4 test_gliflib: new file name scheme 2015-11-06 15:06:51 +00:00
Denis Jacquerye
d70348e8a7 test_gliflib: use io.open 2015-11-06 15:06:50 +00:00
Denis Jacquerye
ab842f1e01 ufoLib.test.test_UFOConversion: absolute import 2015-11-06 15:06:50 +00:00
Denis Jacquerye
9c0c7e5177 ufoLib.test.test_UFO1, test_UFO2, test_UFO3: absolute import, unicode_literals, explicit bytes, use io.open 2015-11-06 15:06:50 +00:00
Denis Jacquerye
b6cb3738c8 ufoLib.test.testSupport, test_GLIF1 and test_GLIF2: unicode_literals, use basestring 2015-11-06 15:06:50 +00:00
Denis Jacquerye
72df478a91 ufoLib.plistlib: use basestring 2015-11-06 15:06:50 +00:00
Denis Jacquerye
c74ced8246 ufoLib.plistFromTree: utf-8 is good 2015-11-06 15:06:49 +00:00
Denis Jacquerye
ba7259a99c ufoLib.plistFromTree: absolute import 2015-11-06 15:06:49 +00:00
Denis Jacquerye
3dabb84be5 ufoLib.xmlTreeBuilder: use io.open and basestring 2015-11-06 15:06:49 +00:00
Denis Jacquerye
77f2e022c7 ufoLib.validators: use io.open, use basestring instead of str 2015-11-06 15:06:49 +00:00
Denis Jacquerye
c6f84bdd9a ufoLib.glifLib: use basestring instead of str 2015-11-06 15:06:49 +00:00
Denis Jacquerye
dc94aa17a7 ufoLib.glibLib: use io.StringIO, ioBytesIO, io.open 2015-11-06 15:06:49 +00:00
Denis Jacquerye
66e5ae0242 ufoLib __init__.py: use io.StringIO, io.BytesIO, and standard plistlib load and dump 2015-11-06 15:06:49 +00:00
Denis Jacquerye
41cb5a8d4c validators: use basestring 2015-11-06 15:06:49 +00:00
Denis Jacquerye
f9ff5e5cfe filenames: use basestring 2015-11-06 14:10:43 +00:00
Denis Jacquerye
90a5af640b glifLib: add READ_BYTES_MODE and WRITE_BYTES_MODE 2015-11-06 14:10:42 +00:00
Denis Jacquerye
edfee17e5f glifLib: use basestring and glyphSet maybe None in glyphNameToFileName() 2015-11-06 14:10:42 +00:00
Denis Jacquerye
607cdf9a39 ufoLib __init__: typo 'maetainfo' -> 'metainfo' 2015-11-06 14:10:42 +00:00