use ufoLib2 for cu2qu.cli and tests

the tests are skipped if ufoLib2 is not installed.
This commit is contained in:
Cosimo Lupo 2020-04-01 19:23:57 +01:00
parent 76cc29dda4
commit c4aeec87dc
No known key found for this signature in database
GPG Key ID: 179A8F0895A02F4F
3 changed files with 29 additions and 22 deletions

View File

@ -9,7 +9,7 @@ from functools import partial
import fontTools
from .ufo import font_to_quadratic, fonts_to_quadratic
import defcon
import ufoLib2
logger = logging.getLogger("fontTools.cu2qu")
@ -23,12 +23,15 @@ def _cpu_count():
def _font_to_quadratic(zipped_paths, **kwargs):
input_path, output_path = zipped_paths
ufo = defcon.Font(input_path)
ufo = ufoLib2.Font.open(input_path)
logger.info('Converting curves for %s', input_path)
if font_to_quadratic(ufo, **kwargs):
logger.info("Saving %s", output_path)
ufo.save(output_path)
if output_path:
ufo.save(output_path, overwrite=True)
else:
ufo.save() # save in-place
elif output_path:
_copytree(input_path, output_path)
@ -130,7 +133,7 @@ def main(args=None):
output_paths = [options.output_file]
else:
# save in-place
output_paths = list(options.infiles)
output_paths = [None] * len(options.infiles)
kwargs = dict(dump_stats=options.verbose > 0,
max_err_em=options.conversion_error,
@ -138,13 +141,17 @@ def main(args=None):
if options.interpolatable:
logger.info('Converting curves compatibly')
ufos = [defcon.Font(infile) for infile in options.infiles]
ufos = [ufoLib2.Font.open(infile) for infile in options.infiles]
if fonts_to_quadratic(ufos, **kwargs):
for ufo, output_path in zip(ufos, output_paths):
logger.info("Saving %s", output_path)
ufo.save(output_path)
if output_path:
ufo.save(output_path, overwrite=True)
else:
ufo.save()
else:
for input_path, output_path in zip(options.infiles, output_paths):
if output_path:
_copytree(input_path, output_path)
else:
jobs = min(len(options.infiles),

View File

@ -1,10 +1,10 @@
import os
import defcon
import pytest
import py
ufoLib2 = pytest.importorskip("ufoLib2")
from fontTools.cu2qu.ufo import CURVE_TYPE_LIB_KEY
from fontTools.cu2qu.cli import main
@ -38,7 +38,7 @@ class MainTest(object):
self.run_main(ufo_path)
font = defcon.Font(str(ufo_path))
font = ufoLib2.Font.open(ufo_path)
assert font.lib[CURVE_TYPE_LIB_KEY] == "quadratic"
def test_single_input_output_file(self, tmpdir):

View File

@ -1,7 +1,6 @@
import os
from fontTools.misc.loggingTools import CapturingLogHandler
from defcon import Font, Glyph
from fontTools.cu2qu.ufo import (
fonts_to_quadratic,
font_to_quadratic,
@ -19,6 +18,8 @@ from fontTools.cu2qu.errors import (
import pytest
ufoLib2 = pytest.importorskip("ufoLib2")
DATADIR = os.path.join(os.path.dirname(__file__), 'data')
TEST_UFOS = [
@ -29,7 +30,7 @@ TEST_UFOS = [
@pytest.fixture
def fonts():
return [Font(ufo) for ufo in TEST_UFOS]
return [ufoLib2.Font.open(ufo) for ufo in TEST_UFOS]
class FontsToQuadraticTest(object):
@ -178,8 +179,7 @@ class GlyphsToQuadraticTest(object):
def test_incompatible_glyphs(self, outlines, exception, message):
glyphs = []
for i, outline in enumerate(outlines):
glyph = Glyph()
glyph.name = "glyph%d" % i
glyph = ufoLib2.objects.Glyph("glyph%d" % i)
pen = glyph.getPen()
for operator, args in outline:
getattr(pen, operator)(*args)
@ -189,7 +189,7 @@ class GlyphsToQuadraticTest(object):
assert excinfo.match(message)
def test_incompatible_fonts(self):
font1 = Font()
font1 = ufoLib2.Font()
font1.info.unitsPerEm = 1000
glyph1 = font1.newGlyph("a")
pen1 = glyph1.getPen()
@ -198,7 +198,7 @@ class GlyphsToQuadraticTest(object):
("endPath", ())]:
getattr(pen1, operator)(*args)
font2 = Font()
font2 = ufoLib2.Font()
font2.info.unitsPerEm = 1000
glyph2 = font2.newGlyph("a")
pen2 = glyph2.getPen()
@ -217,7 +217,7 @@ class GlyphsToQuadraticTest(object):
assert error.segments == {1: ["line", "curve"]}
def test_already_quadratic(self):
glyph = Glyph()
glyph = ufoLib2.objects.Glyph()
pen = glyph.getPen()
pen.moveTo((0, 0))
pen.qCurveTo((1, 1), (2, 2))
@ -225,7 +225,7 @@ class GlyphsToQuadraticTest(object):
assert not glyph_to_quadratic(glyph)
def test_open_paths(self):
glyph = Glyph()
glyph = ufoLib2.objects.Glyph()
pen = glyph.getPen()
pen.moveTo((0, 0))
pen.lineTo((1, 1))
@ -236,7 +236,7 @@ class GlyphsToQuadraticTest(object):
assert glyph[-1][0].segmentType == "move"
def test_ignore_components(self):
glyph = Glyph()
glyph = ufoLib2.objects.Glyph()
pen = glyph.getPen()
pen.addComponent('a', (1, 0, 0, 1, 0, 0))
pen.moveTo((0, 0))
@ -247,7 +247,7 @@ class GlyphsToQuadraticTest(object):
def test_overlapping_start_end_points(self):
# https://github.com/googlefonts/fontmake/issues/572
glyph1 = Glyph()
glyph1 = ufoLib2.objects.Glyph()
pen = glyph1.getPointPen()
pen.beginPath()
pen.addPoint((0, 651), segmentType="line")
@ -256,7 +256,7 @@ class GlyphsToQuadraticTest(object):
pen.addPoint((0, 651), segmentType="line")
pen.endPath()
glyph2 = Glyph()
glyph2 = ufoLib2.objects.Glyph()
pen = glyph2.getPointPen()
pen.beginPath()
pen.addPoint((1, 651), segmentType="line")