This repository has been archived on 2025-10-02. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
inter-font/misc/pylib/extractor/__init__.py
2017-11-28 17:11:48 -08:00

45 lines
1.6 KiB
Python
Executable file

from extractor.exceptions import ExtractorError
from extractor.formats.opentype import isOpenType, extractFontFromOpenType
from extractor.formats.woff import isWOFF, extractFontFromWOFF
from extractor.formats.type1 import isType1, extractFontFromType1
from extractor.formats.ttx import isTTX, extractFontFromTTX
__version__ = "0.2.1.dev0"
_extractFunctions = dict(
OTF=extractFontFromOpenType,
Type1=extractFontFromType1,
WOFF=extractFontFromWOFF,
ttx=extractFontFromTTX,
)
def extractFormat(pathOrFile):
if isType1(pathOrFile):
return "Type1"
elif isWOFF(pathOrFile):
return "WOFF"
elif isOpenType(pathOrFile):
return "OTF"
elif isTTX(pathOrFile):
return "ttx"
return None
def extractUFO(pathOrFile, destination, doGlyphs=True, doInfo=True, doKerning=True, format=None, customFunctions={}):
if format is None:
format = extractFormat(pathOrFile)
if format not in _extractFunctions:
raise ExtractorError("Unknown file format.")
func = _extractFunctions[format]
# wrap the extraction in a try: except: so that
# callers don't need to worry about lower level
# (fontTools, etc.) errors. if an error
# occurs, print the traceback for debugging and
# raise an ExtractorError.
try:
func(pathOrFile, destination, doGlyphs=doGlyphs, doInfo=doInfo, doKerning=doKerning, customFunctions=customFunctions.get(format, []))
except:
import sys
import traceback
traceback.print_exc(file=sys.stdout)
raise ExtractorError("There was an error reading the %s file." % format)