3791 Commits

Author SHA1 Message Date
Behdad Esfahbod
17dfafdd15 [subset] Minor; towards refactoring 2017-02-14 23:49:02 -08:00
Behdad Esfahbod
6978111785 [subset] Minor; towards refactoring 2017-02-14 23:44:17 -08:00
Behdad Esfahbod
2348522167 [subset] Minor; towards refactoring 2017-02-14 23:42:45 -08:00
Behdad Esfahbod
e4a853466d [subset] Adjust comment for previous fix 2017-02-14 23:25:37 -08:00
Cosimo Lupo
3a8f976cfe
[subset_test] add two test cases for subr starting with hintmask, one acting as implied vstem, the other occurring after path drawing operations 2017-02-14 23:00:17 -08:00
Cosimo Lupo
3ae59d3dce
[subset] minor: use for ... else 2017-02-14 22:56:48 -08:00
Behdad Esfahbod
0fd22766b8 Merge pull request #709 from anthrotype/cff-dehint-2
[subset] second attempt at fixing --no-hinting with CFF
2017-02-14 22:05:25 -08:00
Sascha Brawer
e97b864cfc [feaLib] Use assertEqual instead of deprecated assertEquals
On Python 3, any use of `assertEquals` logs a deprecation warning.
2017-02-14 20:20:22 +01:00
Sascha Brawer
eac7ef89c0 [feaLib] Make nameid parsing more robust
We now correctly handle nameid statements with surrogate pairs and
old-style macOS-encoded names (provided that fonttools supports the
specified encoding).

Resolves https://github.com/fonttools/fonttools/issues/842.
2017-02-14 14:28:10 +01:00
Sascha Brawer
b22df7ff48 [feaLib]Escape nameid strings when writing feature files
https://github.com/fonttools/fonttools/issues/780
2017-02-14 11:02:12 +01:00
Sascha Brawer
7cf22d01ae [feaLib] Move test file include0.fea into test data subdirectory
Move the other include files into a new subdirectory inside `data`.
Mention the changed behavior of include statements in NEWS.
See https://github.com/fonttools/fonttools/pull/838.
2017-02-13 09:19:41 +01:00
Miguel Sousa
75133fc4d1 [feaLib] Make include() work like makeotf 2017-02-13 08:42:03 +01:00
Cosimo Lupo
78d11e3a0f
Bump version: 3.7.0 → 3.7.1.dev0 2017-02-11 10:04:59 -08:00
Cosimo Lupo
9207b1397a
Release 3.7.0 2017-02-11 10:02:58 -08:00
Sascha Brawer
5ba9df952a Mention in NEWS that bug 833 has been fixed
https://github.com/fonttools/fonttools/issues/833
2017-02-11 17:11:18 +01:00
Sascha Brawer
706858646a Preserve ordering of glyph alternates when round-tripping through TTX
Also fixes a bug where glyph alternates in MTI feature files were
wrongly sorted by glyph name. After this change, the output is using
the same ordering as in the input MTI feature file.

Fixes https://github.com/fonttools/fonttools/issues/833.
2017-02-11 17:08:56 +01:00
Sascha Brawer
a9201196a9 Tell git to ignore *.egg packages
For example, `sh run-tests.sh` lays a lot of eggs.
2017-02-11 15:59:30 +01:00
Sascha Brawer
b31ed09421 Support glyph names with dashes
The OpenType Feature File Syntax has been changed to support dashes:
https://github.com/adobe-type-tools/afdko/issues/152

Resolves https://github.com/fonttools/fonttools/issues/559.
Needed for https://github.com/googlei18n/fontmake/issues/249.
2017-02-11 15:57:17 +01:00
Behdad Esfahbod
d7e8af9510 [varLib] Fix regression where GPOS values were stored as 0
Another fallover from merging of VariationMerger and InstancerMerger.

New code is closer to the selfless merger we want to have.

Fixes https://github.com/fonttools/fonttools/issues/834
2017-02-09 19:35:24 -08:00
Behdad Esfahbod
d801056100 [varLib] Allow merging of class-based kerning when ClassDef1's are different
This should allow building varfonts for a whole class of font sources
that failed so far.
2017-02-08 14:29:02 -08:00
Behdad Esfahbod
9544a538ee [varLib] Minor rename in prep for ClassDef1 merging 2017-02-08 14:14:08 -08:00
Behdad Esfahbod
dc07fe4f8f [varLib] Allow merging of class-based kerning when ClassDef2's are different
With this, we can build varfont for NotoSansThai and a couple more.

This is the first use of fontTools.misc.classifyTools module.
2017-02-07 16:09:14 -08:00
Cosimo Lupo
2ebd861eff
Bump version: 3.6.3 → 3.6.4.dev0 2017-02-06 13:40:40 +00:00
Cosimo Lupo
41d8d2a309
Release 3.6.3 2017-02-06 13:22:48 +00:00
Cosimo Lupo
8bc5526715
Update changelog 2017-02-06 13:22:28 +00:00
Behdad Esfahbod
ef0eb9dc8f [varLib] Move code around 2017-02-05 18:52:27 -08:00
Behdad Esfahbod
b5c34ceb15 [varLib] Fix building variation of PairPosFormat2
I broke this with a738464f775c190bf70e26d0a32ff2344ec43201
Ouch!
2017-02-05 18:48:15 -08:00
Behdad Esfahbod
e45297bf4b Populate defaults even for tables that have postRead
Implement custom populateDefaults for them.
2017-02-03 14:33:57 -08:00
Behdad Esfahbod
b887860b65 Fix compiling of MultipleSubstFormat1 with zero out glyphs
str.split('') returns [''], whereas we expect [].
Fix that.
2017-02-02 15:49:09 -08:00
Cosimo Lupo
41099fd376
Bump version: 3.6.2 → 3.6.3.dev0 2017-01-30 17:25:52 +00:00
Cosimo Lupo
d67135852f
Release 3.6.2 2017-01-30 17:24:57 +00:00
Cosimo Lupo
4f8f64e14e Merge pull request #827 from anthrotype/reduce-empty-sequence
[varLib.merger] set initializer for reduce() to handle empty sequences
2017-01-30 17:17:40 +00:00
Cosimo Lupo
3717dc6549
[varLib.merger] set initializer for reduce() to handle empty sequences; import reduce from functools for py3
When reduce() receives an empty sequence, it raises TypeError, unless it is given a third 'initializer' argument

ValueFormat values should default to 0, so we shall use that as initializer.

Also, the reduce() built-in is no longer available on Python 3.
It's still accessible for both py2 and py3 from functools.

Fixes https://github.com/googlei18n/fontmake/issues/241
2017-01-30 16:51:41 +00:00
Cosimo Lupo
1cf852bb3f
Bump version: 3.6.1 → 3.6.2.dev0 2017-01-28 16:16:25 +00:00
Cosimo Lupo
0617123053
Release 3.6.1 2017-01-28 16:01:32 +00:00
Cosimo Lupo
17cf2f262a
Update changelog 2017-01-28 16:01:22 +00:00
Cosimo Lupo
972b3e6a15
[py23] handle exception at shutdown in 'lastResort' logging handler
On python2.7, the fonttools py23 module registers a 'lastResort' StreamHandler
similar to the one found in python3's logging module, that always writes
to the current value `sys.stderr`.

This also applies to any python library that imports from fontTools.misc.py23
under python2.7.

The logging module has a 'shutdown' atexit handler that flushes all the
logging handlers' streams just before the python interpreter exits.

Sometimes (e.g. when calling `python setup.py test` as in MutatorMath's test
suite), the interpreter termination ends with a traceback, which is
triggered by the atexit handler failing to flush the lastResort handler's
stream, sys.stderr

AttributeError: None has no attribute 'stderr'

This is because during module teardown, the globals (in this case 'sys')
are set to None, and the order in which modules are deleted is not
guaranteed.

See 58531934a8
2017-01-28 14:18:29 +00:00
Cosimo Lupo
d8c40583d1
[agl] ensure AGL glyph names are 'str' type
We are using unicode_literals in this module since 329261b.
Because of that, on py27 sometimes a TTFont glyphOrder may end up with
a mix of `str` and `unicode` glyph names.
While I'd love to change every single 'text' string to unicode, maybe
in this case it makes sense to use the native `str` type (`bytes` on
py2, unicode string on py3) for the UV2AGL and AGL2UV dictionaries, as
glyph names can only contain ascii characters anyway.

See https://github.com/fonttools/fonttools/pull/774#discussion_r98327429
2017-01-28 11:48:51 +00:00
Cosimo Lupo
93b97510bc
[README.rst] fix issue with inconsistent RST title level
In the latest PyPI release 3.6.0, an incosistency in the title levels between
README.rst and NEWS.rst caused PyPI to not correctly format the reStructuredText
document.

I've fixed the PKG-INFO manually for the current release:
https://pypi.python.org/pypi/FontTools/3.6.0

The next release should be fine.
2017-01-27 14:46:39 +00:00
Cosimo Lupo
a9dcf1c1b0
Bump version: 3.6.0 → 3.6.1.dev0 2017-01-26 19:52:25 +00:00
Cosimo Lupo
18b6459ce2
Release 3.6.0 2017-01-26 19:50:17 +00:00
Cosimo Lupo
fe3c08b373
Update changelog 2017-01-26 19:49:49 +00:00
Cosimo Lupo
2b76efb4ad
[subset] set has_hint if a subr contains hintmask acting as implicit vstemhm
When a subroutine contains no explicit hint stem operators (has_hint=False),
but it contains a hintmask operator which, in the context of the calling
charstring, would be understood as implying a vstemhm, then we need to set
has_hint=True on the subroutine, and update the last_hint index.

Otherwise, the drop_hints function leaves behind the arguments of the implicit
vstemhm operator.

This case is exemplified in the test font Tests/subset/data/Lobster.subset.ttx,
for charstrings "B" and "B.salt", and subroutine index="2".

--- /Users/cosimolupo/Documents/Github/fonttools/Tests/subset/data/expect_no_hinting_CFF.ttx
+++ /var/folders/jb/rjz76yw92w7144mwqg119jnm0000gn/T/tmpO_XOWh/tmp3.ttx
@@ -47,7 +47,7 @@
             107 return
           </CharString>
           <CharString index="2">
-            230 636 rmoveto
+            119 230 636 rmoveto
             -136 -636 rlineto
             144 hlineto
             return
@@ -94,7 +94,7 @@
           endchar
         </CharString>
         <CharString name="B">
-          187 -105 callsubr
+          187 6 93 362 139 -119 101 -101 -105 callsubr
           82 383 rlineto
           2 18 20 1 8 hhcurveto
           73 22 -57 -70 hvcurveto
@@ -109,7 +109,7 @@
           endchar
         </CharString>
         <CharString name="B.salt">
-          185 -105 callsubr
+          185 6 93 350 149 -119 105 -105 -105 callsubr
           6 30 rlineto
           -41 39 41 -17 39 hhcurveto
           125 110 175 136 72 -32 62 -82 15 hvcurveto
2017-01-26 12:23:51 +00:00
Cosimo Lupo
dcaf27d726
[subset] set the width on _DehintingT2Decompiler and avoid extra draw()
_DehintingT2Decompiler now inherits from T2WidthExtractor, so we can save
the charstring width and insert it back after we dropp the hints.

This avoids the need to do an extra .draw() just for the sake of
extracting the width.
2017-01-26 12:09:37 +00:00
Cosimo Lupo
3bb50b9b7f
[psCharStrings] split width-extracting part of T2OutlineExtractor into T2WidthExtractor
We shall reuse it as base class for the _DehintingT2Decompiler in subset module,
as we need to save the width in order to re-insert it after dropping the hints.
2017-01-26 11:55:13 +00:00
Behdad Esfahbod
a738464f77 [varLib] Let VariationMerger use AligningMerger for PairPos
VariationMerger now has all the intelligence of AligningMerge.
Should be good for a while...
2017-01-25 23:34:28 -08:00
Behdad Esfahbod
dd6fb82d66 [varLib] Move common code into a parent merger 2017-01-25 20:43:00 -08:00
Behdad Esfahbod
fece08bc32 [varLib] Enable subclassing of mergers
Theoretically diamond shapes and mixins should work as well.
2017-01-25 20:39:21 -08:00
Behdad Esfahbod
a34a7c906e [varLib] Towards making subclassed mergers working 2017-01-25 20:30:44 -08:00
Behdad Esfahbod
5e1be9e5e7 [varLib] Move code around 2017-01-25 20:11:35 -08:00