Behdad Esfahbod
c511745b2e
Work around a Jython bug:
...
>>> import array; array.array("f", array.array("b", [1,2,3]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only extend with array of same kind
>>> import array; array.array("f", list(array.array("b", [1,2,3])))
array('f', [1.0, 2.0, 3.0])
2015-03-17 15:32:57 -07:00
Behdad Esfahbod
8ef5adc4af
Move draw() implementation to a better place
2015-01-08 12:28:42 -08:00
Behdad Esfahbod
3715f2d354
Unbreak Python3
...
Fixes https://github.com/behdad/fonttools/issues/197
2014-12-01 13:33:19 -08:00
Behdad Esfahbod
b342a27430
Add glyf.Glyph.trim() that removes padding and if asked hinting
2014-08-15 14:34:03 -04:00
Behdad Esfahbod
5ba7d98a41
[glyf] Only pad glyphs that are odd-lengthed
...
Ouch! Thinko.
2014-07-23 16:36:31 -04:00
Behdad Esfahbod
5ed7d154a9
Turn assert into warning
2014-07-23 16:28:34 -04:00
Behdad Esfahbod
3a10a6546c
[glyf] Don't pad when removing hinting instructions
...
Finishes recent changes.
2014-07-22 21:48:19 -04:00
Behdad Esfahbod
9ab98b2d65
Adjust previous commit
2014-07-22 17:39:17 -04:00
Behdad Esfahbod
eef4daeeaa
Add padding to glyphs only if it makes it possible to use short loca
...
Otherwise don't add padding. This is against the spec, but "should"
work everywhere. The spec only says offsets "should" be padded:
"""Note that the local offsets should be long-aligned, i.e., multiples
of 4. Offsets which are not long-aligned may seriously degrade
performance of some processors."""
We don't add any padded that we absolutely don't have to. Should save
an average of one byte per glyph on large fonts.
2014-07-22 16:00:24 -04:00
Behdad Esfahbod
30ff4ab869
Minor debug output improvement
2014-07-22 15:37:17 -04:00
Behdad Esfahbod
e6adebdc4a
Make glyf-table glyph loading lazy by default
...
When I added the font.lazy setting, I made glyf table non-lazy
by default. This is helpful to users who typically access glyphs
like:
glyf_table.glyphs[glyfname]
instead of the correct way:
glyf_table[glyfname]
and also forget to call expand() on the glyph. However, this
significantly slows down most scripts that load the font without
lazy=True... As such, add a third mode to laziness. By default
lazy=None and does NOT expand glyphs. If lazy=False is passed
in, all glyphs are loaded.
I hope this is an acceptable middle ground and not too confusing.
2014-07-14 20:02:37 -04:00
Behdad Esfahbod
671bca785d
[glyf] Align glyphs at word boundaries, not long
...
Saves two bytes per glyph on average. Or as Roozbeh reports,
70kb in DroidSansFallbackFull.ttf.
2014-07-14 19:53:42 -04:00
Behdad Esfahbod
83a89c123f
Fix isComposite with empty glyphs
...
Was broken in 626107c8.
2014-06-25 19:02:04 -06:00
Behdad Esfahbod
487b15fd94
Add a few __delitem__ implementations
2014-05-14 13:51:10 -06: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
Khaled Hosny
9c573019d5
Fix compiling back Times New Roman font
...
This has been broken since f2c2b4d38bd7bba23db71936262db984e4b7aebb,
assigning a new object to a function argument will not change the
original one, so we need to return the modified list.
2013-12-07 12:08:09 -05:00
Behdad Esfahbod
273a90074a
Return NotImplemented
2013-12-07 03:40:44 -05:00
Behdad Esfahbod
8ea6439d3b
Implement __ne__ when __eq__ is defined
2013-12-06 22:25:48 -05:00
Behdad Esfahbod
dc87372c88
Use True/False instead of 1/0
2013-12-04 21:28:50 -05:00
Behdad Esfahbod
f2c2b4d38b
Improve composite glyph bounds calculation
...
Extend GlyphCoordinates to transparently support float coordinates.
As a result, transformed glyph components now don't have their
coordinates rounded anymore. This slightly changes bounding box
calculations.
There's also code added, but disabled, to calculate exact glyph
bounding box, but we don't seem to actually want that.
2013-12-01 13:36:09 -05:00
Behdad Esfahbod
1336105c31
py23 Use fixedToFloat() in glyf table
...
Sample output:
Before: <component ... scale="0.599975585938" flags="0x1004"/>
After: <component ... scale="0.6" flags="0x1004"/>
Now the Python 2 and 3 outputs agree on these.
2013-11-28 18:53:30 -05:00
Behdad Esfahbod
e388db566b
py23 Use new-style classes
...
Such that we get the same semantics in both Python 2 and 3.
2013-11-28 18:53:30 -05:00
Behdad Esfahbod
5f6418d9e1
py23 Turn Unicode XML parsing on; more bytes fixes
2013-11-28 17:32:43 -05:00
Behdad Esfahbod
821572c9a9
py23 Add bytesjoin()
2013-11-28 17:32:43 -05:00
Behdad Esfahbod
b7fd2e1913
py23 Remove uses of __cmp__ and cmp()
2013-11-28 17:32:42 -05:00
Behdad Esfahbod
319c5fd10e
py23 introduce byteord() and use it
2013-11-28 17:32:42 -05:00
Behdad Esfahbod
32c10eecff
py23 from __future__ import division and adjust divisions
2013-11-28 17:32:42 -05:00
Behdad Esfahbod
30e691edd0
py23 from __future__ import print_function
2013-11-27 17:27:45 -05:00
Behdad Esfahbod
7ed91eca1e
py23 import in all nontrivial source files and unused import cleanup
2013-11-27 15:25:00 -05:00
Behdad Esfahbod
14fb031125
Remove most uses of module string
2013-11-27 14:01:44 -05:00
Behdad Esfahbod
b774f9f684
2to3 --fix=types manual additions
...
Don't know why the tool didn't catch these.
2013-11-27 14:01:44 -05:00
Behdad Esfahbod
e5ca79699d
2to3 --fix=map with manual cleanup
2013-11-27 04:38:16 -05:00
Behdad Esfahbod
ac1b435946
2to3 --fix=idioms
2013-11-27 04:15:34 -05:00
Behdad Esfahbod
97dea0a5d0
2to3 --fix=xrange
2013-11-27 03:34:48 -05:00
Behdad Esfahbod
3a9fd30180
2to3 equivalent to --fix=tuple_params
...
I hope I got this all right...
2013-11-27 03:30:21 -05:00
Behdad Esfahbod
cd5aad92f2
2to3 --fix=raise
2013-11-27 02:42:28 -05:00
Behdad Esfahbod
180ace6a5f
2to3 --fix=ne
2013-11-27 02:40:30 -05:00
Behdad Esfahbod
2b06aaa2a6
2to3 --fix=import
2013-11-27 02:34:11 -05:00
Behdad Esfahbod
bc5e1cb195
2to3 --fix=has_key
2013-11-27 02:33:03 -05:00
Behdad Esfahbod
66214cbe8c
2to3 --fix=apply
2013-11-27 02:18:18 -05:00
Behdad Esfahbod
3d8d5cd10d
Port ttLib to respect font.lazy
...
I *hope* I didn't break anything...
Notably, cffLib is not ported yet.
2013-11-24 19:58:57 -05:00
Roozbeh Pournader
dec666aa05
Only modify the loca table is there is such a table.
2013-11-14 18:52:15 -05:00
Behdad Esfahbod
cd4fac4f4a
Avoid overflow when compiling glyf table
...
https://github.com/behdad/fonttools/pull/25
2013-11-14 17:07:35 -05:00
Behdad Esfahbod
c55d592661
Remove unreachable code
2013-11-14 17:07:16 -05:00
Behdad Esfahbod
0ba7aa7ab5
Make __cmp__() functions stable
2013-10-28 12:07:15 +01:00
Behdad Esfahbod
2e998ea692
Fix GlyphCoordinates slicing
...
Based on patch from Roozbeh.
2013-09-29 14:02:27 -04:00
Behdad Esfahbod
043108cbdb
[subset] Fix glyf component closure
...
https://github.com/behdad/fonttools/pull/11
2013-09-27 16:29:50 -04:00
Behdad Esfahbod
bb56ddb971
Fix composite glyph coordinate routines
...
Ouch, was modifying the component's own coordinates before.
2013-09-20 16:36:10 -04:00
Behdad Esfahbod
70fee1648a
Fix glyph removeHinting re padding
2013-09-20 16:36:05 -04:00
Behdad Esfahbod
626107c833
Move some methods from subset.py to 'glyf' table implementation
2013-09-20 16:36:00 -04:00