2881 Commits

Author SHA1 Message Date
Cosimo Lupo
2e46476671
[cffLib] fix IndexError when dumping toXML empty deltas
$ ttx -t CFF "font.otf"
Dumping "font.otf" to "font.ttx"...
Dumping 'CFF ' table...
ERROR: Unhandled exception has occurred
Traceback (most recent call last):
  File "fonttools/Lib/fontTools/ttx.py", line 384, in main
    process(jobs, options)
  File "fonttools/Lib/fontTools/ttx.py", line 358, in process
    action(input, output, options)
  File "fonttools/Lib/fontTools/misc/loggingTools.py", line 372, in wrapper
    return func(*args, **kwds)
  File "fonttools/Lib/fontTools/ttx.py", line 258, in ttDump
    newlinestr=options.newlinestr)
  File "fonttools/Lib/fontTools/ttLib/__init__.py", line 311, in saveXML
    self._tableToXML(tableWriter, tag, progress)
  File "fonttools/Lib/fontTools/ttLib/__init__.py", line 348, in _tableToXML
    table.toXML(writer, self, progress)
  File "fonttools/Lib/fontTools/ttLib/tables/C_F_F_.py", line 42, in toXML
    self.cff.toXML(writer, progress)
  File "fonttools/Lib/fontTools/cffLib.py", line 135, in toXML
    font.toXML(xmlWriter, progress)
  File "fonttools/Lib/fontTools/cffLib.py", line 2178, in toXML
    BaseDict.toXML(self, xmlWriter, progress)
  File "fonttools/Lib/fontTools/cffLib.py", line 2128, in toXML
    conv.xmlWrite(xmlWriter, name, value, progress)
  File "fonttools/Lib/fontTools/cffLib.py", line 1120, in xmlWrite
    value.toXML(xmlWriter, progress)
  File "fonttools/Lib/fontTools/cffLib.py", line 2128, in toXML
    conv.xmlWrite(xmlWriter, name, value, progress)
  File "fonttools/Lib/fontTools/cffLib.py", line 1089, in xmlWrite
    if isinstance(value[0], list):
IndexError: list index out of range
2017-03-09 15:40:52 +00:00
Cosimo Lupo
33b42f47b6
[cffLib/psCharStrings] fix IndexError with empty deltas
After 2b2aca1, DictCompiler/Decompiler's `arg_delta` method unconditionally attempts to get the first item to check if it's a list, but this fails with `IndexError` when the value is empty.

```
Traceback (most recent call last):
  [...]
  File "/Users/cosimolupo/Documents/Github/ufo2ft/Lib/ufo2ft/otfPostProcessor.py", line 15, in __init__
    otf.save(stream)
  File "/Users/cosimolupo/Documents/Github/fonttools/Lib/fontTools/ttLib/__init__.py", line 219, in save
    self._writeTable(tag, writer, done)
  File "/Users/cosimolupo/Documents/Github/fonttools/Lib/fontTools/ttLib/__init__.py", line 658, in _writeTable
    tabledata = self.getTableData(tag)
  File "/Users/cosimolupo/Documents/Github/fonttools/Lib/fontTools/ttLib/__init__.py", line 669, in getTableData
    return self.tables[tag].compile(self)
  File "/Users/cosimolupo/Documents/Github/fonttools/Lib/fontTools/ttLib/tables/C_F_F_.py", line 20, in compile
    self.cff.compile(f, otFont)
  File "/Users/cosimolupo/Documents/Github/fonttools/Lib/fontTools/cffLib.py", line 124, in compile
    writer.toFile(file)
  File "/Users/cosimolupo/Documents/Github/fonttools/Lib/fontTools/cffLib.py", line 300, in toFile
    endPos = pos + item.getDataLength()
  File "/Users/cosimolupo/Documents/Github/fonttools/Lib/fontTools/cffLib.py", line 1858, in getDataLength
    return len(self.compile("getDataLength"))
  File "/Users/cosimolupo/Documents/Github/fonttools/Lib/fontTools/cffLib.py", line 1879, in compile
    data.append(arghandler(value))
  File "/Users/cosimolupo/Documents/Github/fonttools/Lib/fontTools/cffLib.py", line 1910, in arg_delta
    val0 = value[0]
IndexError: list index out of range
``
2017-03-09 14:21:38 +00:00
Sascha Brawer
bc0670f53f [feaLib] Simplify parser API by removing the ignore_comments option
https://github.com/fonttools/fonttools/pull/879#discussion_r104947968
https://github.com/fonttools/fonttools/issues/829
2017-03-09 22:17:58 +08:00
Sascha Brawer
04b1e8ada6 [feaLib] Recognize empty statements in all table blocks
Before this change, some table statements would allow empty statements
(just a semicolon) while others would not allow them. After this change,
we're more consistent.
2017-03-09 13:58:17 +01:00
Behdad Esfahbod
4e9806a443 [mtiLib] Be more lenient in script block parsing
Fixes https://github.com/googlei18n/fontmake/issues/258
2017-03-08 15:33:17 -08:00
Cosimo Lupo
857862b94f Merge pull request #879 from silnrsi/parsecomments
Add support for comments to parser
2017-03-08 20:55:16 +00:00
Behdad Esfahbod
fb0c60cd2c [varLib.merge] Fix tests
Set Coverage.Format to 1. This is rather arbitrary, which is exactly
why Coverage.Format doesn't make sense and should not have been
exposed to begin with.
2017-03-08 12:52:56 -08:00
Behdad Esfahbod
b73c61a3ab Revert "Revert "[merge] Fix for ClassDef.Format and Coverage.Format""
This reverts commit 7406e06aae34300cc2a17f990af5f33abc579afc.

Ouch. The revert of revert was not what I meant. :|
2017-03-08 12:49:56 -08:00
Behdad Esfahbod
7406e06aae Revert "[merge] Fix for ClassDef.Format and Coverage.Format"
This reverts commit 53d78d9956dbbfe50395bf8002b0308b375c02a9.

Now that Format is back in, merge it.

Should fix https://github.com/fonttools/fonttools/pull/878
2017-03-08 12:12:55 -08:00
Martin Hosken
5906b5358a Final changes to follow vagueries 2017-03-08 16:54:11 +00:00
Martin Hosken
2972d81d82 More pop8erry and try to minimise redundancy in the patch 2017-03-08 16:49:08 +00:00
Martin Hosken
c870cde47e Refactor to remove option in Lexer. Lexer always returns comments now 2017-03-08 16:29:55 +00:00
Martin Hosken
45a4a1f249 Add tests, rename _OMITs 2017-03-08 15:19:09 +00:00
Martin Hosken
90b57d2dec Fix bad colon 2017-03-08 14:15:34 +00:00
Martin Hosken
d5d4ea4ddc Tidy up space colon to colon in python statements 2017-03-08 14:05:00 +00:00
Martin Hosken
450d2b939e Add support for comments to parser 2017-03-08 13:50:06 +00:00
Cosimo Lupo
6731a906b4
[T_S_I_*] in VOLT's ascii tables, replace '\r' with '\n' when dumping XML
and viceversa, convert '\n' back to '\r' when reading from XML.

This restores the original newline handling of asciiTable, but only for VOLT's private tables.
2017-03-07 13:00:37 +00:00
Cosimo Lupo
996b4ba1bf
[asciiTable] don't normalize newlines when in {from,to}XML
b12a59c5e7 (commitcomment-21184558)
2017-03-07 12:59:32 +00:00
Behdad Esfahbod
b12a59c5e7 Actually add TTFA impl 2017-03-07 00:21:40 -08:00
Behdad Esfahbod
48bb7cda7c Add 'TTFA' table
Apparently this is an ASCII table used by ttfautohint to record
used settings.
2017-03-06 18:08:19 -08:00
Cosimo Lupo
ca235ea8a1
[cffLib] fix "TypeError: cannot use a string pattern on a bytes-like object"
This is just to make the tests pass, otherwise the following re.sub call fails with TypeError on Python 3.

However, I wonder why we need to replace all newlines with spaces in 'Notice' and 'Copyright' fields?

```
if name in ['Notice', 'Copyright']:
    value = re.sub(r"[\r\n]\s+", " ", value)
```

We shall ask Read about this.
2017-03-05 23:11:41 +00:00
ReadRoberts
f208bf3421
1) Fold back in the changes introduced by Just van Possum in patch 744
2) Moved the C_F_F__2_test.py files and script under Tests/, paralleling what was done the C_F_F test  files.
2017-03-05 22:53:05 +00:00
ReadRoberts
2b2aca1290
Add CFF2 support. 2017-03-05 22:53:04 +00:00
Cosimo Lupo
c28f3f06b5
Bump version: 3.8.0 → 3.8.1.dev0 2017-03-05 21:46:45 +00:00
Cosimo Lupo
6abff52ec9
Release 3.8.0 2017-03-05 21:45:49 +00:00
Miguel Sousa
af3df891b2 [varLib.mutator] Drop all variable tables 2017-03-04 23:30:37 -08:00
Miguel Sousa
9e4e1ffc44 [varLib.mutator] Revert Include HVAR in the list of tables to remove. 2017-03-04 12:58:00 -08:00
Miguel Sousa
7bf853ed2e [varLib] Round advance width and LSB to integers 2017-03-04 12:54:20 -08:00
Miguel Sousa
33d12e9406 [varLib.mutator] Change ‘GX’ to ‘variable’. Include HVAR in the list of tables to remove. 2017-03-03 14:49:11 -08:00
Behdad Esfahbod
9d5e38c439 Merge pull request #869 from anthrotype/varLib-builder-fixes
[varLib.builder] Fix roundtripping XML
2017-03-03 11:31:38 -08:00
Cosimo Lupo
0b7da14b41
[cffLib] always write "charset is dumped separately..." comment 2017-03-02 12:50:18 +00:00
Cosimo Lupo
94e1789fcb
[varLib.builder] fix max() arg can't be empty sequence 2017-03-01 22:20:46 +00:00
Cosimo Lupo
1883e6466b
[varLib.builder] correctly set NumShorts if optimize is False 2017-03-01 20:58:48 +00:00
Cosimo Lupo
3f8eab41f7
[varLib.builder] rename optimizeVarData to calculateNumShorts with option to optimize 2017-03-01 20:14:34 +00:00
Cosimo Lupo
3bde091807
[varLib.builder] in VarRegionList, rename AxisCount to RegionAxisCount
That is the name currently used in otData.py
2017-03-01 17:29:02 +00:00
Cosimo Lupo
7562115fc4
move calculation of NumShorts from otTables to varLib.builder 2017-03-01 17:27:41 +00:00
Cosimo Lupo
f97d126f96
[varLib.builder] ensure VarRegionAxis coordinates are stored as float
These are decompiled as F2Dot14 by otData.py, thus they are written as float when dumping to TTX
2017-03-01 17:26:07 +00:00
Cosimo Lupo
5b3b3e76c8 Merge pull request #866 from miguelsousa/varlib-tests
Varlib tests
2017-03-01 16:50:14 +00:00
Cosimo Lupo
46d487c728
the Zopfli bindings are finally available from PyPI, change url in the docstring 2017-03-01 14:01:15 +00:00
Cosimo Lupo
ee4f4695e6
[ttx] ignore missing 'head' if no --recalc-timestamp option is passed 2017-02-28 22:54:30 +00:00
Cosimo Lupo
8af488a1b3
Revert "explicitly require 'head' table in TTFont.save()"
This reverts commit b39f3b613c861539f9ae6e18f5064979f7ad6365.

Requiring 'head' makes it hard to build partial fonts

See https://github.com/fonttools/fonttools/pull/854#issuecomment-283177719
2017-02-28 22:48:28 +00:00
Miguel Sousa
3dc8e4fa95 minor change 2017-02-28 05:16:15 -08:00
Cosimo Lupo
ca95a07f24
[interpolate_layout] handle optional 'axes' item; require 'sources'
remove 'instances' as it's not used
2017-02-27 19:44:54 +00:00
Bo Song
b45fcf0fd6 Change gasp merge logic to 'first' (#862)
* change gasp merge logic to first

* fix typo

* add comment

* fix typo
2017-02-27 19:34:48 +00:00
Cosimo Lupo
c131bd93f6
[varLib] Fix AttributeError: odict.keys() has no index attribute 'index'
43efa63732 (commitcomment-21073943)
2017-02-27 19:17:04 +00:00
Cosimo Lupo
01d8145288
[varLib] fix undefined name 'masters'
Ouch!
2017-02-27 18:31:38 +00:00
Cosimo Lupo
ee9f2bf24a
[designspace] clarify that designspace items are optional in docstring 2017-02-27 18:12:31 +00:00
Cosimo Lupo
66c6662572
[designspace] refactor
- remove unused import
- use snake_case instead of camelCase
- add two empty lines between module-level definitions
- rename 'elt' variable to 'element'
- don't make extra dict copy in _load_axis
2017-02-27 16:59:35 +00:00
Cosimo Lupo
558e5e172d
[varLib] raise VarLibError if 'sources' missing or empty; treat 'axes' and 'instances' as optional 2017-02-27 16:34:41 +00:00
Cosimo Lupo
ba44e64108
[designspace] rename 'masters' to 'sources', like in original .designspace document
I don't see why our parser should call this element differently than its official name.
2017-02-27 16:21:35 +00:00