103 Commits

Author SHA1 Message Date
Chris Simpkins
791f619029 refactor array.tostring to array.tobytes
the array.tostring method is deprecated
2019-08-29 23:21:22 -04:00
Chris Simpkins
12814aa7b1 refactor array.fromstring to array.frombytes
fromstring is a deprecated array method
2019-08-29 22:58:42 -04:00
Nikolaus Waxweiler
01328213c7 Remove __future__ imports 2019-08-09 12:20:13 +01:00
justvanrossum
0acf7c7681 removed unused import 2019-03-03 12:27:44 +01:00
justvanrossum
7c319abbec remove some unused variables; test empty cmap for format 4 2019-03-03 11:59:59 +01:00
justvanrossum
d4a2d935c4 [cmap] changed some uses of list(map(...)) to list comprehensions an explicit loops, avoiding possibly large unneeded tmp lists; replaced use of oval() with int(); adding tests to verify all changes are covered 2019-03-03 10:30:05 +01:00
justvanrossum
d938668cc2 some purely cosmetic whitespace edits 2019-01-10 19:35:34 +01:00
Just van Rossum
6f7c0f1d09
[ttLib] cmap format 14 cleanup (#1437)
* cleanup cmap format 14 TTX format by removing redundant attributes
* don't output the name attr for a default mapping, instead of a glyph named 'None'
* still accept 'None' as an indicator glyph name, for bw compatibility
* swap order of TTX attrs uv and uvs
* make sure (unicode, glyphName) pairs are always tuples in uvsDict.
2019-01-10 19:19:35 +01:00
Behdad Esfahbod
349cd94d17 [graphite] Fix for big-endian
Make all "if sys.byteorder..." and "byteswap" be on the same line for
earsier grep verification.

Fixes https://github.com/fonttools/fonttools/issues/1311
2018-09-05 21:12:53 -07:00
Cosimo Lupo
1e42224af7 [cmap] when compiling format6 subtable, don't assume gid0 is always called '.notdef' 2017-12-15 13:56:48 +00:00
justvanrossum
7af33134a2 getBestCmap(): Expanded the list of cmap subtables to search for. Not sure how to implement the rest of Behdad's suggestions from #1092 2017-11-04 07:45:11 +01:00
justvanrossum
4e8295920a return None if no unicode cmap subtables were found 2017-11-03 16:19:48 +01:00
justvanrossum
113f9cc498 add (0, 4) to default cmaps to search for; add getBestCmap() to TTFont as well; added test for the latter 2017-11-03 16:01:45 +01:00
justvanrossum
43a39588b3 fiddled with the doc string 2017-11-03 15:16:32 +01:00
justvanrossum
9dcddb853a Added getBestCmap() convenience method to the cmap table, to return the best available unicode cmap in the font 2017-11-03 11:36:01 +01:00
Behdad Esfahbod
806b7dcd8d Minor 2017-04-14 14:30:51 -07:00
Behdad Esfahbod
84c584cfc9 [cmap] When compiling format 0, fill in non-existing entries
Fixup for 88026de5100e4b3cedf0424bcc033f76782eb99e

Fixes https://github.com/fonttools/fonttools/issues/800
2017-01-10 10:48:48 -08:00
Behdad Esfahbod
312203b661 [cmap] Skip gid=0 entries when decompiling cmap
gid=0 means "not mapped".  Many of the cmap formats use this to
optimize byte encoding.  When reading these tables, we don't
want to map charcodes to gid0 in the resulting struct.
2016-12-27 18:42:03 -05:00
Behdad Esfahbod
05950fcbab [cmap] Rewrite loop 2016-12-27 18:38:42 -05:00
Behdad Esfahbod
48f4e4ed04 [cmap] Factor out some common code 2016-12-27 18:36:59 -05:00
Cosimo Lupo
e40dffd86d [_c_m_a_p] don't set self.data = headerdata + data inside cmap_format_14.compile
self.data is usually set by decompileHeader as "the data after the header"; while here
it also included `headerdata`. This produced corrupt data if the compile method was called
again, as the header data is added again to self.data.

Moreover, in none of the subtable classes' `compile` methods, the re-compiled data is
stored in self.data, so we shall not do that for format 14 either.

Fixes #389
2016-01-31 21:00:11 +00:00
Cosimo Lupo
ff853c38b8 [_c_m_a_p] replace print with logger 2016-01-27 19:02:48 +00:00
Sascha Brawer
07458f62dd Support non-BMP characters for synthetic glyph names
When a font supplies no glyph names in its 'post' table, fontTools
builds synthetic glyph names by reversing the 'cmap' table.
After this change, the library looks at all 'cmap' subtables for
Unicode, irrespective of format or platform. For example, glyph #4
in NotoSansOldItalic-Regular.ttf gets now named "u10300" instead of
"glyph00004".

Moved the code for building a reversed 'cmap' table into the cmap class,
for easier testing.
2015-09-04 12:20:54 +02:00
Miguel Sousa
a7aef47695 fix "indentation contains mixed spaces and tabs" errors reported by Landscape 2015-08-09 00:33:50 -07:00
Cosimo Lupo
e05db5c75f [_c_m_a_p] fix compiling of cmap subtable format 6
Fixes https://github.com/googlefonts/fontbakery/issues/551

the `codes` variable needs to be a sorted list of cmap keys, else the following line
```python
codes = range(codes[0], codes[-1] + 1)
```
cannot work properly, since dict keys are unsorted.

Up until 13a08d0c3a59402459875155b7dbd194787fb229, there was a line with
```python
codes.sort()
```
which was deleted for some reason.
2015-06-27 17:01:51 +01:00
Behdad Esfahbod
c7b6d1943d Fix decompiling of cmap table
Previously, if a subtable's data was shared amongst two different encodings,
the second one being loaded was getting a cmap member assigned while retaining
its data item.  If we subset the cmap and then save that subtable, the original
unsubset data will be written out.  Fix, but removing data when assigning cmap.

Explains and obviates mystery hack in subsetter.
2015-06-22 19:14:09 -07:00
Behdad Esfahbod
3d6932549c Fix immediate decompiling of cmap subtables
This codepath never worked, and is never exercised during normal operations.
Found by landscape.io.
2015-04-26 03:01:25 -04:00
Behdad Esfahbod
b30e12ae00 More whitespace 2015-04-26 02:01:01 -04:00
Behdad Esfahbod
bd67253118 Some more whitespace fixes from pep8 tool 2015-04-26 01:59:01 -04:00
Behdad Esfahbod
5287b52d22 Whitespace 2015-04-26 00:49:36 -04:00
Behdad Esfahbod
5a18fc83e6 Add getEncoding() to cmap subtables 2015-04-19 03:50:55 -07:00
Behdad Esfahbod
4e616d2f7f Accept MS Symbol cmap tables as Unicode-compatible
Apparently these days these tables are used to encode symbols in
PUA, so they are still Unicode-compatible...

This follows a similar change in fontconfig.
2015-03-30 16:47:48 -07:00
Behdad Esfahbod
21af87536f [cmap] Split last segment of a format 4 efficiently
Fixes https://github.com/behdad/fonttools/issues/189
2015-01-22 00:10:01 -08:00
Behdad Esfahbod
9bd685a3ec [cmap] Remove bogus use of font.lazy
Ouch!
2014-07-14 20:01:04 -04:00
Behdad Esfahbod
62dd7b2a0e Refactor getSearchRange() 2014-05-27 16:01:47 -04:00
Behdad Esfahbod
9fed95216a Fix rangeShift calculations for count=0 in sfnt, cmap, and kern 2014-05-27 15:54:04 -04:00
Behdad Esfahbod
ec5f5150e2 Simplify cmap subtable format 4 idDelta code 2014-05-21 19:14:22 -04:00
Behdad Esfahbod
e7fb216ad8 Fix cmap subtable format 4 compiling
Was failing all these years, if a idDelta value happened to be
exactly -0x8000...

Test case: roundtripping MTLmr3m.ttf.
2014-05-21 19:14:03 -04:00
Behdad Esfahbod
4c777d3465 Typo 2014-05-21 17:57:14 -04:00
Behdad Esfahbod
d56eebfa96 Use .extend() syntax instead of += for sets 2014-05-14 00:22:14 -04:00
Behdad Esfahbod
470d610eb2 Further micro-optimize cmap subtable format 4 loading 2014-05-14 00:12:03 -04:00
Behdad Esfahbod
2db5eca0df Micro-optimize cmap subtable format 4 loading 2014-05-14 00:08:15 -04:00
Behdad Esfahbod
0d182bfb80 Speed up cmap format 4 loading
From quadratic to linear.  Sigh.
2014-05-14 00:00:47 -04:00
Behdad Esfahbod
da223b8fa8 Minor optimization 2014-05-09 17:05:32 -04:00
Behdad Esfahbod
0f74e80d59 Add isUnicode() and isSymbol() to cmap subtables 2014-03-12 12:17:33 -07:00
Behdad Esfahbod
1ae29591ef from __future__ import absolute_import
Such that our Python 2 is closer to Python 3.

Part of https://github.com/behdad/fonttools/issues/77
2014-01-14 15:07:50 +08:00
Behdad Esfahbod
1a4f96b787 Remove total_ordering
Upon studying further, we don't need it.  Since we only expect
comparing objects of the same type, just having __lt__ is enough.
2013-12-07 12:17:32 -05:00
Behdad Esfahbod
273a90074a Return NotImplemented 2013-12-07 03:40:44 -05:00
Behdad Esfahbod
56da965344 Add @total_ordering to classes with __lt__ 2013-12-07 03:35:16 -05:00
Behdad Esfahbod
dc87372c88 Use True/False instead of 1/0 2013-12-04 21:28:50 -05:00