aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/cffLib/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/fontTools/cffLib/__init__.py')
-rw-r--r--Lib/fontTools/cffLib/__init__.py31
1 files changed, 17 insertions, 14 deletions
diff --git a/Lib/fontTools/cffLib/__init__.py b/Lib/fontTools/cffLib/__init__.py
index e97b7501..d4cd7a17 100644
--- a/Lib/fontTools/cffLib/__init__.py
+++ b/Lib/fontTools/cffLib/__init__.py
@@ -11,7 +11,7 @@ the demands of variable fonts. This module parses both original CFF and CFF2.
"""
-from fontTools.misc.py23 import *
+from fontTools.misc.py23 import bytechr, byteord, bytesjoin, tobytes, tostr
from fontTools.misc import sstruct
from fontTools.misc import psCharStrings
from fontTools.misc.arrayTools import unionRect, intRect
@@ -20,6 +20,7 @@ from fontTools.ttLib import TTFont
from fontTools.ttLib.tables.otBase import OTTableWriter
from fontTools.ttLib.tables.otBase import OTTableReader
from fontTools.ttLib.tables import otTables as ot
+from io import BytesIO
import struct
import logging
import re
@@ -118,7 +119,7 @@ class CFFFontSet(object):
"""
if hasattr(nameOrIndex, "__index__"):
index = nameOrIndex.__index__()
- elif isinstance(nameOrIndex, basestring):
+ elif isinstance(nameOrIndex, str):
name = nameOrIndex
try:
index = self.fontNames.index(name)
@@ -261,7 +262,7 @@ class CFFFontSet(object):
self.topDictIndex = TopDictIndex(None, cff2GetGlyphOrder, None)
self.topDictIndex.append(topDict)
for element in content:
- if isinstance(element, basestring):
+ if isinstance(element, str):
continue
name, attrs, content = element
topDict.fromXML(name, attrs, content)
@@ -277,7 +278,7 @@ class CFFFontSet(object):
if not hasattr(self, "GlobalSubrs"):
self.GlobalSubrs = GlobalSubrsIndex()
for element in content:
- if isinstance(element, basestring):
+ if isinstance(element, str):
continue
name, attrs, content = element
subr = subrCharStringClass()
@@ -879,7 +880,7 @@ class FDArrayIndex(Index):
return
fontDict = FontDict()
for element in content:
- if isinstance(element, basestring):
+ if isinstance(element, str):
continue
name, attrs, content = element
fontDict.fromXML(name, attrs, content)
@@ -1106,7 +1107,7 @@ class CharStrings(object):
def fromXML(self, name, attrs, content):
for element in content:
- if isinstance(element, basestring):
+ if isinstance(element, str):
continue
name, attrs, content = element
if name != "CharString":
@@ -1245,7 +1246,7 @@ class ASCIIConverter(SimpleConverter):
return tobytes(value, encoding='ascii')
def xmlWrite(self, xmlWriter, name, value):
- xmlWriter.simpletag(name, value=tounicode(value, encoding="ascii"))
+ xmlWriter.simpletag(name, value=tostr(value, encoding="ascii"))
xmlWriter.newline()
def xmlRead(self, name, attrs, content, parent):
@@ -1261,7 +1262,7 @@ class Latin1Converter(SimpleConverter):
return tobytes(value, encoding='latin1')
def xmlWrite(self, xmlWriter, name, value):
- value = tounicode(value, encoding="latin1")
+ value = tostr(value, encoding="latin1")
if name in ['Notice', 'Copyright']:
value = re.sub(r"[\r\n]\s+", " ", value)
xmlWriter.simpletag(name, value=value)
@@ -1282,7 +1283,7 @@ def parseNum(s):
def parseBlendList(s):
valueList = []
for element in s:
- if isinstance(element, basestring):
+ if isinstance(element, str):
continue
name, attrs, content = element
blendList = attrs["value"].split()
@@ -1358,7 +1359,7 @@ class TableConverter(SimpleConverter):
def xmlRead(self, name, attrs, content, parent):
ob = self.getClass()()
for element in content:
- if isinstance(element, basestring):
+ if isinstance(element, str):
continue
name, attrs, content = element
ob.fromXML(name, attrs, content)
@@ -1650,7 +1651,7 @@ def parseCharset(numGlyphs, file, strings, isCID, fmt):
class EncodingCompiler(object):
def __init__(self, strings, encoding, parent):
- assert not isinstance(encoding, basestring)
+ assert not isinstance(encoding, str)
data0 = packEncoding0(parent.dictObj.charset, encoding, parent.strings)
data1 = packEncoding1(parent.dictObj.charset, encoding, parent.strings)
if len(data0) < len(data1):
@@ -1721,7 +1722,7 @@ class EncodingConverter(SimpleConverter):
return attrs["name"]
encoding = [".notdef"] * 256
for element in content:
- if isinstance(element, basestring):
+ if isinstance(element, str):
continue
name, attrs, content = element
code = safeEval(attrs["code"])
@@ -1833,7 +1834,7 @@ class FDArrayConverter(TableConverter):
def xmlRead(self, name, attrs, content, parent):
fdArray = FDArrayIndex()
for element in content:
- if isinstance(element, basestring):
+ if isinstance(element, str):
continue
name, attrs, content = element
fdArray.fromXML(name, attrs, content)
@@ -2105,6 +2106,8 @@ privateDictOperators2 = [
(11, 'StdVW', 'number', None, None),
((12, 12), 'StemSnapH', 'delta', None, None),
((12, 13), 'StemSnapV', 'delta', None, None),
+ ((12, 17), 'LanguageGroup', 'number', 0, None),
+ ((12, 18), 'ExpansionFactor', 'number', 0.06, None),
(19, 'Subrs', 'number', None, SubrsConverter()),
]
@@ -2332,7 +2335,7 @@ class TopDictCompiler(DictCompiler):
self.rawDict["charset"] = charsetCode
if hasattr(self.dictObj, "Encoding") and self.dictObj.Encoding:
encoding = self.dictObj.Encoding
- if not isinstance(encoding, basestring):
+ if not isinstance(encoding, str):
children.append(EncodingCompiler(strings, encoding, self))
else:
if hasattr(self.dictObj, "VarStore"):