diff --git a/Lib/fontTools/cu2qu/cli.py b/Lib/fontTools/cu2qu/cli.py index d674fc6b2..1d4399f5a 100644 --- a/Lib/fontTools/cu2qu/cli.py +++ b/Lib/fontTools/cu2qu/cli.py @@ -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) - else: + 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,14 +141,18 @@ 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): - _copytree(input_path, output_path) + if output_path: + _copytree(input_path, output_path) else: jobs = min(len(options.infiles), options.jobs) if options.jobs > 1 else 1 diff --git a/Tests/cu2qu/cli_test.py b/Tests/cu2qu/cli_test.py index ca2e30b06..f6798a639 100644 --- a/Tests/cu2qu/cli_test.py +++ b/Tests/cu2qu/cli_test.py @@ -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): diff --git a/Tests/cu2qu/ufo_test.py b/Tests/cu2qu/ufo_test.py index 4ca663a55..b678ae3de 100644 --- a/Tests/cu2qu/ufo_test.py +++ b/Tests/cu2qu/ufo_test.py @@ -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")