aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/misc/textTools.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/fontTools/misc/textTools.py')
-rw-r--r--Lib/fontTools/misc/textTools.py135
1 files changed, 68 insertions, 67 deletions
diff --git a/Lib/fontTools/misc/textTools.py b/Lib/fontTools/misc/textTools.py
index bf75bcbd..f7ca1acc 100644
--- a/Lib/fontTools/misc/textTools.py
+++ b/Lib/fontTools/misc/textTools.py
@@ -33,90 +33,90 @@ class Tag(str):
def readHex(content):
- """Convert a list of hex strings to binary data."""
- return deHexStr(strjoin(chunk for chunk in content if isinstance(chunk, str)))
+ """Convert a list of hex strings to binary data."""
+ return deHexStr(strjoin(chunk for chunk in content if isinstance(chunk, str)))
def deHexStr(hexdata):
- """Convert a hex string to binary data."""
- hexdata = strjoin(hexdata.split())
- if len(hexdata) % 2:
- hexdata = hexdata + "0"
- data = []
- for i in range(0, len(hexdata), 2):
- data.append(bytechr(int(hexdata[i:i+2], 16)))
- return bytesjoin(data)
+ """Convert a hex string to binary data."""
+ hexdata = strjoin(hexdata.split())
+ if len(hexdata) % 2:
+ hexdata = hexdata + "0"
+ data = []
+ for i in range(0, len(hexdata), 2):
+ data.append(bytechr(int(hexdata[i : i + 2], 16)))
+ return bytesjoin(data)
def hexStr(data):
- """Convert binary data to a hex string."""
- h = string.hexdigits
- r = ''
- for c in data:
- i = byteord(c)
- r = r + h[(i >> 4) & 0xF] + h[i & 0xF]
- return r
+ """Convert binary data to a hex string."""
+ h = string.hexdigits
+ r = ""
+ for c in data:
+ i = byteord(c)
+ r = r + h[(i >> 4) & 0xF] + h[i & 0xF]
+ return r
def num2binary(l, bits=32):
- items = []
- binary = ""
- for i in range(bits):
- if l & 0x1:
- binary = "1" + binary
- else:
- binary = "0" + binary
- l = l >> 1
- if not ((i+1) % 8):
- items.append(binary)
- binary = ""
- if binary:
- items.append(binary)
- items.reverse()
- assert l in (0, -1), "number doesn't fit in number of bits"
- return ' '.join(items)
+ items = []
+ binary = ""
+ for i in range(bits):
+ if l & 0x1:
+ binary = "1" + binary
+ else:
+ binary = "0" + binary
+ l = l >> 1
+ if not ((i + 1) % 8):
+ items.append(binary)
+ binary = ""
+ if binary:
+ items.append(binary)
+ items.reverse()
+ assert l in (0, -1), "number doesn't fit in number of bits"
+ return " ".join(items)
def binary2num(bin):
- bin = strjoin(bin.split())
- l = 0
- for digit in bin:
- l = l << 1
- if digit != "0":
- l = l | 0x1
- return l
+ bin = strjoin(bin.split())
+ l = 0
+ for digit in bin:
+ l = l << 1
+ if digit != "0":
+ l = l | 0x1
+ return l
def caselessSort(alist):
- """Return a sorted copy of a list. If there are only strings
- in the list, it will not consider case.
- """
+ """Return a sorted copy of a list. If there are only strings
+ in the list, it will not consider case.
+ """
- try:
- return sorted(alist, key=lambda a: (a.lower(), a))
- except TypeError:
- return sorted(alist)
+ try:
+ return sorted(alist, key=lambda a: (a.lower(), a))
+ except TypeError:
+ return sorted(alist)
def pad(data, size):
- r""" Pad byte string 'data' with null bytes until its length is a
- multiple of 'size'.
-
- >>> len(pad(b'abcd', 4))
- 4
- >>> len(pad(b'abcde', 2))
- 6
- >>> len(pad(b'abcde', 4))
- 8
- >>> pad(b'abcdef', 4) == b'abcdef\x00\x00'
- True
- """
- data = tobytes(data)
- if size > 1:
- remainder = len(data) % size
- if remainder:
- data += b"\0" * (size - remainder)
- return data
+ r"""Pad byte string 'data' with null bytes until its length is a
+ multiple of 'size'.
+
+ >>> len(pad(b'abcd', 4))
+ 4
+ >>> len(pad(b'abcde', 2))
+ 6
+ >>> len(pad(b'abcde', 4))
+ 8
+ >>> pad(b'abcdef', 4) == b'abcdef\x00\x00'
+ True
+ """
+ data = tobytes(data)
+ if size > 1:
+ remainder = len(data) % size
+ if remainder:
+ data += b"\0" * (size - remainder)
+ return data
def tostr(s, encoding="ascii", errors="strict"):
@@ -150,5 +150,6 @@ def bytesjoin(iterable, joiner=b""):
if __name__ == "__main__":
- import doctest, sys
- sys.exit(doctest.testmod().failed)
+ import doctest, sys
+
+ sys.exit(doctest.testmod().failed)