42 Commits

Author SHA1 Message Date
Behdad Esfahbod
7fadfa4e81 Revert "refactor: pass isfinal argument spelled-out not a number"
This reverts commit 6d65a87301b6c746ae0ec1dc1cf0df75c0c21d63.

https://github.com/fonttools/fonttools/pull/3669#issuecomment-2428475144
2024-10-22 01:34:48 -06:00
Robin
6d65a87301 refactor: pass isfinal argument spelled-out not a number 2024-10-22 01:28:05 -06:00
Robin
505c6e1fa3 set isfinal to true to enable xml parser to free resources 2024-10-22 01:28:05 -06:00
David Jones
aa2d9196c0 Lift .get("hex") out of try:; and avoid re-evaluating it 2024-07-18 19:29:41 +01:00
David Jones
fb30c9822b Verify that unicode elements have hex attribute 2024-06-03 17:02:34 +01:00
Khaled Hosny
cf08265cd5 Black 2024-02-06 15:47:35 +02:00
Harry Dalton
70ca6dec9b Identify the culprit glif in read errors with a loose backport of PEP678
This commit annotates errors from GlyphSet.readGlyph() with the details
of the glyph that originated them (e.g. name, path to glif). This is
implemented with a loose backport of PEP678, to avoid adding a wrapper
error that would be less specific and would break API compatibility.

In addition, this commit adds a test to ensure that the new details are
present (specifically, in the case of parsing invalid XML).
2023-03-14 15:58:18 +00:00
Harry Dalton
1f3380300b Wrap XML library exceptions with glifLib types when parsing glifs
This allows dependent projects to catch errors parsing glifs without
requiring logic to account for which XML library fonttools is using
internally (e.g. for implementing fonttools/ufoLib2#264).

This commit also adds tests to ensure that the exception we expose when
glifs have invalid syntax remains stable across future releases.
2023-03-09 16:11:32 +00:00
Nikolaus Waxweiler
d584daa8fd Blacken code 2022-12-13 11:26:36 +00:00
Cosimo Lupo
5ca57917c6 fix UFOFormatVersion tuple's __str__ in python 3.11
python 3.11 doesn't like when a mixin overrides a dunder method like __str__, for some reasons it keep using Enum.__str__, see
https://github.com/fonttools/fonttools/pull/2655
2022-07-06 11:13:55 +01:00
Behdad Esfahbod
6b4e2e7147 [ufoLib / interpolatable] Wire up outputImpliedClosingLine parameter
ufoLib's glyph draw() was passing outputImpliedClosingLine=False to
PointToSegmentPen(). This was causing incompatible nodes in
interpolatable tool for certain fonts, like this in NotoSansDevanagari:

Glyph dabhadeva was not compatible:
    Node count differs in path 1: 23 in NotoSansDevanagari-Bold, 24 in NotoSansDevanagari-CondensedBold
    Node count differs in path 1: 24 in NotoSansDevanagari-CondensedBold, 23 in NotoSansDevanagari-CondensedLight

Because a final lineto before a closepath was being elided or not in
some masters but not others.  Wire up the parameter and control it
from interpolatable tool to fix this.
2022-04-01 13:14:39 -06:00
Simon Cozens
0f03e6529a
[docs] Fix sphinx warnings (#2453)
* Add default auto doc options

* Ensure all references are unique

* Use anonymous links to avoid duplicate references

* Remove default options, fix wrong module name

* Don’t index repeated class

* Remove repeated classes included through automodule

* Fix warnings

* We don’t use our own static directory

* Correctly format XML in docs

* Fix indentation

* Fix overline

* Bring TOC to top

* Fix definition list

* Offset definition lists and examples

* Fix erroneous markup

* Fix markup

* Already included in automodule

* Fix args markup

* Correct markup for example

* Don’t reindex repeated module

* Correct XML code block markup

* Fix markup errors, change example to doctest

* Correct list markup

* Make ttx docstring both valid RST and valid help output

* Various other boring markup fixes

* Fix example indenting

* Make docstring valid RST and valid help output

* Mock import for reportlab

* It’s ok if manual links don’t appear in toctrees

* Oops typo, I guess doctests are useful
2021-12-02 15:31:49 +00:00
Nikolaus Waxweiler
cd32e1d16b Use set comprehension 2021-10-07 14:18:12 +01:00
Nikolaus Waxweiler
a7e4d86540 Use a set for file names for clash checking 2021-10-07 12:03:47 +01:00
Khaled Hosny
232b2ccbc4 Move the rest of py23 module to textTools
Change all imports to use textTools module, except the test_py23.py test
which is kept until we decide to remove the module (if ever).
2021-08-20 01:29:45 +02:00
Nikolaus Waxweiler
863b022523 Add docstring to GlyphSet 2020-11-23 14:37:01 +00:00
Nikolaus Waxweiler
8d2a3ae6d2 Add expectContentsFile parameter to GlyphSet
For use when reading existing UFOs, to comply with the specification stating that a contents.plist file must exist in a glyph set.

Closes https://github.com/fonttools/fonttools/issues/2111.
2020-11-23 13:57:32 +00:00
Nikolaus Waxweiler
04e1269b41 [glifLib] Hard-require x and y coordinates 2020-10-03 12:43:28 +01:00
Frederik Berlaen
d0767138f7 make sure a list of possible case-insensitive file names is send
not a dict where the key is the case sensitive file name
2020-06-20 17:45:27 +02:00
Cosimo Lupo
0a26a8d287
glifLib: document default when formatVersion=None 2020-05-11 18:50:45 +01:00
Cosimo Lupo
57f4904363
ufoLib/glifLib: use TupleEnum instead of namedtuple for {UFO,GLIF}FormatVersion
Also add dedicated Unsupported{UFO,GLIF}Format exceptions in
fontTools.ufoLib.errors module
2020-05-07 16:53:38 +01:00
Cosimo Lupo
c066cfc4d5
WIP: ufoLib: support UFO formatVersionMinor and GLIF formatMinor 2020-05-05 18:52:30 +01:00
Cosimo Lupo
337bb66211
glifLib: strip comments when parsing with lxml
they are already ignored when parsing via built-in ElementTree
2019-12-16 12:05:13 +00:00
Nikolaus Waxweiler
cf2fd0671b Assume layer and glyph names are always str 2019-09-14 22:11:20 +01:00
Nikolaus Waxweiler
dcb1fb67ce Remove stale comment 2019-09-14 20:41:17 +01:00
Nikolaus Waxweiler
20b1e06100 Remove integerTypes, it's just an int now 2019-09-13 18:53:10 +01:00
Nikolaus Waxweiler
9825553e06 Use !r in-string formatter syntax instead of repr(value) 2019-09-13 18:45:19 +01:00
Nikolaus Waxweiler
51c8a7a3e1 Remove some unused imports 2019-09-13 18:27:05 +01:00
Nikolaus Waxweiler
54dc6b2dcc Minor: adjust docstring 2019-09-13 18:27:05 +01:00
Nikolaus Waxweiler
0f5b6e2e83 Reduce use of py23 2019-09-13 18:27:05 +01:00
Nikolaus Waxweiler
bc344380e8 Upgrade syntax to Python 3.6+ 2019-09-13 18:27:05 +01:00
Nikolaus Waxweiler
01328213c7 Remove __future__ imports 2019-08-09 12:20:13 +01:00
Khaled Hosny
e0b517a6e7 A couple ufoLib.pointPen → pens.pointPen 2019-02-14 23:38:11 +02:00
Chris Simpkins
7458cebda1 [ufoLib glifLib] minor typo fix 2019-01-23 11:21:06 -05:00
Cosimo Lupo
42ab9aba57
[ufoLib] rename deprecated fs.setbytes -> writebytes
Follow up of #1445
Fixes #1424
2019-01-15 11:07:04 +00:00
Nikolaus Waxweiler
f47fee933c
ufoLib, fs calls: Replace deprecated getbytes with readbytes (#1445)
fs 2.2.0 comes with some renamed APIs.
2019-01-15 09:49:24 +00:00
Cosimo Lupo
59d9abf5f3
UFOReader: getFileModificationTime should be without leading underscore
that's what it's currently in UFOReader. The UFOWriter and GlyphSet will gain that one for free.
2018-10-24 17:43:47 +01:00
Cosimo Lupo
7f3bf46096
ufoLib: use a single (abstract) base class for sharing methods between UFOReader, UFOWriter and GlyphSet 2018-10-23 20:41:35 +01:00
Cosimo Lupo
f997005fb7
make UFOWriter a subclass of UFOReader, use mixins for shared methods 2018-10-23 19:43:37 +01:00
Cosimo Lupo
8081bf57fa
etree/plistlib/glifLib: using (default) single quotes in XML_DECLARATION
https://github.com/fonttools/fonttools/pull/1335#issuecomment-431118568
2018-10-18 19:49:52 +01:00
Cosimo Lupo
176b5f763d
change 'import ufoLib' to 'import fontTools.ufoLib' 2018-10-17 17:43:28 +01:00
Cosimo Lupo
7cd80a37dd
move Lib/ufoLib to Lib/fontTools/ufoLib 2018-10-17 17:05:17 +01:00