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))
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__)
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")
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