예제 #1
0
from cu2qu.ufo import font_to_quadratic, fonts_to_quadratic
from defcon import Font
from fontTools import subset
from fontTools.misc.py23 import tobytes, UnicodeIO
from fontTools.misc.loggingTools import configLogger, Timer
from fontTools.misc.transform import Transform
from fontTools.pens.transformPen import TransformPen
from fontTools.ttLib import TTFont
from fontTools import varLib
from fontTools.varLib.interpolate_layout import interpolate_layout
from ufo2ft import compileOTF, compileTTF
from ufo2ft.makeotfParts import FeatureOTFCompiler

from fontmake.ttfautohint import ttfautohint

timer = Timer(logging.getLogger('fontmake.timer'), level=logging.DEBUG)

PUBLIC_PREFIX = 'public.'
GLYPHS_PREFIX = 'com.schriftgestaltung.'


class FontProject:
    """Provides methods for building fonts."""
    @staticmethod
    def preprocess(glyphs_path):
        """Return Glyphs source with illegal glyph/class names changed."""

        with open(glyphs_path, 'r', encoding='utf-8') as fp:
            text = fp.read()
        names = set(re.findall('\n(?:glyph)?name = "(.+-.+)";\n', text))
예제 #2
0
from fontTools.misc.timeTools import timestampNow
from fontTools import ttLib, cffLib
from fontTools.ttLib.tables import otTables, _h_e_a_d
from fontTools.ttLib.tables.DefaultTable import DefaultTable
from fontTools.misc.loggingTools import Timer
from fontTools.pens.recordingPen import DecomposingRecordingPen
from functools import reduce
import sys
import time
import operator
import logging
import os

log = logging.getLogger("fontTools.merge")
timer = Timer(logger=logging.getLogger(__name__ + ".timer"),
              level=logging.INFO)


def _add_method(*clazzes, **kwargs):
    """Returns a decorator function that adds a new method to one or
	more classes."""
    allowDefault = kwargs.get('allowDefaultTable', False)

    def wrapper(method):
        done = []
        for clazz in clazzes:
            if clazz in done: continue  # Support multiple names of a clazz
            done.append(clazz)
            assert allowDefault or clazz != DefaultTable, 'Oops, table class not found.'
            assert method.__name__ not in clazz.__dict__, \
             "Oops, class '%s' has method '%s'." % (clazz.__name__, method.__name__)
예제 #3
0
                             Use value 1 to perform operation serially.

Usage (command line):
From the command line, you can either run the package as a module,

$ python -m compreffor --help

Or call the `compreffor` console script installed with the package.
Use -h/--help to list all the available options.
"""

import logging
from fontTools.misc.loggingTools import Timer

log = logging.getLogger(__name__)
timer = Timer(logger=logging.getLogger(log.name + ".timer"))

from compreffor import cxxCompressor, pyCompressor


__version__ = "0.4.7.dev0"


def compress(ttFont, method_python=False, **options):
    """ Subroutinize TTFont instance in-place using the C++ Compreffor.
    If 'method_python' is True, use the slower, pure-Python Compreffor.
    If the font already contains subroutines, it is first decompressed.
    """
    if has_subrs(ttFont):
        log.warning(
            "There are subroutines in font; must decompress it first")
예제 #4
0
from fontTools import designspaceLib
from fontTools.misc.loggingTools import Timer, configLogger
from fontTools.misc.plistlib import load as readPlist
from fontTools.ttLib import TTFont
from fontTools.varLib.interpolate_layout import interpolate_layout
from ufo2ft import CFFOptimization
from ufo2ft.featureCompiler import parseLayoutFeatures
from ufo2ft.featureWriters import FEATURE_WRITERS_KEY, loadFeatureWriters
from ufo2ft.util import makeOfficialGlyphOrder

from fontmake import instantiator
from fontmake.errors import FontmakeError, TTFAError
from fontmake.ttfautohint import ttfautohint

logger = logging.getLogger(__name__)
timer = Timer(logging.getLogger("fontmake.timer"), level=logging.DEBUG)

PUBLIC_PREFIX = "public."
GLYPHS_PREFIX = "com.schriftgestaltung."
# for glyphsLib < 2.3.0
KEEP_GLYPHS_OLD_KEY = GLYPHS_PREFIX + "Keep Glyphs"
# for glyphsLib >= 2.3.0
KEEP_GLYPHS_NEW_KEY = (
    GLYPHS_PREFIX +
    "customParameter.InstanceDescriptorAsGSInstance.Keep Glyphs")
GLYPH_EXPORT_KEY = GLYPHS_PREFIX + "Glyphs.Export"

INTERPOLATABLE_OUTPUTS = frozenset(
    ["ttf-interpolatable", "otf-interpolatable", "variable", "variable-cff2"])

    def test_using_logger(self, logger):
        with Timer(logger, 'do something'):
            time.sleep(0.01)

        assert re.match("Took [0-9]\.[0-9]{3}s to do something",
                        logger.handlers[0].stream.getvalue())
 def test_context_manager(self):
     with Timer() as t:
         time.sleep(0.01)
     assert t.elapsed > 0
 def test_time(self):
     timer = Timer()
     time.sleep(0.01)
     overall_time = timer.time()
     assert overall_time > 0