Drop support for legacy Python 2 (#346)
* Drop support for legacy Python 2 * Add python_requires to help pip * Upgrade Python syntax with pyupgrade * Upgrade Python syntax with pyupgrade --py3-plus * Python 3 imports * Replace six * Update CONTRIBUTING.md * Added line to changelog Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>pull/351/head
parent
f3ab1bc61e
commit
3502dc9f3b
|
@ -1,6 +1,5 @@
|
||||||
language: python
|
language: python
|
||||||
python:
|
python:
|
||||||
- "2.7"
|
|
||||||
- "3.4"
|
- "3.4"
|
||||||
- "3.5"
|
- "3.5"
|
||||||
- "3.6"
|
- "3.6"
|
||||||
|
|
|
@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## Removed
|
||||||
|
- Support for Python 2 ([#346](https://github.com/pdfminer/pdfminer.six/pull/346))
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Enforce pep8 coding style by adding flake8 to CI ([#345](https://github.com/pdfminer/pdfminer.six/pull/345))
|
- Enforce pep8 coding style by adding flake8 to CI ([#345](https://github.com/pdfminer/pdfminer.six/pull/345))
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,9 @@ Any contribution is appreciated! You might want to:
|
||||||
* Pull requests should be merged to develop, not master. This ensures that master always equals the released version.
|
* Pull requests should be merged to develop, not master. This ensures that master always equals the released version.
|
||||||
* Include unit tests when possible. In case of bugs, this will help to prevent the same mistake in the future. In case
|
* Include unit tests when possible. In case of bugs, this will help to prevent the same mistake in the future. In case
|
||||||
of features, this will show that your code works correctly.
|
of features, this will show that your code works correctly.
|
||||||
* Code should work for Python 2.7 and Python 3.x (for now), conform to PEP8 code style (enforced by
|
* Code should work for Python 3.4+.
|
||||||
[flake8](http://flake8.pycqa.org/en/latest/)) and properly documented with docstrings.
|
* Code should conform to PEP8 coding style.
|
||||||
|
* New features should be well documented using docstrings.
|
||||||
* Check spelling and grammar.
|
* Check spelling and grammar.
|
||||||
* Don't forget to update the [CHANGELOG.md](CHANGELOG.md#[Unreleased])
|
* Don't forget to update the [CHANGELOG.md](CHANGELOG.md#[Unreleased])
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,8 @@ Features
|
||||||
How to use
|
How to use
|
||||||
----------
|
----------
|
||||||
|
|
||||||
* Install Python 2.7 or newer. Note that Python 2 support is dropped at
|
* Install Python 3.4 or newer
|
||||||
January, 2020.
|
* Install
|
||||||
|
|
||||||
`pip install pdfminer.six`
|
`pip install pdfminer.six`
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
"""
|
||||||
Fork of PDFMiner using six for Python 2+3 compatibility
|
Fork of PDFMiner
|
||||||
|
|
||||||
PDFMiner is a tool for extracting information from PDF documents.
|
PDFMiner is a tool for extracting information from PDF documents.
|
||||||
Unlike other PDF-related tools, it focuses entirely on getting and analyzing
|
Unlike other PDF-related tools, it focuses entirely on getting and analyzing
|
||||||
|
@ -10,18 +9,8 @@ It includes a PDF converter that can transform PDF files into other text
|
||||||
formats (such as HTML). It has an extensible PDF parser that can be used for
|
formats (such as HTML). It has an extensible PDF parser that can be used for
|
||||||
other purposes instead of text analysis.
|
other purposes instead of text analysis.
|
||||||
"""
|
"""
|
||||||
import sys
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
__version__ = '20191110'
|
__version__ = '20191110'
|
||||||
|
|
||||||
|
|
||||||
if sys.version_info < (3, 0):
|
|
||||||
warnings.warn('On January 1st, 2020, '
|
|
||||||
'pdfminer.six will stop supporting Python 2. '
|
|
||||||
'Please upgrade to Python 3. '
|
|
||||||
'For more information see '
|
|
||||||
'https://github.com/pdfminer/pdfminer.six/issues/194')
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print(__version__)
|
print(__version__)
|
||||||
|
|
|
@ -1,15 +1,11 @@
|
||||||
|
|
||||||
|
|
||||||
""" Python implementation of Arcfour encryption algorithm.
|
""" Python implementation of Arcfour encryption algorithm.
|
||||||
See https://en.wikipedia.org/wiki/RC4
|
See https://en.wikipedia.org/wiki/RC4
|
||||||
This code is in the public domain.
|
This code is in the public domain.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import six # Python 2+3 compatibility
|
|
||||||
|
|
||||||
|
class Arcfour:
|
||||||
class Arcfour(object):
|
|
||||||
|
|
||||||
def __init__(self, key):
|
def __init__(self, key):
|
||||||
# because Py3 range is not indexable
|
# because Py3 range is not indexable
|
||||||
|
@ -17,7 +13,7 @@ class Arcfour(object):
|
||||||
j = 0
|
j = 0
|
||||||
klen = len(key)
|
klen = len(key)
|
||||||
for i in range(256):
|
for i in range(256):
|
||||||
j = (j + s[i] + six.indexbytes(key, i % klen)) % 256
|
j = (j + s[i] + key[i % klen]) % 256
|
||||||
(s[i], s[j]) = (s[j], s[i])
|
(s[i], s[j]) = (s[j], s[i])
|
||||||
self.s = s
|
self.s = s
|
||||||
(self.i, self.j) = (0, 0)
|
(self.i, self.j) = (0, 0)
|
||||||
|
@ -27,12 +23,12 @@ class Arcfour(object):
|
||||||
(i, j) = (self.i, self.j)
|
(i, j) = (self.i, self.j)
|
||||||
s = self.s
|
s = self.s
|
||||||
r = b''
|
r = b''
|
||||||
for c in six.iterbytes(data):
|
for c in iter(data):
|
||||||
i = (i+1) % 256
|
i = (i+1) % 256
|
||||||
j = (j+s[i]) % 256
|
j = (j+s[i]) % 256
|
||||||
(s[i], s[j]) = (s[j], s[i])
|
(s[i], s[j]) = (s[j], s[i])
|
||||||
k = s[(s[i]+s[j]) % 256]
|
k = s[(s[i]+s[j]) % 256]
|
||||||
r += six.int2byte(c ^ k)
|
r += bytes((c ^ k,))
|
||||||
(self.i, self.j) = (i, j)
|
(self.i, self.j) = (i, j)
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
""" Python implementation of ASCII85/ASCIIHex decoder (Adobe version).
|
""" Python implementation of ASCII85/ASCIIHex decoder (Adobe version).
|
||||||
|
|
||||||
This code is in the public domain.
|
This code is in the public domain.
|
||||||
|
@ -9,8 +7,6 @@ This code is in the public domain.
|
||||||
import re
|
import re
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
import six # Python 2+3 compatibility
|
|
||||||
|
|
||||||
|
|
||||||
# ascii85decode(data)
|
# ascii85decode(data)
|
||||||
def ascii85decode(data):
|
def ascii85decode(data):
|
||||||
|
@ -26,8 +22,8 @@ def ascii85decode(data):
|
||||||
"""
|
"""
|
||||||
n = b = 0
|
n = b = 0
|
||||||
out = b''
|
out = b''
|
||||||
for i in six.iterbytes(data):
|
for i in iter(data):
|
||||||
c = six.int2byte(i)
|
c = bytes((i,))
|
||||||
if b'!' <= c and c <= b'u':
|
if b'!' <= c and c <= b'u':
|
||||||
n += 1
|
n += 1
|
||||||
b = b*85+(ord(c)-33)
|
b = b*85+(ord(c)-33)
|
||||||
|
@ -47,9 +43,8 @@ def ascii85decode(data):
|
||||||
|
|
||||||
|
|
||||||
# asciihexdecode(data)
|
# asciihexdecode(data)
|
||||||
hex_re = re.compile(b'([a-f0-9]{2})', re.IGNORECASE)
|
hex_re = re.compile(br'([a-f\d]{2})', re.IGNORECASE)
|
||||||
trail_re = re.compile(b'^(?:[a-f0-9]{2}|[ \t\n\r\f\v])*'
|
trail_re = re.compile(br'^(?:[a-f\d]{2}|\s)*([a-f\d])[\s>]*$', re.IGNORECASE)
|
||||||
b'([a-f0-9])[ \t\n\r\f\v>]*$', re.IGNORECASE)
|
|
||||||
|
|
||||||
|
|
||||||
def asciihexdecode(data):
|
def asciihexdecode(data):
|
||||||
|
@ -64,7 +59,7 @@ def asciihexdecode(data):
|
||||||
"""
|
"""
|
||||||
def decode(x):
|
def decode(x):
|
||||||
i = int(x, 16)
|
i = int(x, 16)
|
||||||
return six.int2byte(i)
|
return bytes((i,))
|
||||||
|
|
||||||
out = b''
|
out = b''
|
||||||
for x in hex_re.findall(data):
|
for x in hex_re.findall(data):
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
# CCITT Fax decoder
|
# CCITT Fax decoder
|
||||||
#
|
#
|
||||||
# Bugs: uncompressed mode untested.
|
# Bugs: uncompressed mode untested.
|
||||||
|
@ -15,20 +14,12 @@
|
||||||
import sys
|
import sys
|
||||||
import array
|
import array
|
||||||
|
|
||||||
import six # Python 2+3 compatibility
|
|
||||||
|
|
||||||
if six.PY3:
|
|
||||||
def get_bytes(data):
|
def get_bytes(data):
|
||||||
for byte in data:
|
yield from data
|
||||||
yield byte
|
|
||||||
else:
|
|
||||||
def get_bytes(data):
|
|
||||||
for char in data:
|
|
||||||
yield ord(char)
|
|
||||||
|
|
||||||
|
|
||||||
class BitParser(object):
|
class BitParser:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._pos = 0
|
self._pos = 0
|
||||||
return
|
return
|
||||||
|
|
|
@ -13,9 +13,6 @@ import sys
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
import gzip
|
import gzip
|
||||||
try:
|
|
||||||
import cPickle as pickle
|
|
||||||
except ImportError:
|
|
||||||
import pickle as pickle
|
import pickle as pickle
|
||||||
import struct
|
import struct
|
||||||
import logging
|
import logging
|
||||||
|
@ -29,7 +26,6 @@ from .encodingdb import name2unicode
|
||||||
from .utils import choplist
|
from .utils import choplist
|
||||||
from .utils import nunpack
|
from .utils import nunpack
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -38,7 +34,7 @@ class CMapError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class CMapBase(object):
|
class CMapBase:
|
||||||
|
|
||||||
debug = 0
|
debug = 0
|
||||||
|
|
||||||
|
@ -77,7 +73,7 @@ class CMap(CMapBase):
|
||||||
assert isinstance(cmap, CMap), str(type(cmap))
|
assert isinstance(cmap, CMap), str(type(cmap))
|
||||||
|
|
||||||
def copy(dst, src):
|
def copy(dst, src):
|
||||||
for (k, v) in six.iteritems(src):
|
for (k, v) in src.items():
|
||||||
if isinstance(v, dict):
|
if isinstance(v, dict):
|
||||||
d = {}
|
d = {}
|
||||||
dst[k] = d
|
dst[k] = d
|
||||||
|
@ -90,7 +86,7 @@ class CMap(CMapBase):
|
||||||
def decode(self, code):
|
def decode(self, code):
|
||||||
log.debug('decode: %r, %r', self, code)
|
log.debug('decode: %r, %r', self, code)
|
||||||
d = self.code2cid
|
d = self.code2cid
|
||||||
for i in six.iterbytes(code):
|
for i in iter(code):
|
||||||
if i in d:
|
if i in d:
|
||||||
d = d[i]
|
d = d[i]
|
||||||
if isinstance(d, int):
|
if isinstance(d, int):
|
||||||
|
@ -104,7 +100,7 @@ class CMap(CMapBase):
|
||||||
if code2cid is None:
|
if code2cid is None:
|
||||||
code2cid = self.code2cid
|
code2cid = self.code2cid
|
||||||
code = ()
|
code = ()
|
||||||
for (k, v) in sorted(six.iteritems(code2cid)):
|
for (k, v) in sorted(code2cid.items()):
|
||||||
c = code+(k,)
|
c = code+(k,)
|
||||||
if isinstance(v, int):
|
if isinstance(v, int):
|
||||||
out.write('code %r = cid %d\n' % (c, v))
|
out.write('code %r = cid %d\n' % (c, v))
|
||||||
|
@ -148,7 +144,7 @@ class UnicodeMap(CMapBase):
|
||||||
return self.cid2unichr[cid]
|
return self.cid2unichr[cid]
|
||||||
|
|
||||||
def dump(self, out=sys.stdout):
|
def dump(self, out=sys.stdout):
|
||||||
for (k, v) in sorted(six.iteritems(self.cid2unichr)):
|
for (k, v) in sorted(self.cid2unichr.items()):
|
||||||
out.write('cid %d = unicode %r\n' % (k, v))
|
out.write('cid %d = unicode %r\n' % (k, v))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -183,7 +179,7 @@ class FileUnicodeMap(UnicodeMap):
|
||||||
# Interpret as UTF-16BE.
|
# Interpret as UTF-16BE.
|
||||||
self.cid2unichr[cid] = code.decode('UTF-16BE', 'ignore')
|
self.cid2unichr[cid] = code.decode('UTF-16BE', 'ignore')
|
||||||
elif isinstance(code, int):
|
elif isinstance(code, int):
|
||||||
self.cid2unichr[cid] = six.unichr(code)
|
self.cid2unichr[cid] = chr(code)
|
||||||
else:
|
else:
|
||||||
raise TypeError(code)
|
raise TypeError(code)
|
||||||
return
|
return
|
||||||
|
@ -211,7 +207,7 @@ class PyUnicodeMap(UnicodeMap):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class CMapDB(object):
|
class CMapDB:
|
||||||
|
|
||||||
_cmap_cache = {}
|
_cmap_cache = {}
|
||||||
_umap_cache = {}
|
_umap_cache = {}
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
@ -23,7 +22,6 @@ from .utils import enc
|
||||||
from .utils import bbox2str
|
from .utils import bbox2str
|
||||||
from . import utils
|
from . import utils
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -115,7 +113,7 @@ class PDFLayoutAnalyzer(PDFTextDevice):
|
||||||
graphicstate):
|
graphicstate):
|
||||||
try:
|
try:
|
||||||
text = font.to_unichr(cid)
|
text = font.to_unichr(cid)
|
||||||
assert isinstance(text, six.text_type), str(type(text))
|
assert isinstance(text, str), str(type(text))
|
||||||
except PDFUnicodeNotDefined:
|
except PDFUnicodeNotDefined:
|
||||||
text = self.handle_undefined_char(font, cid)
|
text = self.handle_undefined_char(font, cid)
|
||||||
textwidth = font.char_width(cid)
|
textwidth = font.char_width(cid)
|
||||||
|
@ -168,7 +166,7 @@ class PDFConverter(PDFLayoutAnalyzer):
|
||||||
self.outfp_binary = False
|
self.outfp_binary = False
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
self.outfp.write(u"é")
|
self.outfp.write("é")
|
||||||
self.outfp_binary = False
|
self.outfp_binary = False
|
||||||
except TypeError:
|
except TypeError:
|
||||||
self.outfp_binary = True
|
self.outfp_binary = True
|
||||||
|
@ -186,7 +184,7 @@ class TextConverter(PDFConverter):
|
||||||
|
|
||||||
def write_text(self, text):
|
def write_text(self, text):
|
||||||
text = utils.compatible_encode_method(text, self.codec, 'ignore')
|
text = utils.compatible_encode_method(text, self.codec, 'ignore')
|
||||||
if six.PY3 and self.outfp_binary:
|
if self.outfp_binary:
|
||||||
text = text.encode()
|
text = text.encode()
|
||||||
self.outfp.write(text)
|
self.outfp.write(text)
|
||||||
return
|
return
|
||||||
|
@ -285,7 +283,7 @@ class HTMLConverter(PDFConverter):
|
||||||
return
|
return
|
||||||
|
|
||||||
def write_footer(self):
|
def write_footer(self):
|
||||||
page_links = ['<a href="#%s">%s</a>' % (i, i)
|
page_links = ['<a href="#{}">{}</a>'.format(i, i)
|
||||||
for i in range(1, self.pageno)]
|
for i in range(1, self.pageno)]
|
||||||
s = '<div style="position:absolute; top:0px;">Page: %s</div>\n' % \
|
s = '<div style="position:absolute; top:0px;">Page: %s</div>\n' % \
|
||||||
', '.join(page_links)
|
', '.join(page_links)
|
||||||
|
@ -385,8 +383,8 @@ class HTMLConverter(PDFConverter):
|
||||||
if self.showpageno:
|
if self.showpageno:
|
||||||
self.write('<div style="position:absolute; top:%dpx;">' %
|
self.write('<div style="position:absolute; top:%dpx;">' %
|
||||||
((self._yoffset-item.y1)*self.scale))
|
((self._yoffset-item.y1)*self.scale))
|
||||||
self.write('<a name="%s">Page %s</a></div>\n' % (
|
self.write('<a name="{}">Page {}</a></div>\n'
|
||||||
item.pageid, item.pageid))
|
.format(item.pageid, item.pageid))
|
||||||
for child in item:
|
for child in item:
|
||||||
render(child)
|
render(child)
|
||||||
if item.groups is not None:
|
if item.groups is not None:
|
||||||
|
@ -449,7 +447,7 @@ class HTMLConverter(PDFConverter):
|
||||||
|
|
||||||
class XMLConverter(PDFConverter):
|
class XMLConverter(PDFConverter):
|
||||||
|
|
||||||
CONTROL = re.compile(u'[\x00-\x08\x0b-\x0c\x0e-\x1f]')
|
CONTROL = re.compile('[\x00-\x08\x0b-\x0c\x0e-\x1f]')
|
||||||
|
|
||||||
def __init__(self, rsrcmgr, outfp, codec='utf-8', pageno=1, laparams=None,
|
def __init__(self, rsrcmgr, outfp, codec='utf-8', pageno=1, laparams=None,
|
||||||
imagewriter=None, stripcontrol=False):
|
imagewriter=None, stripcontrol=False):
|
||||||
|
@ -480,7 +478,7 @@ class XMLConverter(PDFConverter):
|
||||||
|
|
||||||
def write_text(self, text):
|
def write_text(self, text):
|
||||||
if self.stripcontrol:
|
if self.stripcontrol:
|
||||||
text = self.CONTROL.sub(u'', text)
|
text = self.CONTROL.sub('', text)
|
||||||
self.write(enc(text, None))
|
self.write(enc(text, None))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
|
|
||||||
import six # Python 2+3 compatibility
|
|
||||||
|
|
||||||
from .glyphlist import glyphname2unicode
|
from .glyphlist import glyphname2unicode
|
||||||
from .latin_enc import ENCODING
|
from .latin_enc import ENCODING
|
||||||
from .psparser import PSLiteral
|
from .psparser import PSLiteral
|
||||||
|
@ -45,7 +43,7 @@ def name2unicode(name):
|
||||||
for i in range(0, len(name_without_uni), 4)]
|
for i in range(0, len(name_without_uni), 4)]
|
||||||
for digit in unicode_digits:
|
for digit in unicode_digits:
|
||||||
raise_key_error_for_invalid_unicode(digit)
|
raise_key_error_for_invalid_unicode(digit)
|
||||||
characters = map(six.unichr, unicode_digits)
|
characters = map(chr, unicode_digits)
|
||||||
return ''.join(characters)
|
return ''.join(characters)
|
||||||
|
|
||||||
elif name.startswith('u'):
|
elif name.startswith('u'):
|
||||||
|
@ -55,7 +53,7 @@ def name2unicode(name):
|
||||||
4 <= len(name_without_u) <= 6:
|
4 <= len(name_without_u) <= 6:
|
||||||
unicode_digit = int(name_without_u, base=16)
|
unicode_digit = int(name_without_u, base=16)
|
||||||
raise_key_error_for_invalid_unicode(unicode_digit)
|
raise_key_error_for_invalid_unicode(unicode_digit)
|
||||||
return six.unichr(unicode_digit)
|
return chr(unicode_digit)
|
||||||
|
|
||||||
raise KeyError('Could not convert unicode name "%s" to character because '
|
raise KeyError('Could not convert unicode name "%s" to character because '
|
||||||
'it does not match specification' % name)
|
'it does not match specification' % name)
|
||||||
|
@ -72,7 +70,7 @@ def raise_key_error_for_invalid_unicode(unicode_digit):
|
||||||
'it is in the range D800 through DFFF' % unicode_digit)
|
'it is in the range D800 through DFFF' % unicode_digit)
|
||||||
|
|
||||||
|
|
||||||
class EncodingDB(object):
|
class EncodingDB:
|
||||||
|
|
||||||
std2unicode = {}
|
std2unicode = {}
|
||||||
mac2unicode = {}
|
mac2unicode = {}
|
||||||
|
|
|
@ -29,18 +29,18 @@ The following data were extracted from the AFM files:
|
||||||
# flake8: noqa
|
# flake8: noqa
|
||||||
|
|
||||||
FONT_METRICS = {
|
FONT_METRICS = {
|
||||||
'Courier': ({'FontName': 'Courier', 'Descent': -194.0, 'FontBBox': (-6.0, -249.0, 639.0, 803.0), 'FontWeight': 'Medium', 'CapHeight': 572.0, 'FontFamily': 'Courier', 'Flags': 64, 'XHeight': 434.0, 'ItalicAngle': 0.0, 'Ascent': 627.0}, {u' ': 600, u'!': 600, u'"': 600, u'#': 600, u'$': 600, u'%': 600, u'&': 600, u"'": 600, u'(': 600, u')': 600, u'*': 600, u'+': 600, u',': 600, u'-': 600, u'.': 600, u'/': 600, u'0': 600, u'1': 600, u'2': 600, u'3': 600, u'4': 600, u'5': 600, u'6': 600, u'7': 600, u'8': 600, u'9': 600, u':': 600, u';': 600, u'<': 600, u'=': 600, u'>': 600, u'?': 600, u'@': 600, u'A': 600, u'B': 600, u'C': 600, u'D': 600, u'E': 600, u'F': 600, u'G': 600, u'H': 600, u'I': 600, u'J': 600, u'K': 600, u'L': 600, u'M': 600, u'N': 600, u'O': 600, u'P': 600, u'Q': 600, u'R': 600, u'S': 600, u'T': 600, u'U': 600, u'V': 600, u'W': 600, u'X': 600, u'Y': 600, u'Z': 600, u'[': 600, u'\\': 600, u']': 600, u'^': 600, u'_': 600, u'`': 600, u'a': 600, u'b': 600, u'c': 600, u'd': 600, u'e': 600, u'f': 600, u'g': 600, u'h': 600, u'i': 600, u'j': 600, u'k': 600, u'l': 600, u'm': 600, u'n': 600, u'o': 600, u'p': 600, u'q': 600, u'r': 600, u's': 600, u't': 600, u'u': 600, u'v': 600, u'w': 600, u'x': 600, u'y': 600, u'z': 600, u'{': 600, u'|': 600, u'}': 600, u'~': 600, u'\xa1': 600, u'\xa2': 600, u'\xa3': 600, u'\xa4': 600, u'\xa5': 600, u'\xa6': 600, u'\xa7': 600, u'\xa8': 600, u'\xa9': 600, u'\xaa': 600, u'\xab': 600, u'\xac': 600, u'\xae': 600, u'\xaf': 600, u'\xb0': 600, u'\xb1': 600, u'\xb2': 600, u'\xb3': 600, u'\xb4': 600, u'\xb5': 600, u'\xb6': 600, u'\xb7': 600, u'\xb8': 600, u'\xb9': 600, u'\xba': 600, u'\xbb': 600, u'\xbc': 600, u'\xbd': 600, u'\xbe': 600, u'\xbf': 600, u'\xc0': 600, u'\xc1': 600, u'\xc2': 600, u'\xc3': 600, u'\xc4': 600, u'\xc5': 600, u'\xc6': 600, u'\xc7': 600, u'\xc8': 600, u'\xc9': 600, u'\xca': 600, u'\xcb': 600, u'\xcc': 600, u'\xcd': 600, u'\xce': 600, u'\xcf': 600, u'\xd0': 600, u'\xd1': 600, u'\xd2': 600, u'\xd3': 600, u'\xd4': 600, u'\xd5': 600, u'\xd6': 600, u'\xd7': 600, u'\xd8': 600, u'\xd9': 600, u'\xda': 600, u'\xdb': 600, u'\xdc': 600, u'\xdd': 600, u'\xde': 600, u'\xdf': 600, u'\xe0': 600, u'\xe1': 600, u'\xe2': 600, u'\xe3': 600, u'\xe4': 600, u'\xe5': 600, u'\xe6': 600, u'\xe7': 600, u'\xe8': 600, u'\xe9': 600, u'\xea': 600, u'\xeb': 600, u'\xec': 600, u'\xed': 600, u'\xee': 600, u'\xef': 600, u'\xf0': 600, u'\xf1': 600, u'\xf2': 600, u'\xf3': 600, u'\xf4': 600, u'\xf5': 600, u'\xf6': 600, u'\xf7': 600, u'\xf8': 600, u'\xf9': 600, u'\xfa': 600, u'\xfb': 600, u'\xfc': 600, u'\xfd': 600, u'\xfe': 600, u'\xff': 600, u'\u0100': 600, u'\u0101': 600, u'\u0102': 600, u'\u0103': 600, u'\u0104': 600, u'\u0105': 600, u'\u0106': 600, u'\u0107': 600, u'\u010c': 600, u'\u010d': 600, u'\u010e': 600, u'\u010f': 600, u'\u0110': 600, u'\u0111': 600, u'\u0112': 600, u'\u0113': 600, u'\u0116': 600, u'\u0117': 600, u'\u0118': 600, u'\u0119': 600, u'\u011a': 600, u'\u011b': 600, u'\u011e': 600, u'\u011f': 600, u'\u0122': 600, u'\u0123': 600, u'\u012a': 600, u'\u012b': 600, u'\u012e': 600, u'\u012f': 600, u'\u0130': 600, u'\u0131': 600, u'\u0136': 600, u'\u0137': 600, u'\u0139': 600, u'\u013a': 600, u'\u013b': 600, u'\u013c': 600, u'\u013d': 600, u'\u013e': 600, u'\u0141': 600, u'\u0142': 600, u'\u0143': 600, u'\u0144': 600, u'\u0145': 600, u'\u0146': 600, u'\u0147': 600, u'\u0148': 600, u'\u014c': 600, u'\u014d': 600, u'\u0150': 600, u'\u0151': 600, u'\u0152': 600, u'\u0153': 600, u'\u0154': 600, u'\u0155': 600, u'\u0156': 600, u'\u0157': 600, u'\u0158': 600, u'\u0159': 600, u'\u015a': 600, u'\u015b': 600, u'\u015e': 600, u'\u015f': 600, u'\u0160': 600, u'\u0161': 600, u'\u0162': 600, u'\u0163': 600, u'\u0164': 600, u'\u0165': 600, u'\u016a': 600, u'\u016b': 600, u'\u016e': 600, u'\u016f': 600, u'\u0170': 600, u'\u0171': 600, u'\u0172': 600, u'\u0173': 600, u'\u0178': 600, u'\u0179': 600, u'\u017a': 600, u'\u017b': 600, u'\u017c': 600, u'\u017d': 600, u'\u017e': 600, u'\u0192': 600, u'\u0218': 600, u'\u0219': 600, u'\u02c6': 600, u'\u02c7': 600, u'\u02d8': 600, u'\u02d9': 600, u'\u02da': 600, u'\u02db': 600, u'\u02dc': 600, u'\u02dd': 600, u'\u2013': 600, u'\u2014': 600, u'\u2018': 600, u'\u2019': 600, u'\u201a': 600, u'\u201c': 600, u'\u201d': 600, u'\u201e': 600, u'\u2020': 600, u'\u2021': 600, u'\u2022': 600, u'\u2026': 600, u'\u2030': 600, u'\u2039': 600, u'\u203a': 600, u'\u2044': 600, u'\u2122': 600, u'\u2202': 600, u'\u2206': 600, u'\u2211': 600, u'\u2212': 600, u'\u221a': 600, u'\u2260': 600, u'\u2264': 600, u'\u2265': 600, u'\u25ca': 600, u'\uf6c3': 600, u'\ufb01': 600, u'\ufb02': 600}),
|
'Courier': ({'FontName': 'Courier', 'Descent': -194.0, 'FontBBox': (-6.0, -249.0, 639.0, 803.0), 'FontWeight': 'Medium', 'CapHeight': 572.0, 'FontFamily': 'Courier', 'Flags': 64, 'XHeight': 434.0, 'ItalicAngle': 0.0, 'Ascent': 627.0}, {' ': 600, '!': 600, '"': 600, '#': 600, '$': 600, '%': 600, '&': 600, "'": 600, '(': 600, ')': 600, '*': 600, '+': 600, ',': 600, '-': 600, '.': 600, '/': 600, '0': 600, '1': 600, '2': 600, '3': 600, '4': 600, '5': 600, '6': 600, '7': 600, '8': 600, '9': 600, ':': 600, ';': 600, '<': 600, '=': 600, '>': 600, '?': 600, '@': 600, 'A': 600, 'B': 600, 'C': 600, 'D': 600, 'E': 600, 'F': 600, 'G': 600, 'H': 600, 'I': 600, 'J': 600, 'K': 600, 'L': 600, 'M': 600, 'N': 600, 'O': 600, 'P': 600, 'Q': 600, 'R': 600, 'S': 600, 'T': 600, 'U': 600, 'V': 600, 'W': 600, 'X': 600, 'Y': 600, 'Z': 600, '[': 600, '\\': 600, ']': 600, '^': 600, '_': 600, '`': 600, 'a': 600, 'b': 600, 'c': 600, 'd': 600, 'e': 600, 'f': 600, 'g': 600, 'h': 600, 'i': 600, 'j': 600, 'k': 600, 'l': 600, 'm': 600, 'n': 600, 'o': 600, 'p': 600, 'q': 600, 'r': 600, 's': 600, 't': 600, 'u': 600, 'v': 600, 'w': 600, 'x': 600, 'y': 600, 'z': 600, '{': 600, '|': 600, '}': 600, '~': 600, '\xa1': 600, '\xa2': 600, '\xa3': 600, '\xa4': 600, '\xa5': 600, '\xa6': 600, '\xa7': 600, '\xa8': 600, '\xa9': 600, '\xaa': 600, '\xab': 600, '\xac': 600, '\xae': 600, '\xaf': 600, '\xb0': 600, '\xb1': 600, '\xb2': 600, '\xb3': 600, '\xb4': 600, '\xb5': 600, '\xb6': 600, '\xb7': 600, '\xb8': 600, '\xb9': 600, '\xba': 600, '\xbb': 600, '\xbc': 600, '\xbd': 600, '\xbe': 600, '\xbf': 600, '\xc0': 600, '\xc1': 600, '\xc2': 600, '\xc3': 600, '\xc4': 600, '\xc5': 600, '\xc6': 600, '\xc7': 600, '\xc8': 600, '\xc9': 600, '\xca': 600, '\xcb': 600, '\xcc': 600, '\xcd': 600, '\xce': 600, '\xcf': 600, '\xd0': 600, '\xd1': 600, '\xd2': 600, '\xd3': 600, '\xd4': 600, '\xd5': 600, '\xd6': 600, '\xd7': 600, '\xd8': 600, '\xd9': 600, '\xda': 600, '\xdb': 600, '\xdc': 600, '\xdd': 600, '\xde': 600, '\xdf': 600, '\xe0': 600, '\xe1': 600, '\xe2': 600, '\xe3': 600, '\xe4': 600, '\xe5': 600, '\xe6': 600, '\xe7': 600, '\xe8': 600, '\xe9': 600, '\xea': 600, '\xeb': 600, '\xec': 600, '\xed': 600, '\xee': 600, '\xef': 600, '\xf0': 600, '\xf1': 600, '\xf2': 600, '\xf3': 600, '\xf4': 600, '\xf5': 600, '\xf6': 600, '\xf7': 600, '\xf8': 600, '\xf9': 600, '\xfa': 600, '\xfb': 600, '\xfc': 600, '\xfd': 600, '\xfe': 600, '\xff': 600, '\u0100': 600, '\u0101': 600, '\u0102': 600, '\u0103': 600, '\u0104': 600, '\u0105': 600, '\u0106': 600, '\u0107': 600, '\u010c': 600, '\u010d': 600, '\u010e': 600, '\u010f': 600, '\u0110': 600, '\u0111': 600, '\u0112': 600, '\u0113': 600, '\u0116': 600, '\u0117': 600, '\u0118': 600, '\u0119': 600, '\u011a': 600, '\u011b': 600, '\u011e': 600, '\u011f': 600, '\u0122': 600, '\u0123': 600, '\u012a': 600, '\u012b': 600, '\u012e': 600, '\u012f': 600, '\u0130': 600, '\u0131': 600, '\u0136': 600, '\u0137': 600, '\u0139': 600, '\u013a': 600, '\u013b': 600, '\u013c': 600, '\u013d': 600, '\u013e': 600, '\u0141': 600, '\u0142': 600, '\u0143': 600, '\u0144': 600, '\u0145': 600, '\u0146': 600, '\u0147': 600, '\u0148': 600, '\u014c': 600, '\u014d': 600, '\u0150': 600, '\u0151': 600, '\u0152': 600, '\u0153': 600, '\u0154': 600, '\u0155': 600, '\u0156': 600, '\u0157': 600, '\u0158': 600, '\u0159': 600, '\u015a': 600, '\u015b': 600, '\u015e': 600, '\u015f': 600, '\u0160': 600, '\u0161': 600, '\u0162': 600, '\u0163': 600, '\u0164': 600, '\u0165': 600, '\u016a': 600, '\u016b': 600, '\u016e': 600, '\u016f': 600, '\u0170': 600, '\u0171': 600, '\u0172': 600, '\u0173': 600, '\u0178': 600, '\u0179': 600, '\u017a': 600, '\u017b': 600, '\u017c': 600, '\u017d': 600, '\u017e': 600, '\u0192': 600, '\u0218': 600, '\u0219': 600, '\u02c6': 600, '\u02c7': 600, '\u02d8': 600, '\u02d9': 600, '\u02da': 600, '\u02db': 600, '\u02dc': 600, '\u02dd': 600, '\u2013': 600, '\u2014': 600, '\u2018': 600, '\u2019': 600, '\u201a': 600, '\u201c': 600, '\u201d': 600, '\u201e': 600, '\u2020': 600, '\u2021': 600, '\u2022': 600, '\u2026': 600, '\u2030': 600, '\u2039': 600, '\u203a': 600, '\u2044': 600, '\u2122': 600, '\u2202': 600, '\u2206': 600, '\u2211': 600, '\u2212': 600, '\u221a': 600, '\u2260': 600, '\u2264': 600, '\u2265': 600, '\u25ca': 600, '\uf6c3': 600, '\ufb01': 600, '\ufb02': 600}),
|
||||||
'Courier-Bold': ({'FontName': 'Courier-Bold', 'Descent': -194.0, 'FontBBox': (-88.0, -249.0, 697.0, 811.0), 'FontWeight': 'Bold', 'CapHeight': 572.0, 'FontFamily': 'Courier', 'Flags': 64, 'XHeight': 434.0, 'ItalicAngle': 0.0, 'Ascent': 627.0}, {u' ': 600, u'!': 600, u'"': 600, u'#': 600, u'$': 600, u'%': 600, u'&': 600, u"'": 600, u'(': 600, u')': 600, u'*': 600, u'+': 600, u',': 600, u'-': 600, u'.': 600, u'/': 600, u'0': 600, u'1': 600, u'2': 600, u'3': 600, u'4': 600, u'5': 600, u'6': 600, u'7': 600, u'8': 600, u'9': 600, u':': 600, u';': 600, u'<': 600, u'=': 600, u'>': 600, u'?': 600, u'@': 600, u'A': 600, u'B': 600, u'C': 600, u'D': 600, u'E': 600, u'F': 600, u'G': 600, u'H': 600, u'I': 600, u'J': 600, u'K': 600, u'L': 600, u'M': 600, u'N': 600, u'O': 600, u'P': 600, u'Q': 600, u'R': 600, u'S': 600, u'T': 600, u'U': 600, u'V': 600, u'W': 600, u'X': 600, u'Y': 600, u'Z': 600, u'[': 600, u'\\': 600, u']': 600, u'^': 600, u'_': 600, u'`': 600, u'a': 600, u'b': 600, u'c': 600, u'd': 600, u'e': 600, u'f': 600, u'g': 600, u'h': 600, u'i': 600, u'j': 600, u'k': 600, u'l': 600, u'm': 600, u'n': 600, u'o': 600, u'p': 600, u'q': 600, u'r': 600, u's': 600, u't': 600, u'u': 600, u'v': 600, u'w': 600, u'x': 600, u'y': 600, u'z': 600, u'{': 600, u'|': 600, u'}': 600, u'~': 600, u'\xa1': 600, u'\xa2': 600, u'\xa3': 600, u'\xa4': 600, u'\xa5': 600, u'\xa6': 600, u'\xa7': 600, u'\xa8': 600, u'\xa9': 600, u'\xaa': 600, u'\xab': 600, u'\xac': 600, u'\xae': 600, u'\xaf': 600, u'\xb0': 600, u'\xb1': 600, u'\xb2': 600, u'\xb3': 600, u'\xb4': 600, u'\xb5': 600, u'\xb6': 600, u'\xb7': 600, u'\xb8': 600, u'\xb9': 600, u'\xba': 600, u'\xbb': 600, u'\xbc': 600, u'\xbd': 600, u'\xbe': 600, u'\xbf': 600, u'\xc0': 600, u'\xc1': 600, u'\xc2': 600, u'\xc3': 600, u'\xc4': 600, u'\xc5': 600, u'\xc6': 600, u'\xc7': 600, u'\xc8': 600, u'\xc9': 600, u'\xca': 600, u'\xcb': 600, u'\xcc': 600, u'\xcd': 600, u'\xce': 600, u'\xcf': 600, u'\xd0': 600, u'\xd1': 600, u'\xd2': 600, u'\xd3': 600, u'\xd4': 600, u'\xd5': 600, u'\xd6': 600, u'\xd7': 600, u'\xd8': 600, u'\xd9': 600, u'\xda': 600, u'\xdb': 600, u'\xdc': 600, u'\xdd': 600, u'\xde': 600, u'\xdf': 600, u'\xe0': 600, u'\xe1': 600, u'\xe2': 600, u'\xe3': 600, u'\xe4': 600, u'\xe5': 600, u'\xe6': 600, u'\xe7': 600, u'\xe8': 600, u'\xe9': 600, u'\xea': 600, u'\xeb': 600, u'\xec': 600, u'\xed': 600, u'\xee': 600, u'\xef': 600, u'\xf0': 600, u'\xf1': 600, u'\xf2': 600, u'\xf3': 600, u'\xf4': 600, u'\xf5': 600, u'\xf6': 600, u'\xf7': 600, u'\xf8': 600, u'\xf9': 600, u'\xfa': 600, u'\xfb': 600, u'\xfc': 600, u'\xfd': 600, u'\xfe': 600, u'\xff': 600, u'\u0100': 600, u'\u0101': 600, u'\u0102': 600, u'\u0103': 600, u'\u0104': 600, u'\u0105': 600, u'\u0106': 600, u'\u0107': 600, u'\u010c': 600, u'\u010d': 600, u'\u010e': 600, u'\u010f': 600, u'\u0110': 600, u'\u0111': 600, u'\u0112': 600, u'\u0113': 600, u'\u0116': 600, u'\u0117': 600, u'\u0118': 600, u'\u0119': 600, u'\u011a': 600, u'\u011b': 600, u'\u011e': 600, u'\u011f': 600, u'\u0122': 600, u'\u0123': 600, u'\u012a': 600, u'\u012b': 600, u'\u012e': 600, u'\u012f': 600, u'\u0130': 600, u'\u0131': 600, u'\u0136': 600, u'\u0137': 600, u'\u0139': 600, u'\u013a': 600, u'\u013b': 600, u'\u013c': 600, u'\u013d': 600, u'\u013e': 600, u'\u0141': 600, u'\u0142': 600, u'\u0143': 600, u'\u0144': 600, u'\u0145': 600, u'\u0146': 600, u'\u0147': 600, u'\u0148': 600, u'\u014c': 600, u'\u014d': 600, u'\u0150': 600, u'\u0151': 600, u'\u0152': 600, u'\u0153': 600, u'\u0154': 600, u'\u0155': 600, u'\u0156': 600, u'\u0157': 600, u'\u0158': 600, u'\u0159': 600, u'\u015a': 600, u'\u015b': 600, u'\u015e': 600, u'\u015f': 600, u'\u0160': 600, u'\u0161': 600, u'\u0162': 600, u'\u0163': 600, u'\u0164': 600, u'\u0165': 600, u'\u016a': 600, u'\u016b': 600, u'\u016e': 600, u'\u016f': 600, u'\u0170': 600, u'\u0171': 600, u'\u0172': 600, u'\u0173': 600, u'\u0178': 600, u'\u0179': 600, u'\u017a': 600, u'\u017b': 600, u'\u017c': 600, u'\u017d': 600, u'\u017e': 600, u'\u0192': 600, u'\u0218': 600, u'\u0219': 600, u'\u02c6': 600, u'\u02c7': 600, u'\u02d8': 600, u'\u02d9': 600, u'\u02da': 600, u'\u02db': 600, u'\u02dc': 600, u'\u02dd': 600, u'\u2013': 600, u'\u2014': 600, u'\u2018': 600, u'\u2019': 600, u'\u201a': 600, u'\u201c': 600, u'\u201d': 600, u'\u201e': 600, u'\u2020': 600, u'\u2021': 600, u'\u2022': 600, u'\u2026': 600, u'\u2030': 600, u'\u2039': 600, u'\u203a': 600, u'\u2044': 600, u'\u2122': 600, u'\u2202': 600, u'\u2206': 600, u'\u2211': 600, u'\u2212': 600, u'\u221a': 600, u'\u2260': 600, u'\u2264': 600, u'\u2265': 600, u'\u25ca': 600, u'\uf6c3': 600, u'\ufb01': 600, u'\ufb02': 600}),
|
'Courier-Bold': ({'FontName': 'Courier-Bold', 'Descent': -194.0, 'FontBBox': (-88.0, -249.0, 697.0, 811.0), 'FontWeight': 'Bold', 'CapHeight': 572.0, 'FontFamily': 'Courier', 'Flags': 64, 'XHeight': 434.0, 'ItalicAngle': 0.0, 'Ascent': 627.0}, {' ': 600, '!': 600, '"': 600, '#': 600, '$': 600, '%': 600, '&': 600, "'": 600, '(': 600, ')': 600, '*': 600, '+': 600, ',': 600, '-': 600, '.': 600, '/': 600, '0': 600, '1': 600, '2': 600, '3': 600, '4': 600, '5': 600, '6': 600, '7': 600, '8': 600, '9': 600, ':': 600, ';': 600, '<': 600, '=': 600, '>': 600, '?': 600, '@': 600, 'A': 600, 'B': 600, 'C': 600, 'D': 600, 'E': 600, 'F': 600, 'G': 600, 'H': 600, 'I': 600, 'J': 600, 'K': 600, 'L': 600, 'M': 600, 'N': 600, 'O': 600, 'P': 600, 'Q': 600, 'R': 600, 'S': 600, 'T': 600, 'U': 600, 'V': 600, 'W': 600, 'X': 600, 'Y': 600, 'Z': 600, '[': 600, '\\': 600, ']': 600, '^': 600, '_': 600, '`': 600, 'a': 600, 'b': 600, 'c': 600, 'd': 600, 'e': 600, 'f': 600, 'g': 600, 'h': 600, 'i': 600, 'j': 600, 'k': 600, 'l': 600, 'm': 600, 'n': 600, 'o': 600, 'p': 600, 'q': 600, 'r': 600, 's': 600, 't': 600, 'u': 600, 'v': 600, 'w': 600, 'x': 600, 'y': 600, 'z': 600, '{': 600, '|': 600, '}': 600, '~': 600, '\xa1': 600, '\xa2': 600, '\xa3': 600, '\xa4': 600, '\xa5': 600, '\xa6': 600, '\xa7': 600, '\xa8': 600, '\xa9': 600, '\xaa': 600, '\xab': 600, '\xac': 600, '\xae': 600, '\xaf': 600, '\xb0': 600, '\xb1': 600, '\xb2': 600, '\xb3': 600, '\xb4': 600, '\xb5': 600, '\xb6': 600, '\xb7': 600, '\xb8': 600, '\xb9': 600, '\xba': 600, '\xbb': 600, '\xbc': 600, '\xbd': 600, '\xbe': 600, '\xbf': 600, '\xc0': 600, '\xc1': 600, '\xc2': 600, '\xc3': 600, '\xc4': 600, '\xc5': 600, '\xc6': 600, '\xc7': 600, '\xc8': 600, '\xc9': 600, '\xca': 600, '\xcb': 600, '\xcc': 600, '\xcd': 600, '\xce': 600, '\xcf': 600, '\xd0': 600, '\xd1': 600, '\xd2': 600, '\xd3': 600, '\xd4': 600, '\xd5': 600, '\xd6': 600, '\xd7': 600, '\xd8': 600, '\xd9': 600, '\xda': 600, '\xdb': 600, '\xdc': 600, '\xdd': 600, '\xde': 600, '\xdf': 600, '\xe0': 600, '\xe1': 600, '\xe2': 600, '\xe3': 600, '\xe4': 600, '\xe5': 600, '\xe6': 600, '\xe7': 600, '\xe8': 600, '\xe9': 600, '\xea': 600, '\xeb': 600, '\xec': 600, '\xed': 600, '\xee': 600, '\xef': 600, '\xf0': 600, '\xf1': 600, '\xf2': 600, '\xf3': 600, '\xf4': 600, '\xf5': 600, '\xf6': 600, '\xf7': 600, '\xf8': 600, '\xf9': 600, '\xfa': 600, '\xfb': 600, '\xfc': 600, '\xfd': 600, '\xfe': 600, '\xff': 600, '\u0100': 600, '\u0101': 600, '\u0102': 600, '\u0103': 600, '\u0104': 600, '\u0105': 600, '\u0106': 600, '\u0107': 600, '\u010c': 600, '\u010d': 600, '\u010e': 600, '\u010f': 600, '\u0110': 600, '\u0111': 600, '\u0112': 600, '\u0113': 600, '\u0116': 600, '\u0117': 600, '\u0118': 600, '\u0119': 600, '\u011a': 600, '\u011b': 600, '\u011e': 600, '\u011f': 600, '\u0122': 600, '\u0123': 600, '\u012a': 600, '\u012b': 600, '\u012e': 600, '\u012f': 600, '\u0130': 600, '\u0131': 600, '\u0136': 600, '\u0137': 600, '\u0139': 600, '\u013a': 600, '\u013b': 600, '\u013c': 600, '\u013d': 600, '\u013e': 600, '\u0141': 600, '\u0142': 600, '\u0143': 600, '\u0144': 600, '\u0145': 600, '\u0146': 600, '\u0147': 600, '\u0148': 600, '\u014c': 600, '\u014d': 600, '\u0150': 600, '\u0151': 600, '\u0152': 600, '\u0153': 600, '\u0154': 600, '\u0155': 600, '\u0156': 600, '\u0157': 600, '\u0158': 600, '\u0159': 600, '\u015a': 600, '\u015b': 600, '\u015e': 600, '\u015f': 600, '\u0160': 600, '\u0161': 600, '\u0162': 600, '\u0163': 600, '\u0164': 600, '\u0165': 600, '\u016a': 600, '\u016b': 600, '\u016e': 600, '\u016f': 600, '\u0170': 600, '\u0171': 600, '\u0172': 600, '\u0173': 600, '\u0178': 600, '\u0179': 600, '\u017a': 600, '\u017b': 600, '\u017c': 600, '\u017d': 600, '\u017e': 600, '\u0192': 600, '\u0218': 600, '\u0219': 600, '\u02c6': 600, '\u02c7': 600, '\u02d8': 600, '\u02d9': 600, '\u02da': 600, '\u02db': 600, '\u02dc': 600, '\u02dd': 600, '\u2013': 600, '\u2014': 600, '\u2018': 600, '\u2019': 600, '\u201a': 600, '\u201c': 600, '\u201d': 600, '\u201e': 600, '\u2020': 600, '\u2021': 600, '\u2022': 600, '\u2026': 600, '\u2030': 600, '\u2039': 600, '\u203a': 600, '\u2044': 600, '\u2122': 600, '\u2202': 600, '\u2206': 600, '\u2211': 600, '\u2212': 600, '\u221a': 600, '\u2260': 600, '\u2264': 600, '\u2265': 600, '\u25ca': 600, '\uf6c3': 600, '\ufb01': 600, '\ufb02': 600}),
|
||||||
'Courier-BoldOblique': ({'FontName': 'Courier-BoldOblique', 'Descent': -194.0, 'FontBBox': (-49.0, -249.0, 758.0, 811.0), 'FontWeight': 'Bold', 'CapHeight': 572.0, 'FontFamily': 'Courier', 'Flags': 64, 'XHeight': 434.0, 'ItalicAngle': -11.0, 'Ascent': 627.0}, {u' ': 600, u'!': 600, u'"': 600, u'#': 600, u'$': 600, u'%': 600, u'&': 600, u"'": 600, u'(': 600, u')': 600, u'*': 600, u'+': 600, u',': 600, u'-': 600, u'.': 600, u'/': 600, u'0': 600, u'1': 600, u'2': 600, u'3': 600, u'4': 600, u'5': 600, u'6': 600, u'7': 600, u'8': 600, u'9': 600, u':': 600, u';': 600, u'<': 600, u'=': 600, u'>': 600, u'?': 600, u'@': 600, u'A': 600, u'B': 600, u'C': 600, u'D': 600, u'E': 600, u'F': 600, u'G': 600, u'H': 600, u'I': 600, u'J': 600, u'K': 600, u'L': 600, u'M': 600, u'N': 600, u'O': 600, u'P': 600, u'Q': 600, u'R': 600, u'S': 600, u'T': 600, u'U': 600, u'V': 600, u'W': 600, u'X': 600, u'Y': 600, u'Z': 600, u'[': 600, u'\\': 600, u']': 600, u'^': 600, u'_': 600, u'`': 600, u'a': 600, u'b': 600, u'c': 600, u'd': 600, u'e': 600, u'f': 600, u'g': 600, u'h': 600, u'i': 600, u'j': 600, u'k': 600, u'l': 600, u'm': 600, u'n': 600, u'o': 600, u'p': 600, u'q': 600, u'r': 600, u's': 600, u't': 600, u'u': 600, u'v': 600, u'w': 600, u'x': 600, u'y': 600, u'z': 600, u'{': 600, u'|': 600, u'}': 600, u'~': 600, u'\xa1': 600, u'\xa2': 600, u'\xa3': 600, u'\xa4': 600, u'\xa5': 600, u'\xa6': 600, u'\xa7': 600, u'\xa8': 600, u'\xa9': 600, u'\xaa': 600, u'\xab': 600, u'\xac': 600, u'\xae': 600, u'\xaf': 600, u'\xb0': 600, u'\xb1': 600, u'\xb2': 600, u'\xb3': 600, u'\xb4': 600, u'\xb5': 600, u'\xb6': 600, u'\xb7': 600, u'\xb8': 600, u'\xb9': 600, u'\xba': 600, u'\xbb': 600, u'\xbc': 600, u'\xbd': 600, u'\xbe': 600, u'\xbf': 600, u'\xc0': 600, u'\xc1': 600, u'\xc2': 600, u'\xc3': 600, u'\xc4': 600, u'\xc5': 600, u'\xc6': 600, u'\xc7': 600, u'\xc8': 600, u'\xc9': 600, u'\xca': 600, u'\xcb': 600, u'\xcc': 600, u'\xcd': 600, u'\xce': 600, u'\xcf': 600, u'\xd0': 600, u'\xd1': 600, u'\xd2': 600, u'\xd3': 600, u'\xd4': 600, u'\xd5': 600, u'\xd6': 600, u'\xd7': 600, u'\xd8': 600, u'\xd9': 600, u'\xda': 600, u'\xdb': 600, u'\xdc': 600, u'\xdd': 600, u'\xde': 600, u'\xdf': 600, u'\xe0': 600, u'\xe1': 600, u'\xe2': 600, u'\xe3': 600, u'\xe4': 600, u'\xe5': 600, u'\xe6': 600, u'\xe7': 600, u'\xe8': 600, u'\xe9': 600, u'\xea': 600, u'\xeb': 600, u'\xec': 600, u'\xed': 600, u'\xee': 600, u'\xef': 600, u'\xf0': 600, u'\xf1': 600, u'\xf2': 600, u'\xf3': 600, u'\xf4': 600, u'\xf5': 600, u'\xf6': 600, u'\xf7': 600, u'\xf8': 600, u'\xf9': 600, u'\xfa': 600, u'\xfb': 600, u'\xfc': 600, u'\xfd': 600, u'\xfe': 600, u'\xff': 600, u'\u0100': 600, u'\u0101': 600, u'\u0102': 600, u'\u0103': 600, u'\u0104': 600, u'\u0105': 600, u'\u0106': 600, u'\u0107': 600, u'\u010c': 600, u'\u010d': 600, u'\u010e': 600, u'\u010f': 600, u'\u0110': 600, u'\u0111': 600, u'\u0112': 600, u'\u0113': 600, u'\u0116': 600, u'\u0117': 600, u'\u0118': 600, u'\u0119': 600, u'\u011a': 600, u'\u011b': 600, u'\u011e': 600, u'\u011f': 600, u'\u0122': 600, u'\u0123': 600, u'\u012a': 600, u'\u012b': 600, u'\u012e': 600, u'\u012f': 600, u'\u0130': 600, u'\u0131': 600, u'\u0136': 600, u'\u0137': 600, u'\u0139': 600, u'\u013a': 600, u'\u013b': 600, u'\u013c': 600, u'\u013d': 600, u'\u013e': 600, u'\u0141': 600, u'\u0142': 600, u'\u0143': 600, u'\u0144': 600, u'\u0145': 600, u'\u0146': 600, u'\u0147': 600, u'\u0148': 600, u'\u014c': 600, u'\u014d': 600, u'\u0150': 600, u'\u0151': 600, u'\u0152': 600, u'\u0153': 600, u'\u0154': 600, u'\u0155': 600, u'\u0156': 600, u'\u0157': 600, u'\u0158': 600, u'\u0159': 600, u'\u015a': 600, u'\u015b': 600, u'\u015e': 600, u'\u015f': 600, u'\u0160': 600, u'\u0161': 600, u'\u0162': 600, u'\u0163': 600, u'\u0164': 600, u'\u0165': 600, u'\u016a': 600, u'\u016b': 600, u'\u016e': 600, u'\u016f': 600, u'\u0170': 600, u'\u0171': 600, u'\u0172': 600, u'\u0173': 600, u'\u0178': 600, u'\u0179': 600, u'\u017a': 600, u'\u017b': 600, u'\u017c': 600, u'\u017d': 600, u'\u017e': 600, u'\u0192': 600, u'\u0218': 600, u'\u0219': 600, u'\u02c6': 600, u'\u02c7': 600, u'\u02d8': 600, u'\u02d9': 600, u'\u02da': 600, u'\u02db': 600, u'\u02dc': 600, u'\u02dd': 600, u'\u2013': 600, u'\u2014': 600, u'\u2018': 600, u'\u2019': 600, u'\u201a': 600, u'\u201c': 600, u'\u201d': 600, u'\u201e': 600, u'\u2020': 600, u'\u2021': 600, u'\u2022': 600, u'\u2026': 600, u'\u2030': 600, u'\u2039': 600, u'\u203a': 600, u'\u2044': 600, u'\u2122': 600, u'\u2202': 600, u'\u2206': 600, u'\u2211': 600, u'\u2212': 600, u'\u221a': 600, u'\u2260': 600, u'\u2264': 600, u'\u2265': 600, u'\u25ca': 600, u'\uf6c3': 600, u'\ufb01': 600, u'\ufb02': 600}),
|
'Courier-BoldOblique': ({'FontName': 'Courier-BoldOblique', 'Descent': -194.0, 'FontBBox': (-49.0, -249.0, 758.0, 811.0), 'FontWeight': 'Bold', 'CapHeight': 572.0, 'FontFamily': 'Courier', 'Flags': 64, 'XHeight': 434.0, 'ItalicAngle': -11.0, 'Ascent': 627.0}, {' ': 600, '!': 600, '"': 600, '#': 600, '$': 600, '%': 600, '&': 600, "'": 600, '(': 600, ')': 600, '*': 600, '+': 600, ',': 600, '-': 600, '.': 600, '/': 600, '0': 600, '1': 600, '2': 600, '3': 600, '4': 600, '5': 600, '6': 600, '7': 600, '8': 600, '9': 600, ':': 600, ';': 600, '<': 600, '=': 600, '>': 600, '?': 600, '@': 600, 'A': 600, 'B': 600, 'C': 600, 'D': 600, 'E': 600, 'F': 600, 'G': 600, 'H': 600, 'I': 600, 'J': 600, 'K': 600, 'L': 600, 'M': 600, 'N': 600, 'O': 600, 'P': 600, 'Q': 600, 'R': 600, 'S': 600, 'T': 600, 'U': 600, 'V': 600, 'W': 600, 'X': 600, 'Y': 600, 'Z': 600, '[': 600, '\\': 600, ']': 600, '^': 600, '_': 600, '`': 600, 'a': 600, 'b': 600, 'c': 600, 'd': 600, 'e': 600, 'f': 600, 'g': 600, 'h': 600, 'i': 600, 'j': 600, 'k': 600, 'l': 600, 'm': 600, 'n': 600, 'o': 600, 'p': 600, 'q': 600, 'r': 600, 's': 600, 't': 600, 'u': 600, 'v': 600, 'w': 600, 'x': 600, 'y': 600, 'z': 600, '{': 600, '|': 600, '}': 600, '~': 600, '\xa1': 600, '\xa2': 600, '\xa3': 600, '\xa4': 600, '\xa5': 600, '\xa6': 600, '\xa7': 600, '\xa8': 600, '\xa9': 600, '\xaa': 600, '\xab': 600, '\xac': 600, '\xae': 600, '\xaf': 600, '\xb0': 600, '\xb1': 600, '\xb2': 600, '\xb3': 600, '\xb4': 600, '\xb5': 600, '\xb6': 600, '\xb7': 600, '\xb8': 600, '\xb9': 600, '\xba': 600, '\xbb': 600, '\xbc': 600, '\xbd': 600, '\xbe': 600, '\xbf': 600, '\xc0': 600, '\xc1': 600, '\xc2': 600, '\xc3': 600, '\xc4': 600, '\xc5': 600, '\xc6': 600, '\xc7': 600, '\xc8': 600, '\xc9': 600, '\xca': 600, '\xcb': 600, '\xcc': 600, '\xcd': 600, '\xce': 600, '\xcf': 600, '\xd0': 600, '\xd1': 600, '\xd2': 600, '\xd3': 600, '\xd4': 600, '\xd5': 600, '\xd6': 600, '\xd7': 600, '\xd8': 600, '\xd9': 600, '\xda': 600, '\xdb': 600, '\xdc': 600, '\xdd': 600, '\xde': 600, '\xdf': 600, '\xe0': 600, '\xe1': 600, '\xe2': 600, '\xe3': 600, '\xe4': 600, '\xe5': 600, '\xe6': 600, '\xe7': 600, '\xe8': 600, '\xe9': 600, '\xea': 600, '\xeb': 600, '\xec': 600, '\xed': 600, '\xee': 600, '\xef': 600, '\xf0': 600, '\xf1': 600, '\xf2': 600, '\xf3': 600, '\xf4': 600, '\xf5': 600, '\xf6': 600, '\xf7': 600, '\xf8': 600, '\xf9': 600, '\xfa': 600, '\xfb': 600, '\xfc': 600, '\xfd': 600, '\xfe': 600, '\xff': 600, '\u0100': 600, '\u0101': 600, '\u0102': 600, '\u0103': 600, '\u0104': 600, '\u0105': 600, '\u0106': 600, '\u0107': 600, '\u010c': 600, '\u010d': 600, '\u010e': 600, '\u010f': 600, '\u0110': 600, '\u0111': 600, '\u0112': 600, '\u0113': 600, '\u0116': 600, '\u0117': 600, '\u0118': 600, '\u0119': 600, '\u011a': 600, '\u011b': 600, '\u011e': 600, '\u011f': 600, '\u0122': 600, '\u0123': 600, '\u012a': 600, '\u012b': 600, '\u012e': 600, '\u012f': 600, '\u0130': 600, '\u0131': 600, '\u0136': 600, '\u0137': 600, '\u0139': 600, '\u013a': 600, '\u013b': 600, '\u013c': 600, '\u013d': 600, '\u013e': 600, '\u0141': 600, '\u0142': 600, '\u0143': 600, '\u0144': 600, '\u0145': 600, '\u0146': 600, '\u0147': 600, '\u0148': 600, '\u014c': 600, '\u014d': 600, '\u0150': 600, '\u0151': 600, '\u0152': 600, '\u0153': 600, '\u0154': 600, '\u0155': 600, '\u0156': 600, '\u0157': 600, '\u0158': 600, '\u0159': 600, '\u015a': 600, '\u015b': 600, '\u015e': 600, '\u015f': 600, '\u0160': 600, '\u0161': 600, '\u0162': 600, '\u0163': 600, '\u0164': 600, '\u0165': 600, '\u016a': 600, '\u016b': 600, '\u016e': 600, '\u016f': 600, '\u0170': 600, '\u0171': 600, '\u0172': 600, '\u0173': 600, '\u0178': 600, '\u0179': 600, '\u017a': 600, '\u017b': 600, '\u017c': 600, '\u017d': 600, '\u017e': 600, '\u0192': 600, '\u0218': 600, '\u0219': 600, '\u02c6': 600, '\u02c7': 600, '\u02d8': 600, '\u02d9': 600, '\u02da': 600, '\u02db': 600, '\u02dc': 600, '\u02dd': 600, '\u2013': 600, '\u2014': 600, '\u2018': 600, '\u2019': 600, '\u201a': 600, '\u201c': 600, '\u201d': 600, '\u201e': 600, '\u2020': 600, '\u2021': 600, '\u2022': 600, '\u2026': 600, '\u2030': 600, '\u2039': 600, '\u203a': 600, '\u2044': 600, '\u2122': 600, '\u2202': 600, '\u2206': 600, '\u2211': 600, '\u2212': 600, '\u221a': 600, '\u2260': 600, '\u2264': 600, '\u2265': 600, '\u25ca': 600, '\uf6c3': 600, '\ufb01': 600, '\ufb02': 600}),
|
||||||
'Courier-Oblique': ({'FontName': 'Courier-Oblique', 'Descent': -194.0, 'FontBBox': (-49.0, -249.0, 749.0, 803.0), 'FontWeight': 'Medium', 'CapHeight': 572.0, 'FontFamily': 'Courier', 'Flags': 64, 'XHeight': 434.0, 'ItalicAngle': -11.0, 'Ascent': 627.0}, {u' ': 600, u'!': 600, u'"': 600, u'#': 600, u'$': 600, u'%': 600, u'&': 600, u"'": 600, u'(': 600, u')': 600, u'*': 600, u'+': 600, u',': 600, u'-': 600, u'.': 600, u'/': 600, u'0': 600, u'1': 600, u'2': 600, u'3': 600, u'4': 600, u'5': 600, u'6': 600, u'7': 600, u'8': 600, u'9': 600, u':': 600, u';': 600, u'<': 600, u'=': 600, u'>': 600, u'?': 600, u'@': 600, u'A': 600, u'B': 600, u'C': 600, u'D': 600, u'E': 600, u'F': 600, u'G': 600, u'H': 600, u'I': 600, u'J': 600, u'K': 600, u'L': 600, u'M': 600, u'N': 600, u'O': 600, u'P': 600, u'Q': 600, u'R': 600, u'S': 600, u'T': 600, u'U': 600, u'V': 600, u'W': 600, u'X': 600, u'Y': 600, u'Z': 600, u'[': 600, u'\\': 600, u']': 600, u'^': 600, u'_': 600, u'`': 600, u'a': 600, u'b': 600, u'c': 600, u'd': 600, u'e': 600, u'f': 600, u'g': 600, u'h': 600, u'i': 600, u'j': 600, u'k': 600, u'l': 600, u'm': 600, u'n': 600, u'o': 600, u'p': 600, u'q': 600, u'r': 600, u's': 600, u't': 600, u'u': 600, u'v': 600, u'w': 600, u'x': 600, u'y': 600, u'z': 600, u'{': 600, u'|': 600, u'}': 600, u'~': 600, u'\xa1': 600, u'\xa2': 600, u'\xa3': 600, u'\xa4': 600, u'\xa5': 600, u'\xa6': 600, u'\xa7': 600, u'\xa8': 600, u'\xa9': 600, u'\xaa': 600, u'\xab': 600, u'\xac': 600, u'\xae': 600, u'\xaf': 600, u'\xb0': 600, u'\xb1': 600, u'\xb2': 600, u'\xb3': 600, u'\xb4': 600, u'\xb5': 600, u'\xb6': 600, u'\xb7': 600, u'\xb8': 600, u'\xb9': 600, u'\xba': 600, u'\xbb': 600, u'\xbc': 600, u'\xbd': 600, u'\xbe': 600, u'\xbf': 600, u'\xc0': 600, u'\xc1': 600, u'\xc2': 600, u'\xc3': 600, u'\xc4': 600, u'\xc5': 600, u'\xc6': 600, u'\xc7': 600, u'\xc8': 600, u'\xc9': 600, u'\xca': 600, u'\xcb': 600, u'\xcc': 600, u'\xcd': 600, u'\xce': 600, u'\xcf': 600, u'\xd0': 600, u'\xd1': 600, u'\xd2': 600, u'\xd3': 600, u'\xd4': 600, u'\xd5': 600, u'\xd6': 600, u'\xd7': 600, u'\xd8': 600, u'\xd9': 600, u'\xda': 600, u'\xdb': 600, u'\xdc': 600, u'\xdd': 600, u'\xde': 600, u'\xdf': 600, u'\xe0': 600, u'\xe1': 600, u'\xe2': 600, u'\xe3': 600, u'\xe4': 600, u'\xe5': 600, u'\xe6': 600, u'\xe7': 600, u'\xe8': 600, u'\xe9': 600, u'\xea': 600, u'\xeb': 600, u'\xec': 600, u'\xed': 600, u'\xee': 600, u'\xef': 600, u'\xf0': 600, u'\xf1': 600, u'\xf2': 600, u'\xf3': 600, u'\xf4': 600, u'\xf5': 600, u'\xf6': 600, u'\xf7': 600, u'\xf8': 600, u'\xf9': 600, u'\xfa': 600, u'\xfb': 600, u'\xfc': 600, u'\xfd': 600, u'\xfe': 600, u'\xff': 600, u'\u0100': 600, u'\u0101': 600, u'\u0102': 600, u'\u0103': 600, u'\u0104': 600, u'\u0105': 600, u'\u0106': 600, u'\u0107': 600, u'\u010c': 600, u'\u010d': 600, u'\u010e': 600, u'\u010f': 600, u'\u0110': 600, u'\u0111': 600, u'\u0112': 600, u'\u0113': 600, u'\u0116': 600, u'\u0117': 600, u'\u0118': 600, u'\u0119': 600, u'\u011a': 600, u'\u011b': 600, u'\u011e': 600, u'\u011f': 600, u'\u0122': 600, u'\u0123': 600, u'\u012a': 600, u'\u012b': 600, u'\u012e': 600, u'\u012f': 600, u'\u0130': 600, u'\u0131': 600, u'\u0136': 600, u'\u0137': 600, u'\u0139': 600, u'\u013a': 600, u'\u013b': 600, u'\u013c': 600, u'\u013d': 600, u'\u013e': 600, u'\u0141': 600, u'\u0142': 600, u'\u0143': 600, u'\u0144': 600, u'\u0145': 600, u'\u0146': 600, u'\u0147': 600, u'\u0148': 600, u'\u014c': 600, u'\u014d': 600, u'\u0150': 600, u'\u0151': 600, u'\u0152': 600, u'\u0153': 600, u'\u0154': 600, u'\u0155': 600, u'\u0156': 600, u'\u0157': 600, u'\u0158': 600, u'\u0159': 600, u'\u015a': 600, u'\u015b': 600, u'\u015e': 600, u'\u015f': 600, u'\u0160': 600, u'\u0161': 600, u'\u0162': 600, u'\u0163': 600, u'\u0164': 600, u'\u0165': 600, u'\u016a': 600, u'\u016b': 600, u'\u016e': 600, u'\u016f': 600, u'\u0170': 600, u'\u0171': 600, u'\u0172': 600, u'\u0173': 600, u'\u0178': 600, u'\u0179': 600, u'\u017a': 600, u'\u017b': 600, u'\u017c': 600, u'\u017d': 600, u'\u017e': 600, u'\u0192': 600, u'\u0218': 600, u'\u0219': 600, u'\u02c6': 600, u'\u02c7': 600, u'\u02d8': 600, u'\u02d9': 600, u'\u02da': 600, u'\u02db': 600, u'\u02dc': 600, u'\u02dd': 600, u'\u2013': 600, u'\u2014': 600, u'\u2018': 600, u'\u2019': 600, u'\u201a': 600, u'\u201c': 600, u'\u201d': 600, u'\u201e': 600, u'\u2020': 600, u'\u2021': 600, u'\u2022': 600, u'\u2026': 600, u'\u2030': 600, u'\u2039': 600, u'\u203a': 600, u'\u2044': 600, u'\u2122': 600, u'\u2202': 600, u'\u2206': 600, u'\u2211': 600, u'\u2212': 600, u'\u221a': 600, u'\u2260': 600, u'\u2264': 600, u'\u2265': 600, u'\u25ca': 600, u'\uf6c3': 600, u'\ufb01': 600, u'\ufb02': 600}),
|
'Courier-Oblique': ({'FontName': 'Courier-Oblique', 'Descent': -194.0, 'FontBBox': (-49.0, -249.0, 749.0, 803.0), 'FontWeight': 'Medium', 'CapHeight': 572.0, 'FontFamily': 'Courier', 'Flags': 64, 'XHeight': 434.0, 'ItalicAngle': -11.0, 'Ascent': 627.0}, {' ': 600, '!': 600, '"': 600, '#': 600, '$': 600, '%': 600, '&': 600, "'": 600, '(': 600, ')': 600, '*': 600, '+': 600, ',': 600, '-': 600, '.': 600, '/': 600, '0': 600, '1': 600, '2': 600, '3': 600, '4': 600, '5': 600, '6': 600, '7': 600, '8': 600, '9': 600, ':': 600, ';': 600, '<': 600, '=': 600, '>': 600, '?': 600, '@': 600, 'A': 600, 'B': 600, 'C': 600, 'D': 600, 'E': 600, 'F': 600, 'G': 600, 'H': 600, 'I': 600, 'J': 600, 'K': 600, 'L': 600, 'M': 600, 'N': 600, 'O': 600, 'P': 600, 'Q': 600, 'R': 600, 'S': 600, 'T': 600, 'U': 600, 'V': 600, 'W': 600, 'X': 600, 'Y': 600, 'Z': 600, '[': 600, '\\': 600, ']': 600, '^': 600, '_': 600, '`': 600, 'a': 600, 'b': 600, 'c': 600, 'd': 600, 'e': 600, 'f': 600, 'g': 600, 'h': 600, 'i': 600, 'j': 600, 'k': 600, 'l': 600, 'm': 600, 'n': 600, 'o': 600, 'p': 600, 'q': 600, 'r': 600, 's': 600, 't': 600, 'u': 600, 'v': 600, 'w': 600, 'x': 600, 'y': 600, 'z': 600, '{': 600, '|': 600, '}': 600, '~': 600, '\xa1': 600, '\xa2': 600, '\xa3': 600, '\xa4': 600, '\xa5': 600, '\xa6': 600, '\xa7': 600, '\xa8': 600, '\xa9': 600, '\xaa': 600, '\xab': 600, '\xac': 600, '\xae': 600, '\xaf': 600, '\xb0': 600, '\xb1': 600, '\xb2': 600, '\xb3': 600, '\xb4': 600, '\xb5': 600, '\xb6': 600, '\xb7': 600, '\xb8': 600, '\xb9': 600, '\xba': 600, '\xbb': 600, '\xbc': 600, '\xbd': 600, '\xbe': 600, '\xbf': 600, '\xc0': 600, '\xc1': 600, '\xc2': 600, '\xc3': 600, '\xc4': 600, '\xc5': 600, '\xc6': 600, '\xc7': 600, '\xc8': 600, '\xc9': 600, '\xca': 600, '\xcb': 600, '\xcc': 600, '\xcd': 600, '\xce': 600, '\xcf': 600, '\xd0': 600, '\xd1': 600, '\xd2': 600, '\xd3': 600, '\xd4': 600, '\xd5': 600, '\xd6': 600, '\xd7': 600, '\xd8': 600, '\xd9': 600, '\xda': 600, '\xdb': 600, '\xdc': 600, '\xdd': 600, '\xde': 600, '\xdf': 600, '\xe0': 600, '\xe1': 600, '\xe2': 600, '\xe3': 600, '\xe4': 600, '\xe5': 600, '\xe6': 600, '\xe7': 600, '\xe8': 600, '\xe9': 600, '\xea': 600, '\xeb': 600, '\xec': 600, '\xed': 600, '\xee': 600, '\xef': 600, '\xf0': 600, '\xf1': 600, '\xf2': 600, '\xf3': 600, '\xf4': 600, '\xf5': 600, '\xf6': 600, '\xf7': 600, '\xf8': 600, '\xf9': 600, '\xfa': 600, '\xfb': 600, '\xfc': 600, '\xfd': 600, '\xfe': 600, '\xff': 600, '\u0100': 600, '\u0101': 600, '\u0102': 600, '\u0103': 600, '\u0104': 600, '\u0105': 600, '\u0106': 600, '\u0107': 600, '\u010c': 600, '\u010d': 600, '\u010e': 600, '\u010f': 600, '\u0110': 600, '\u0111': 600, '\u0112': 600, '\u0113': 600, '\u0116': 600, '\u0117': 600, '\u0118': 600, '\u0119': 600, '\u011a': 600, '\u011b': 600, '\u011e': 600, '\u011f': 600, '\u0122': 600, '\u0123': 600, '\u012a': 600, '\u012b': 600, '\u012e': 600, '\u012f': 600, '\u0130': 600, '\u0131': 600, '\u0136': 600, '\u0137': 600, '\u0139': 600, '\u013a': 600, '\u013b': 600, '\u013c': 600, '\u013d': 600, '\u013e': 600, '\u0141': 600, '\u0142': 600, '\u0143': 600, '\u0144': 600, '\u0145': 600, '\u0146': 600, '\u0147': 600, '\u0148': 600, '\u014c': 600, '\u014d': 600, '\u0150': 600, '\u0151': 600, '\u0152': 600, '\u0153': 600, '\u0154': 600, '\u0155': 600, '\u0156': 600, '\u0157': 600, '\u0158': 600, '\u0159': 600, '\u015a': 600, '\u015b': 600, '\u015e': 600, '\u015f': 600, '\u0160': 600, '\u0161': 600, '\u0162': 600, '\u0163': 600, '\u0164': 600, '\u0165': 600, '\u016a': 600, '\u016b': 600, '\u016e': 600, '\u016f': 600, '\u0170': 600, '\u0171': 600, '\u0172': 600, '\u0173': 600, '\u0178': 600, '\u0179': 600, '\u017a': 600, '\u017b': 600, '\u017c': 600, '\u017d': 600, '\u017e': 600, '\u0192': 600, '\u0218': 600, '\u0219': 600, '\u02c6': 600, '\u02c7': 600, '\u02d8': 600, '\u02d9': 600, '\u02da': 600, '\u02db': 600, '\u02dc': 600, '\u02dd': 600, '\u2013': 600, '\u2014': 600, '\u2018': 600, '\u2019': 600, '\u201a': 600, '\u201c': 600, '\u201d': 600, '\u201e': 600, '\u2020': 600, '\u2021': 600, '\u2022': 600, '\u2026': 600, '\u2030': 600, '\u2039': 600, '\u203a': 600, '\u2044': 600, '\u2122': 600, '\u2202': 600, '\u2206': 600, '\u2211': 600, '\u2212': 600, '\u221a': 600, '\u2260': 600, '\u2264': 600, '\u2265': 600, '\u25ca': 600, '\uf6c3': 600, '\ufb01': 600, '\ufb02': 600}),
|
||||||
'Helvetica': ({'FontName': 'Helvetica', 'Descent': -207.0, 'FontBBox': (-166.0, -225.0, 1000.0, 931.0), 'FontWeight': 'Medium', 'CapHeight': 718.0, 'FontFamily': 'Helvetica', 'Flags': 0, 'XHeight': 523.0, 'ItalicAngle': 0.0, 'Ascent': 718.0}, {u' ': 278, u'!': 278, u'"': 355, u'#': 556, u'$': 556, u'%': 889, u'&': 667, u"'": 191, u'(': 333, u')': 333, u'*': 389, u'+': 584, u',': 278, u'-': 333, u'.': 278, u'/': 278, u'0': 556, u'1': 556, u'2': 556, u'3': 556, u'4': 556, u'5': 556, u'6': 556, u'7': 556, u'8': 556, u'9': 556, u':': 278, u';': 278, u'<': 584, u'=': 584, u'>': 584, u'?': 556, u'@': 1015, u'A': 667, u'B': 667, u'C': 722, u'D': 722, u'E': 667, u'F': 611, u'G': 778, u'H': 722, u'I': 278, u'J': 500, u'K': 667, u'L': 556, u'M': 833, u'N': 722, u'O': 778, u'P': 667, u'Q': 778, u'R': 722, u'S': 667, u'T': 611, u'U': 722, u'V': 667, u'W': 944, u'X': 667, u'Y': 667, u'Z': 611, u'[': 278, u'\\': 278, u']': 278, u'^': 469, u'_': 556, u'`': 333, u'a': 556, u'b': 556, u'c': 500, u'd': 556, u'e': 556, u'f': 278, u'g': 556, u'h': 556, u'i': 222, u'j': 222, u'k': 500, u'l': 222, u'm': 833, u'n': 556, u'o': 556, u'p': 556, u'q': 556, u'r': 333, u's': 500, u't': 278, u'u': 556, u'v': 500, u'w': 722, u'x': 500, u'y': 500, u'z': 500, u'{': 334, u'|': 260, u'}': 334, u'~': 584, u'\xa1': 333, u'\xa2': 556, u'\xa3': 556, u'\xa4': 556, u'\xa5': 556, u'\xa6': 260, u'\xa7': 556, u'\xa8': 333, u'\xa9': 737, u'\xaa': 370, u'\xab': 556, u'\xac': 584, u'\xae': 737, u'\xaf': 333, u'\xb0': 400, u'\xb1': 584, u'\xb2': 333, u'\xb3': 333, u'\xb4': 333, u'\xb5': 556, u'\xb6': 537, u'\xb7': 278, u'\xb8': 333, u'\xb9': 333, u'\xba': 365, u'\xbb': 556, u'\xbc': 834, u'\xbd': 834, u'\xbe': 834, u'\xbf': 611, u'\xc0': 667, u'\xc1': 667, u'\xc2': 667, u'\xc3': 667, u'\xc4': 667, u'\xc5': 667, u'\xc6': 1000, u'\xc7': 722, u'\xc8': 667, u'\xc9': 667, u'\xca': 667, u'\xcb': 667, u'\xcc': 278, u'\xcd': 278, u'\xce': 278, u'\xcf': 278, u'\xd0': 722, u'\xd1': 722, u'\xd2': 778, u'\xd3': 778, u'\xd4': 778, u'\xd5': 778, u'\xd6': 778, u'\xd7': 584, u'\xd8': 778, u'\xd9': 722, u'\xda': 722, u'\xdb': 722, u'\xdc': 722, u'\xdd': 667, u'\xde': 667, u'\xdf': 611, u'\xe0': 556, u'\xe1': 556, u'\xe2': 556, u'\xe3': 556, u'\xe4': 556, u'\xe5': 556, u'\xe6': 889, u'\xe7': 500, u'\xe8': 556, u'\xe9': 556, u'\xea': 556, u'\xeb': 556, u'\xec': 278, u'\xed': 278, u'\xee': 278, u'\xef': 278, u'\xf0': 556, u'\xf1': 556, u'\xf2': 556, u'\xf3': 556, u'\xf4': 556, u'\xf5': 556, u'\xf6': 556, u'\xf7': 584, u'\xf8': 611, u'\xf9': 556, u'\xfa': 556, u'\xfb': 556, u'\xfc': 556, u'\xfd': 500, u'\xfe': 556, u'\xff': 500, u'\u0100': 667, u'\u0101': 556, u'\u0102': 667, u'\u0103': 556, u'\u0104': 667, u'\u0105': 556, u'\u0106': 722, u'\u0107': 500, u'\u010c': 722, u'\u010d': 500, u'\u010e': 722, u'\u010f': 643, u'\u0110': 722, u'\u0111': 556, u'\u0112': 667, u'\u0113': 556, u'\u0116': 667, u'\u0117': 556, u'\u0118': 667, u'\u0119': 556, u'\u011a': 667, u'\u011b': 556, u'\u011e': 778, u'\u011f': 556, u'\u0122': 778, u'\u0123': 556, u'\u012a': 278, u'\u012b': 278, u'\u012e': 278, u'\u012f': 222, u'\u0130': 278, u'\u0131': 278, u'\u0136': 667, u'\u0137': 500, u'\u0139': 556, u'\u013a': 222, u'\u013b': 556, u'\u013c': 222, u'\u013d': 556, u'\u013e': 299, u'\u0141': 556, u'\u0142': 222, u'\u0143': 722, u'\u0144': 556, u'\u0145': 722, u'\u0146': 556, u'\u0147': 722, u'\u0148': 556, u'\u014c': 778, u'\u014d': 556, u'\u0150': 778, u'\u0151': 556, u'\u0152': 1000, u'\u0153': 944, u'\u0154': 722, u'\u0155': 333, u'\u0156': 722, u'\u0157': 333, u'\u0158': 722, u'\u0159': 333, u'\u015a': 667, u'\u015b': 500, u'\u015e': 667, u'\u015f': 500, u'\u0160': 667, u'\u0161': 500, u'\u0162': 611, u'\u0163': 278, u'\u0164': 611, u'\u0165': 317, u'\u016a': 722, u'\u016b': 556, u'\u016e': 722, u'\u016f': 556, u'\u0170': 722, u'\u0171': 556, u'\u0172': 722, u'\u0173': 556, u'\u0178': 667, u'\u0179': 611, u'\u017a': 500, u'\u017b': 611, u'\u017c': 500, u'\u017d': 611, u'\u017e': 500, u'\u0192': 556, u'\u0218': 667, u'\u0219': 500, u'\u02c6': 333, u'\u02c7': 333, u'\u02d8': 333, u'\u02d9': 333, u'\u02da': 333, u'\u02db': 333, u'\u02dc': 333, u'\u02dd': 333, u'\u2013': 556, u'\u2014': 1000, u'\u2018': 222, u'\u2019': 222, u'\u201a': 222, u'\u201c': 333, u'\u201d': 333, u'\u201e': 333, u'\u2020': 556, u'\u2021': 556, u'\u2022': 350, u'\u2026': 1000, u'\u2030': 1000, u'\u2039': 333, u'\u203a': 333, u'\u2044': 167, u'\u2122': 1000, u'\u2202': 476, u'\u2206': 612, u'\u2211': 600, u'\u2212': 584, u'\u221a': 453, u'\u2260': 549, u'\u2264': 549, u'\u2265': 549, u'\u25ca': 471, u'\uf6c3': 250, u'\ufb01': 500, u'\ufb02': 500}),
|
'Helvetica': ({'FontName': 'Helvetica', 'Descent': -207.0, 'FontBBox': (-166.0, -225.0, 1000.0, 931.0), 'FontWeight': 'Medium', 'CapHeight': 718.0, 'FontFamily': 'Helvetica', 'Flags': 0, 'XHeight': 523.0, 'ItalicAngle': 0.0, 'Ascent': 718.0}, {' ': 278, '!': 278, '"': 355, '#': 556, '$': 556, '%': 889, '&': 667, "'": 191, '(': 333, ')': 333, '*': 389, '+': 584, ',': 278, '-': 333, '.': 278, '/': 278, '0': 556, '1': 556, '2': 556, '3': 556, '4': 556, '5': 556, '6': 556, '7': 556, '8': 556, '9': 556, ':': 278, ';': 278, '<': 584, '=': 584, '>': 584, '?': 556, '@': 1015, 'A': 667, 'B': 667, 'C': 722, 'D': 722, 'E': 667, 'F': 611, 'G': 778, 'H': 722, 'I': 278, 'J': 500, 'K': 667, 'L': 556, 'M': 833, 'N': 722, 'O': 778, 'P': 667, 'Q': 778, 'R': 722, 'S': 667, 'T': 611, 'U': 722, 'V': 667, 'W': 944, 'X': 667, 'Y': 667, 'Z': 611, '[': 278, '\\': 278, ']': 278, '^': 469, '_': 556, '`': 333, 'a': 556, 'b': 556, 'c': 500, 'd': 556, 'e': 556, 'f': 278, 'g': 556, 'h': 556, 'i': 222, 'j': 222, 'k': 500, 'l': 222, 'm': 833, 'n': 556, 'o': 556, 'p': 556, 'q': 556, 'r': 333, 's': 500, 't': 278, 'u': 556, 'v': 500, 'w': 722, 'x': 500, 'y': 500, 'z': 500, '{': 334, '|': 260, '}': 334, '~': 584, '\xa1': 333, '\xa2': 556, '\xa3': 556, '\xa4': 556, '\xa5': 556, '\xa6': 260, '\xa7': 556, '\xa8': 333, '\xa9': 737, '\xaa': 370, '\xab': 556, '\xac': 584, '\xae': 737, '\xaf': 333, '\xb0': 400, '\xb1': 584, '\xb2': 333, '\xb3': 333, '\xb4': 333, '\xb5': 556, '\xb6': 537, '\xb7': 278, '\xb8': 333, '\xb9': 333, '\xba': 365, '\xbb': 556, '\xbc': 834, '\xbd': 834, '\xbe': 834, '\xbf': 611, '\xc0': 667, '\xc1': 667, '\xc2': 667, '\xc3': 667, '\xc4': 667, '\xc5': 667, '\xc6': 1000, '\xc7': 722, '\xc8': 667, '\xc9': 667, '\xca': 667, '\xcb': 667, '\xcc': 278, '\xcd': 278, '\xce': 278, '\xcf': 278, '\xd0': 722, '\xd1': 722, '\xd2': 778, '\xd3': 778, '\xd4': 778, '\xd5': 778, '\xd6': 778, '\xd7': 584, '\xd8': 778, '\xd9': 722, '\xda': 722, '\xdb': 722, '\xdc': 722, '\xdd': 667, '\xde': 667, '\xdf': 611, '\xe0': 556, '\xe1': 556, '\xe2': 556, '\xe3': 556, '\xe4': 556, '\xe5': 556, '\xe6': 889, '\xe7': 500, '\xe8': 556, '\xe9': 556, '\xea': 556, '\xeb': 556, '\xec': 278, '\xed': 278, '\xee': 278, '\xef': 278, '\xf0': 556, '\xf1': 556, '\xf2': 556, '\xf3': 556, '\xf4': 556, '\xf5': 556, '\xf6': 556, '\xf7': 584, '\xf8': 611, '\xf9': 556, '\xfa': 556, '\xfb': 556, '\xfc': 556, '\xfd': 500, '\xfe': 556, '\xff': 500, '\u0100': 667, '\u0101': 556, '\u0102': 667, '\u0103': 556, '\u0104': 667, '\u0105': 556, '\u0106': 722, '\u0107': 500, '\u010c': 722, '\u010d': 500, '\u010e': 722, '\u010f': 643, '\u0110': 722, '\u0111': 556, '\u0112': 667, '\u0113': 556, '\u0116': 667, '\u0117': 556, '\u0118': 667, '\u0119': 556, '\u011a': 667, '\u011b': 556, '\u011e': 778, '\u011f': 556, '\u0122': 778, '\u0123': 556, '\u012a': 278, '\u012b': 278, '\u012e': 278, '\u012f': 222, '\u0130': 278, '\u0131': 278, '\u0136': 667, '\u0137': 500, '\u0139': 556, '\u013a': 222, '\u013b': 556, '\u013c': 222, '\u013d': 556, '\u013e': 299, '\u0141': 556, '\u0142': 222, '\u0143': 722, '\u0144': 556, '\u0145': 722, '\u0146': 556, '\u0147': 722, '\u0148': 556, '\u014c': 778, '\u014d': 556, '\u0150': 778, '\u0151': 556, '\u0152': 1000, '\u0153': 944, '\u0154': 722, '\u0155': 333, '\u0156': 722, '\u0157': 333, '\u0158': 722, '\u0159': 333, '\u015a': 667, '\u015b': 500, '\u015e': 667, '\u015f': 500, '\u0160': 667, '\u0161': 500, '\u0162': 611, '\u0163': 278, '\u0164': 611, '\u0165': 317, '\u016a': 722, '\u016b': 556, '\u016e': 722, '\u016f': 556, '\u0170': 722, '\u0171': 556, '\u0172': 722, '\u0173': 556, '\u0178': 667, '\u0179': 611, '\u017a': 500, '\u017b': 611, '\u017c': 500, '\u017d': 611, '\u017e': 500, '\u0192': 556, '\u0218': 667, '\u0219': 500, '\u02c6': 333, '\u02c7': 333, '\u02d8': 333, '\u02d9': 333, '\u02da': 333, '\u02db': 333, '\u02dc': 333, '\u02dd': 333, '\u2013': 556, '\u2014': 1000, '\u2018': 222, '\u2019': 222, '\u201a': 222, '\u201c': 333, '\u201d': 333, '\u201e': 333, '\u2020': 556, '\u2021': 556, '\u2022': 350, '\u2026': 1000, '\u2030': 1000, '\u2039': 333, '\u203a': 333, '\u2044': 167, '\u2122': 1000, '\u2202': 476, '\u2206': 612, '\u2211': 600, '\u2212': 584, '\u221a': 453, '\u2260': 549, '\u2264': 549, '\u2265': 549, '\u25ca': 471, '\uf6c3': 250, '\ufb01': 500, '\ufb02': 500}),
|
||||||
'Helvetica-Bold': ({'FontName': 'Helvetica-Bold', 'Descent': -207.0, 'FontBBox': (-170.0, -228.0, 1003.0, 962.0), 'FontWeight': 'Bold', 'CapHeight': 718.0, 'FontFamily': 'Helvetica', 'Flags': 0, 'XHeight': 532.0, 'ItalicAngle': 0.0, 'Ascent': 718.0}, {u' ': 278, u'!': 333, u'"': 474, u'#': 556, u'$': 556, u'%': 889, u'&': 722, u"'": 238, u'(': 333, u')': 333, u'*': 389, u'+': 584, u',': 278, u'-': 333, u'.': 278, u'/': 278, u'0': 556, u'1': 556, u'2': 556, u'3': 556, u'4': 556, u'5': 556, u'6': 556, u'7': 556, u'8': 556, u'9': 556, u':': 333, u';': 333, u'<': 584, u'=': 584, u'>': 584, u'?': 611, u'@': 975, u'A': 722, u'B': 722, u'C': 722, u'D': 722, u'E': 667, u'F': 611, u'G': 778, u'H': 722, u'I': 278, u'J': 556, u'K': 722, u'L': 611, u'M': 833, u'N': 722, u'O': 778, u'P': 667, u'Q': 778, u'R': 722, u'S': 667, u'T': 611, u'U': 722, u'V': 667, u'W': 944, u'X': 667, u'Y': 667, u'Z': 611, u'[': 333, u'\\': 278, u']': 333, u'^': 584, u'_': 556, u'`': 333, u'a': 556, u'b': 611, u'c': 556, u'd': 611, u'e': 556, u'f': 333, u'g': 611, u'h': 611, u'i': 278, u'j': 278, u'k': 556, u'l': 278, u'm': 889, u'n': 611, u'o': 611, u'p': 611, u'q': 611, u'r': 389, u's': 556, u't': 333, u'u': 611, u'v': 556, u'w': 778, u'x': 556, u'y': 556, u'z': 500, u'{': 389, u'|': 280, u'}': 389, u'~': 584, u'\xa1': 333, u'\xa2': 556, u'\xa3': 556, u'\xa4': 556, u'\xa5': 556, u'\xa6': 280, u'\xa7': 556, u'\xa8': 333, u'\xa9': 737, u'\xaa': 370, u'\xab': 556, u'\xac': 584, u'\xae': 737, u'\xaf': 333, u'\xb0': 400, u'\xb1': 584, u'\xb2': 333, u'\xb3': 333, u'\xb4': 333, u'\xb5': 611, u'\xb6': 556, u'\xb7': 278, u'\xb8': 333, u'\xb9': 333, u'\xba': 365, u'\xbb': 556, u'\xbc': 834, u'\xbd': 834, u'\xbe': 834, u'\xbf': 611, u'\xc0': 722, u'\xc1': 722, u'\xc2': 722, u'\xc3': 722, u'\xc4': 722, u'\xc5': 722, u'\xc6': 1000, u'\xc7': 722, u'\xc8': 667, u'\xc9': 667, u'\xca': 667, u'\xcb': 667, u'\xcc': 278, u'\xcd': 278, u'\xce': 278, u'\xcf': 278, u'\xd0': 722, u'\xd1': 722, u'\xd2': 778, u'\xd3': 778, u'\xd4': 778, u'\xd5': 778, u'\xd6': 778, u'\xd7': 584, u'\xd8': 778, u'\xd9': 722, u'\xda': 722, u'\xdb': 722, u'\xdc': 722, u'\xdd': 667, u'\xde': 667, u'\xdf': 611, u'\xe0': 556, u'\xe1': 556, u'\xe2': 556, u'\xe3': 556, u'\xe4': 556, u'\xe5': 556, u'\xe6': 889, u'\xe7': 556, u'\xe8': 556, u'\xe9': 556, u'\xea': 556, u'\xeb': 556, u'\xec': 278, u'\xed': 278, u'\xee': 278, u'\xef': 278, u'\xf0': 611, u'\xf1': 611, u'\xf2': 611, u'\xf3': 611, u'\xf4': 611, u'\xf5': 611, u'\xf6': 611, u'\xf7': 584, u'\xf8': 611, u'\xf9': 611, u'\xfa': 611, u'\xfb': 611, u'\xfc': 611, u'\xfd': 556, u'\xfe': 611, u'\xff': 556, u'\u0100': 722, u'\u0101': 556, u'\u0102': 722, u'\u0103': 556, u'\u0104': 722, u'\u0105': 556, u'\u0106': 722, u'\u0107': 556, u'\u010c': 722, u'\u010d': 556, u'\u010e': 722, u'\u010f': 743, u'\u0110': 722, u'\u0111': 611, u'\u0112': 667, u'\u0113': 556, u'\u0116': 667, u'\u0117': 556, u'\u0118': 667, u'\u0119': 556, u'\u011a': 667, u'\u011b': 556, u'\u011e': 778, u'\u011f': 611, u'\u0122': 778, u'\u0123': 611, u'\u012a': 278, u'\u012b': 278, u'\u012e': 278, u'\u012f': 278, u'\u0130': 278, u'\u0131': 278, u'\u0136': 722, u'\u0137': 556, u'\u0139': 611, u'\u013a': 278, u'\u013b': 611, u'\u013c': 278, u'\u013d': 611, u'\u013e': 400, u'\u0141': 611, u'\u0142': 278, u'\u0143': 722, u'\u0144': 611, u'\u0145': 722, u'\u0146': 611, u'\u0147': 722, u'\u0148': 611, u'\u014c': 778, u'\u014d': 611, u'\u0150': 778, u'\u0151': 611, u'\u0152': 1000, u'\u0153': 944, u'\u0154': 722, u'\u0155': 389, u'\u0156': 722, u'\u0157': 389, u'\u0158': 722, u'\u0159': 389, u'\u015a': 667, u'\u015b': 556, u'\u015e': 667, u'\u015f': 556, u'\u0160': 667, u'\u0161': 556, u'\u0162': 611, u'\u0163': 333, u'\u0164': 611, u'\u0165': 389, u'\u016a': 722, u'\u016b': 611, u'\u016e': 722, u'\u016f': 611, u'\u0170': 722, u'\u0171': 611, u'\u0172': 722, u'\u0173': 611, u'\u0178': 667, u'\u0179': 611, u'\u017a': 500, u'\u017b': 611, u'\u017c': 500, u'\u017d': 611, u'\u017e': 500, u'\u0192': 556, u'\u0218': 667, u'\u0219': 556, u'\u02c6': 333, u'\u02c7': 333, u'\u02d8': 333, u'\u02d9': 333, u'\u02da': 333, u'\u02db': 333, u'\u02dc': 333, u'\u02dd': 333, u'\u2013': 556, u'\u2014': 1000, u'\u2018': 278, u'\u2019': 278, u'\u201a': 278, u'\u201c': 500, u'\u201d': 500, u'\u201e': 500, u'\u2020': 556, u'\u2021': 556, u'\u2022': 350, u'\u2026': 1000, u'\u2030': 1000, u'\u2039': 333, u'\u203a': 333, u'\u2044': 167, u'\u2122': 1000, u'\u2202': 494, u'\u2206': 612, u'\u2211': 600, u'\u2212': 584, u'\u221a': 549, u'\u2260': 549, u'\u2264': 549, u'\u2265': 549, u'\u25ca': 494, u'\uf6c3': 250, u'\ufb01': 611, u'\ufb02': 611}),
|
'Helvetica-Bold': ({'FontName': 'Helvetica-Bold', 'Descent': -207.0, 'FontBBox': (-170.0, -228.0, 1003.0, 962.0), 'FontWeight': 'Bold', 'CapHeight': 718.0, 'FontFamily': 'Helvetica', 'Flags': 0, 'XHeight': 532.0, 'ItalicAngle': 0.0, 'Ascent': 718.0}, {' ': 278, '!': 333, '"': 474, '#': 556, '$': 556, '%': 889, '&': 722, "'": 238, '(': 333, ')': 333, '*': 389, '+': 584, ',': 278, '-': 333, '.': 278, '/': 278, '0': 556, '1': 556, '2': 556, '3': 556, '4': 556, '5': 556, '6': 556, '7': 556, '8': 556, '9': 556, ':': 333, ';': 333, '<': 584, '=': 584, '>': 584, '?': 611, '@': 975, 'A': 722, 'B': 722, 'C': 722, 'D': 722, 'E': 667, 'F': 611, 'G': 778, 'H': 722, 'I': 278, 'J': 556, 'K': 722, 'L': 611, 'M': 833, 'N': 722, 'O': 778, 'P': 667, 'Q': 778, 'R': 722, 'S': 667, 'T': 611, 'U': 722, 'V': 667, 'W': 944, 'X': 667, 'Y': 667, 'Z': 611, '[': 333, '\\': 278, ']': 333, '^': 584, '_': 556, '`': 333, 'a': 556, 'b': 611, 'c': 556, 'd': 611, 'e': 556, 'f': 333, 'g': 611, 'h': 611, 'i': 278, 'j': 278, 'k': 556, 'l': 278, 'm': 889, 'n': 611, 'o': 611, 'p': 611, 'q': 611, 'r': 389, 's': 556, 't': 333, 'u': 611, 'v': 556, 'w': 778, 'x': 556, 'y': 556, 'z': 500, '{': 389, '|': 280, '}': 389, '~': 584, '\xa1': 333, '\xa2': 556, '\xa3': 556, '\xa4': 556, '\xa5': 556, '\xa6': 280, '\xa7': 556, '\xa8': 333, '\xa9': 737, '\xaa': 370, '\xab': 556, '\xac': 584, '\xae': 737, '\xaf': 333, '\xb0': 400, '\xb1': 584, '\xb2': 333, '\xb3': 333, '\xb4': 333, '\xb5': 611, '\xb6': 556, '\xb7': 278, '\xb8': 333, '\xb9': 333, '\xba': 365, '\xbb': 556, '\xbc': 834, '\xbd': 834, '\xbe': 834, '\xbf': 611, '\xc0': 722, '\xc1': 722, '\xc2': 722, '\xc3': 722, '\xc4': 722, '\xc5': 722, '\xc6': 1000, '\xc7': 722, '\xc8': 667, '\xc9': 667, '\xca': 667, '\xcb': 667, '\xcc': 278, '\xcd': 278, '\xce': 278, '\xcf': 278, '\xd0': 722, '\xd1': 722, '\xd2': 778, '\xd3': 778, '\xd4': 778, '\xd5': 778, '\xd6': 778, '\xd7': 584, '\xd8': 778, '\xd9': 722, '\xda': 722, '\xdb': 722, '\xdc': 722, '\xdd': 667, '\xde': 667, '\xdf': 611, '\xe0': 556, '\xe1': 556, '\xe2': 556, '\xe3': 556, '\xe4': 556, '\xe5': 556, '\xe6': 889, '\xe7': 556, '\xe8': 556, '\xe9': 556, '\xea': 556, '\xeb': 556, '\xec': 278, '\xed': 278, '\xee': 278, '\xef': 278, '\xf0': 611, '\xf1': 611, '\xf2': 611, '\xf3': 611, '\xf4': 611, '\xf5': 611, '\xf6': 611, '\xf7': 584, '\xf8': 611, '\xf9': 611, '\xfa': 611, '\xfb': 611, '\xfc': 611, '\xfd': 556, '\xfe': 611, '\xff': 556, '\u0100': 722, '\u0101': 556, '\u0102': 722, '\u0103': 556, '\u0104': 722, '\u0105': 556, '\u0106': 722, '\u0107': 556, '\u010c': 722, '\u010d': 556, '\u010e': 722, '\u010f': 743, '\u0110': 722, '\u0111': 611, '\u0112': 667, '\u0113': 556, '\u0116': 667, '\u0117': 556, '\u0118': 667, '\u0119': 556, '\u011a': 667, '\u011b': 556, '\u011e': 778, '\u011f': 611, '\u0122': 778, '\u0123': 611, '\u012a': 278, '\u012b': 278, '\u012e': 278, '\u012f': 278, '\u0130': 278, '\u0131': 278, '\u0136': 722, '\u0137': 556, '\u0139': 611, '\u013a': 278, '\u013b': 611, '\u013c': 278, '\u013d': 611, '\u013e': 400, '\u0141': 611, '\u0142': 278, '\u0143': 722, '\u0144': 611, '\u0145': 722, '\u0146': 611, '\u0147': 722, '\u0148': 611, '\u014c': 778, '\u014d': 611, '\u0150': 778, '\u0151': 611, '\u0152': 1000, '\u0153': 944, '\u0154': 722, '\u0155': 389, '\u0156': 722, '\u0157': 389, '\u0158': 722, '\u0159': 389, '\u015a': 667, '\u015b': 556, '\u015e': 667, '\u015f': 556, '\u0160': 667, '\u0161': 556, '\u0162': 611, '\u0163': 333, '\u0164': 611, '\u0165': 389, '\u016a': 722, '\u016b': 611, '\u016e': 722, '\u016f': 611, '\u0170': 722, '\u0171': 611, '\u0172': 722, '\u0173': 611, '\u0178': 667, '\u0179': 611, '\u017a': 500, '\u017b': 611, '\u017c': 500, '\u017d': 611, '\u017e': 500, '\u0192': 556, '\u0218': 667, '\u0219': 556, '\u02c6': 333, '\u02c7': 333, '\u02d8': 333, '\u02d9': 333, '\u02da': 333, '\u02db': 333, '\u02dc': 333, '\u02dd': 333, '\u2013': 556, '\u2014': 1000, '\u2018': 278, '\u2019': 278, '\u201a': 278, '\u201c': 500, '\u201d': 500, '\u201e': 500, '\u2020': 556, '\u2021': 556, '\u2022': 350, '\u2026': 1000, '\u2030': 1000, '\u2039': 333, '\u203a': 333, '\u2044': 167, '\u2122': 1000, '\u2202': 494, '\u2206': 612, '\u2211': 600, '\u2212': 584, '\u221a': 549, '\u2260': 549, '\u2264': 549, '\u2265': 549, '\u25ca': 494, '\uf6c3': 250, '\ufb01': 611, '\ufb02': 611}),
|
||||||
'Helvetica-BoldOblique': ({'FontName': 'Helvetica-BoldOblique', 'Descent': -207.0, 'FontBBox': (-175.0, -228.0, 1114.0, 962.0), 'FontWeight': 'Bold', 'CapHeight': 718.0, 'FontFamily': 'Helvetica', 'Flags': 0, 'XHeight': 532.0, 'ItalicAngle': -12.0, 'Ascent': 718.0}, {u' ': 278, u'!': 333, u'"': 474, u'#': 556, u'$': 556, u'%': 889, u'&': 722, u"'": 238, u'(': 333, u')': 333, u'*': 389, u'+': 584, u',': 278, u'-': 333, u'.': 278, u'/': 278, u'0': 556, u'1': 556, u'2': 556, u'3': 556, u'4': 556, u'5': 556, u'6': 556, u'7': 556, u'8': 556, u'9': 556, u':': 333, u';': 333, u'<': 584, u'=': 584, u'>': 584, u'?': 611, u'@': 975, u'A': 722, u'B': 722, u'C': 722, u'D': 722, u'E': 667, u'F': 611, u'G': 778, u'H': 722, u'I': 278, u'J': 556, u'K': 722, u'L': 611, u'M': 833, u'N': 722, u'O': 778, u'P': 667, u'Q': 778, u'R': 722, u'S': 667, u'T': 611, u'U': 722, u'V': 667, u'W': 944, u'X': 667, u'Y': 667, u'Z': 611, u'[': 333, u'\\': 278, u']': 333, u'^': 584, u'_': 556, u'`': 333, u'a': 556, u'b': 611, u'c': 556, u'd': 611, u'e': 556, u'f': 333, u'g': 611, u'h': 611, u'i': 278, u'j': 278, u'k': 556, u'l': 278, u'm': 889, u'n': 611, u'o': 611, u'p': 611, u'q': 611, u'r': 389, u's': 556, u't': 333, u'u': 611, u'v': 556, u'w': 778, u'x': 556, u'y': 556, u'z': 500, u'{': 389, u'|': 280, u'}': 389, u'~': 584, u'\xa1': 333, u'\xa2': 556, u'\xa3': 556, u'\xa4': 556, u'\xa5': 556, u'\xa6': 280, u'\xa7': 556, u'\xa8': 333, u'\xa9': 737, u'\xaa': 370, u'\xab': 556, u'\xac': 584, u'\xae': 737, u'\xaf': 333, u'\xb0': 400, u'\xb1': 584, u'\xb2': 333, u'\xb3': 333, u'\xb4': 333, u'\xb5': 611, u'\xb6': 556, u'\xb7': 278, u'\xb8': 333, u'\xb9': 333, u'\xba': 365, u'\xbb': 556, u'\xbc': 834, u'\xbd': 834, u'\xbe': 834, u'\xbf': 611, u'\xc0': 722, u'\xc1': 722, u'\xc2': 722, u'\xc3': 722, u'\xc4': 722, u'\xc5': 722, u'\xc6': 1000, u'\xc7': 722, u'\xc8': 667, u'\xc9': 667, u'\xca': 667, u'\xcb': 667, u'\xcc': 278, u'\xcd': 278, u'\xce': 278, u'\xcf': 278, u'\xd0': 722, u'\xd1': 722, u'\xd2': 778, u'\xd3': 778, u'\xd4': 778, u'\xd5': 778, u'\xd6': 778, u'\xd7': 584, u'\xd8': 778, u'\xd9': 722, u'\xda': 722, u'\xdb': 722, u'\xdc': 722, u'\xdd': 667, u'\xde': 667, u'\xdf': 611, u'\xe0': 556, u'\xe1': 556, u'\xe2': 556, u'\xe3': 556, u'\xe4': 556, u'\xe5': 556, u'\xe6': 889, u'\xe7': 556, u'\xe8': 556, u'\xe9': 556, u'\xea': 556, u'\xeb': 556, u'\xec': 278, u'\xed': 278, u'\xee': 278, u'\xef': 278, u'\xf0': 611, u'\xf1': 611, u'\xf2': 611, u'\xf3': 611, u'\xf4': 611, u'\xf5': 611, u'\xf6': 611, u'\xf7': 584, u'\xf8': 611, u'\xf9': 611, u'\xfa': 611, u'\xfb': 611, u'\xfc': 611, u'\xfd': 556, u'\xfe': 611, u'\xff': 556, u'\u0100': 722, u'\u0101': 556, u'\u0102': 722, u'\u0103': 556, u'\u0104': 722, u'\u0105': 556, u'\u0106': 722, u'\u0107': 556, u'\u010c': 722, u'\u010d': 556, u'\u010e': 722, u'\u010f': 743, u'\u0110': 722, u'\u0111': 611, u'\u0112': 667, u'\u0113': 556, u'\u0116': 667, u'\u0117': 556, u'\u0118': 667, u'\u0119': 556, u'\u011a': 667, u'\u011b': 556, u'\u011e': 778, u'\u011f': 611, u'\u0122': 778, u'\u0123': 611, u'\u012a': 278, u'\u012b': 278, u'\u012e': 278, u'\u012f': 278, u'\u0130': 278, u'\u0131': 278, u'\u0136': 722, u'\u0137': 556, u'\u0139': 611, u'\u013a': 278, u'\u013b': 611, u'\u013c': 278, u'\u013d': 611, u'\u013e': 400, u'\u0141': 611, u'\u0142': 278, u'\u0143': 722, u'\u0144': 611, u'\u0145': 722, u'\u0146': 611, u'\u0147': 722, u'\u0148': 611, u'\u014c': 778, u'\u014d': 611, u'\u0150': 778, u'\u0151': 611, u'\u0152': 1000, u'\u0153': 944, u'\u0154': 722, u'\u0155': 389, u'\u0156': 722, u'\u0157': 389, u'\u0158': 722, u'\u0159': 389, u'\u015a': 667, u'\u015b': 556, u'\u015e': 667, u'\u015f': 556, u'\u0160': 667, u'\u0161': 556, u'\u0162': 611, u'\u0163': 333, u'\u0164': 611, u'\u0165': 389, u'\u016a': 722, u'\u016b': 611, u'\u016e': 722, u'\u016f': 611, u'\u0170': 722, u'\u0171': 611, u'\u0172': 722, u'\u0173': 611, u'\u0178': 667, u'\u0179': 611, u'\u017a': 500, u'\u017b': 611, u'\u017c': 500, u'\u017d': 611, u'\u017e': 500, u'\u0192': 556, u'\u0218': 667, u'\u0219': 556, u'\u02c6': 333, u'\u02c7': 333, u'\u02d8': 333, u'\u02d9': 333, u'\u02da': 333, u'\u02db': 333, u'\u02dc': 333, u'\u02dd': 333, u'\u2013': 556, u'\u2014': 1000, u'\u2018': 278, u'\u2019': 278, u'\u201a': 278, u'\u201c': 500, u'\u201d': 500, u'\u201e': 500, u'\u2020': 556, u'\u2021': 556, u'\u2022': 350, u'\u2026': 1000, u'\u2030': 1000, u'\u2039': 333, u'\u203a': 333, u'\u2044': 167, u'\u2122': 1000, u'\u2202': 494, u'\u2206': 612, u'\u2211': 600, u'\u2212': 584, u'\u221a': 549, u'\u2260': 549, u'\u2264': 549, u'\u2265': 549, u'\u25ca': 494, u'\uf6c3': 250, u'\ufb01': 611, u'\ufb02': 611}),
|
'Helvetica-BoldOblique': ({'FontName': 'Helvetica-BoldOblique', 'Descent': -207.0, 'FontBBox': (-175.0, -228.0, 1114.0, 962.0), 'FontWeight': 'Bold', 'CapHeight': 718.0, 'FontFamily': 'Helvetica', 'Flags': 0, 'XHeight': 532.0, 'ItalicAngle': -12.0, 'Ascent': 718.0}, {' ': 278, '!': 333, '"': 474, '#': 556, '$': 556, '%': 889, '&': 722, "'": 238, '(': 333, ')': 333, '*': 389, '+': 584, ',': 278, '-': 333, '.': 278, '/': 278, '0': 556, '1': 556, '2': 556, '3': 556, '4': 556, '5': 556, '6': 556, '7': 556, '8': 556, '9': 556, ':': 333, ';': 333, '<': 584, '=': 584, '>': 584, '?': 611, '@': 975, 'A': 722, 'B': 722, 'C': 722, 'D': 722, 'E': 667, 'F': 611, 'G': 778, 'H': 722, 'I': 278, 'J': 556, 'K': 722, 'L': 611, 'M': 833, 'N': 722, 'O': 778, 'P': 667, 'Q': 778, 'R': 722, 'S': 667, 'T': 611, 'U': 722, 'V': 667, 'W': 944, 'X': 667, 'Y': 667, 'Z': 611, '[': 333, '\\': 278, ']': 333, '^': 584, '_': 556, '`': 333, 'a': 556, 'b': 611, 'c': 556, 'd': 611, 'e': 556, 'f': 333, 'g': 611, 'h': 611, 'i': 278, 'j': 278, 'k': 556, 'l': 278, 'm': 889, 'n': 611, 'o': 611, 'p': 611, 'q': 611, 'r': 389, 's': 556, 't': 333, 'u': 611, 'v': 556, 'w': 778, 'x': 556, 'y': 556, 'z': 500, '{': 389, '|': 280, '}': 389, '~': 584, '\xa1': 333, '\xa2': 556, '\xa3': 556, '\xa4': 556, '\xa5': 556, '\xa6': 280, '\xa7': 556, '\xa8': 333, '\xa9': 737, '\xaa': 370, '\xab': 556, '\xac': 584, '\xae': 737, '\xaf': 333, '\xb0': 400, '\xb1': 584, '\xb2': 333, '\xb3': 333, '\xb4': 333, '\xb5': 611, '\xb6': 556, '\xb7': 278, '\xb8': 333, '\xb9': 333, '\xba': 365, '\xbb': 556, '\xbc': 834, '\xbd': 834, '\xbe': 834, '\xbf': 611, '\xc0': 722, '\xc1': 722, '\xc2': 722, '\xc3': 722, '\xc4': 722, '\xc5': 722, '\xc6': 1000, '\xc7': 722, '\xc8': 667, '\xc9': 667, '\xca': 667, '\xcb': 667, '\xcc': 278, '\xcd': 278, '\xce': 278, '\xcf': 278, '\xd0': 722, '\xd1': 722, '\xd2': 778, '\xd3': 778, '\xd4': 778, '\xd5': 778, '\xd6': 778, '\xd7': 584, '\xd8': 778, '\xd9': 722, '\xda': 722, '\xdb': 722, '\xdc': 722, '\xdd': 667, '\xde': 667, '\xdf': 611, '\xe0': 556, '\xe1': 556, '\xe2': 556, '\xe3': 556, '\xe4': 556, '\xe5': 556, '\xe6': 889, '\xe7': 556, '\xe8': 556, '\xe9': 556, '\xea': 556, '\xeb': 556, '\xec': 278, '\xed': 278, '\xee': 278, '\xef': 278, '\xf0': 611, '\xf1': 611, '\xf2': 611, '\xf3': 611, '\xf4': 611, '\xf5': 611, '\xf6': 611, '\xf7': 584, '\xf8': 611, '\xf9': 611, '\xfa': 611, '\xfb': 611, '\xfc': 611, '\xfd': 556, '\xfe': 611, '\xff': 556, '\u0100': 722, '\u0101': 556, '\u0102': 722, '\u0103': 556, '\u0104': 722, '\u0105': 556, '\u0106': 722, '\u0107': 556, '\u010c': 722, '\u010d': 556, '\u010e': 722, '\u010f': 743, '\u0110': 722, '\u0111': 611, '\u0112': 667, '\u0113': 556, '\u0116': 667, '\u0117': 556, '\u0118': 667, '\u0119': 556, '\u011a': 667, '\u011b': 556, '\u011e': 778, '\u011f': 611, '\u0122': 778, '\u0123': 611, '\u012a': 278, '\u012b': 278, '\u012e': 278, '\u012f': 278, '\u0130': 278, '\u0131': 278, '\u0136': 722, '\u0137': 556, '\u0139': 611, '\u013a': 278, '\u013b': 611, '\u013c': 278, '\u013d': 611, '\u013e': 400, '\u0141': 611, '\u0142': 278, '\u0143': 722, '\u0144': 611, '\u0145': 722, '\u0146': 611, '\u0147': 722, '\u0148': 611, '\u014c': 778, '\u014d': 611, '\u0150': 778, '\u0151': 611, '\u0152': 1000, '\u0153': 944, '\u0154': 722, '\u0155': 389, '\u0156': 722, '\u0157': 389, '\u0158': 722, '\u0159': 389, '\u015a': 667, '\u015b': 556, '\u015e': 667, '\u015f': 556, '\u0160': 667, '\u0161': 556, '\u0162': 611, '\u0163': 333, '\u0164': 611, '\u0165': 389, '\u016a': 722, '\u016b': 611, '\u016e': 722, '\u016f': 611, '\u0170': 722, '\u0171': 611, '\u0172': 722, '\u0173': 611, '\u0178': 667, '\u0179': 611, '\u017a': 500, '\u017b': 611, '\u017c': 500, '\u017d': 611, '\u017e': 500, '\u0192': 556, '\u0218': 667, '\u0219': 556, '\u02c6': 333, '\u02c7': 333, '\u02d8': 333, '\u02d9': 333, '\u02da': 333, '\u02db': 333, '\u02dc': 333, '\u02dd': 333, '\u2013': 556, '\u2014': 1000, '\u2018': 278, '\u2019': 278, '\u201a': 278, '\u201c': 500, '\u201d': 500, '\u201e': 500, '\u2020': 556, '\u2021': 556, '\u2022': 350, '\u2026': 1000, '\u2030': 1000, '\u2039': 333, '\u203a': 333, '\u2044': 167, '\u2122': 1000, '\u2202': 494, '\u2206': 612, '\u2211': 600, '\u2212': 584, '\u221a': 549, '\u2260': 549, '\u2264': 549, '\u2265': 549, '\u25ca': 494, '\uf6c3': 250, '\ufb01': 611, '\ufb02': 611}),
|
||||||
'Helvetica-Oblique': ({'FontName': 'Helvetica-Oblique', 'Descent': -207.0, 'FontBBox': (-171.0, -225.0, 1116.0, 931.0), 'FontWeight': 'Medium', 'CapHeight': 718.0, 'FontFamily': 'Helvetica', 'Flags': 0, 'XHeight': 523.0, 'ItalicAngle': -12.0, 'Ascent': 718.0}, {u' ': 278, u'!': 278, u'"': 355, u'#': 556, u'$': 556, u'%': 889, u'&': 667, u"'": 191, u'(': 333, u')': 333, u'*': 389, u'+': 584, u',': 278, u'-': 333, u'.': 278, u'/': 278, u'0': 556, u'1': 556, u'2': 556, u'3': 556, u'4': 556, u'5': 556, u'6': 556, u'7': 556, u'8': 556, u'9': 556, u':': 278, u';': 278, u'<': 584, u'=': 584, u'>': 584, u'?': 556, u'@': 1015, u'A': 667, u'B': 667, u'C': 722, u'D': 722, u'E': 667, u'F': 611, u'G': 778, u'H': 722, u'I': 278, u'J': 500, u'K': 667, u'L': 556, u'M': 833, u'N': 722, u'O': 778, u'P': 667, u'Q': 778, u'R': 722, u'S': 667, u'T': 611, u'U': 722, u'V': 667, u'W': 944, u'X': 667, u'Y': 667, u'Z': 611, u'[': 278, u'\\': 278, u']': 278, u'^': 469, u'_': 556, u'`': 333, u'a': 556, u'b': 556, u'c': 500, u'd': 556, u'e': 556, u'f': 278, u'g': 556, u'h': 556, u'i': 222, u'j': 222, u'k': 500, u'l': 222, u'm': 833, u'n': 556, u'o': 556, u'p': 556, u'q': 556, u'r': 333, u's': 500, u't': 278, u'u': 556, u'v': 500, u'w': 722, u'x': 500, u'y': 500, u'z': 500, u'{': 334, u'|': 260, u'}': 334, u'~': 584, u'\xa1': 333, u'\xa2': 556, u'\xa3': 556, u'\xa4': 556, u'\xa5': 556, u'\xa6': 260, u'\xa7': 556, u'\xa8': 333, u'\xa9': 737, u'\xaa': 370, u'\xab': 556, u'\xac': 584, u'\xae': 737, u'\xaf': 333, u'\xb0': 400, u'\xb1': 584, u'\xb2': 333, u'\xb3': 333, u'\xb4': 333, u'\xb5': 556, u'\xb6': 537, u'\xb7': 278, u'\xb8': 333, u'\xb9': 333, u'\xba': 365, u'\xbb': 556, u'\xbc': 834, u'\xbd': 834, u'\xbe': 834, u'\xbf': 611, u'\xc0': 667, u'\xc1': 667, u'\xc2': 667, u'\xc3': 667, u'\xc4': 667, u'\xc5': 667, u'\xc6': 1000, u'\xc7': 722, u'\xc8': 667, u'\xc9': 667, u'\xca': 667, u'\xcb': 667, u'\xcc': 278, u'\xcd': 278, u'\xce': 278, u'\xcf': 278, u'\xd0': 722, u'\xd1': 722, u'\xd2': 778, u'\xd3': 778, u'\xd4': 778, u'\xd5': 778, u'\xd6': 778, u'\xd7': 584, u'\xd8': 778, u'\xd9': 722, u'\xda': 722, u'\xdb': 722, u'\xdc': 722, u'\xdd': 667, u'\xde': 667, u'\xdf': 611, u'\xe0': 556, u'\xe1': 556, u'\xe2': 556, u'\xe3': 556, u'\xe4': 556, u'\xe5': 556, u'\xe6': 889, u'\xe7': 500, u'\xe8': 556, u'\xe9': 556, u'\xea': 556, u'\xeb': 556, u'\xec': 278, u'\xed': 278, u'\xee': 278, u'\xef': 278, u'\xf0': 556, u'\xf1': 556, u'\xf2': 556, u'\xf3': 556, u'\xf4': 556, u'\xf5': 556, u'\xf6': 556, u'\xf7': 584, u'\xf8': 611, u'\xf9': 556, u'\xfa': 556, u'\xfb': 556, u'\xfc': 556, u'\xfd': 500, u'\xfe': 556, u'\xff': 500, u'\u0100': 667, u'\u0101': 556, u'\u0102': 667, u'\u0103': 556, u'\u0104': 667, u'\u0105': 556, u'\u0106': 722, u'\u0107': 500, u'\u010c': 722, u'\u010d': 500, u'\u010e': 722, u'\u010f': 643, u'\u0110': 722, u'\u0111': 556, u'\u0112': 667, u'\u0113': 556, u'\u0116': 667, u'\u0117': 556, u'\u0118': 667, u'\u0119': 556, u'\u011a': 667, u'\u011b': 556, u'\u011e': 778, u'\u011f': 556, u'\u0122': 778, u'\u0123': 556, u'\u012a': 278, u'\u012b': 278, u'\u012e': 278, u'\u012f': 222, u'\u0130': 278, u'\u0131': 278, u'\u0136': 667, u'\u0137': 500, u'\u0139': 556, u'\u013a': 222, u'\u013b': 556, u'\u013c': 222, u'\u013d': 556, u'\u013e': 299, u'\u0141': 556, u'\u0142': 222, u'\u0143': 722, u'\u0144': 556, u'\u0145': 722, u'\u0146': 556, u'\u0147': 722, u'\u0148': 556, u'\u014c': 778, u'\u014d': 556, u'\u0150': 778, u'\u0151': 556, u'\u0152': 1000, u'\u0153': 944, u'\u0154': 722, u'\u0155': 333, u'\u0156': 722, u'\u0157': 333, u'\u0158': 722, u'\u0159': 333, u'\u015a': 667, u'\u015b': 500, u'\u015e': 667, u'\u015f': 500, u'\u0160': 667, u'\u0161': 500, u'\u0162': 611, u'\u0163': 278, u'\u0164': 611, u'\u0165': 317, u'\u016a': 722, u'\u016b': 556, u'\u016e': 722, u'\u016f': 556, u'\u0170': 722, u'\u0171': 556, u'\u0172': 722, u'\u0173': 556, u'\u0178': 667, u'\u0179': 611, u'\u017a': 500, u'\u017b': 611, u'\u017c': 500, u'\u017d': 611, u'\u017e': 500, u'\u0192': 556, u'\u0218': 667, u'\u0219': 500, u'\u02c6': 333, u'\u02c7': 333, u'\u02d8': 333, u'\u02d9': 333, u'\u02da': 333, u'\u02db': 333, u'\u02dc': 333, u'\u02dd': 333, u'\u2013': 556, u'\u2014': 1000, u'\u2018': 222, u'\u2019': 222, u'\u201a': 222, u'\u201c': 333, u'\u201d': 333, u'\u201e': 333, u'\u2020': 556, u'\u2021': 556, u'\u2022': 350, u'\u2026': 1000, u'\u2030': 1000, u'\u2039': 333, u'\u203a': 333, u'\u2044': 167, u'\u2122': 1000, u'\u2202': 476, u'\u2206': 612, u'\u2211': 600, u'\u2212': 584, u'\u221a': 453, u'\u2260': 549, u'\u2264': 549, u'\u2265': 549, u'\u25ca': 471, u'\uf6c3': 250, u'\ufb01': 500, u'\ufb02': 500}),
|
'Helvetica-Oblique': ({'FontName': 'Helvetica-Oblique', 'Descent': -207.0, 'FontBBox': (-171.0, -225.0, 1116.0, 931.0), 'FontWeight': 'Medium', 'CapHeight': 718.0, 'FontFamily': 'Helvetica', 'Flags': 0, 'XHeight': 523.0, 'ItalicAngle': -12.0, 'Ascent': 718.0}, {' ': 278, '!': 278, '"': 355, '#': 556, '$': 556, '%': 889, '&': 667, "'": 191, '(': 333, ')': 333, '*': 389, '+': 584, ',': 278, '-': 333, '.': 278, '/': 278, '0': 556, '1': 556, '2': 556, '3': 556, '4': 556, '5': 556, '6': 556, '7': 556, '8': 556, '9': 556, ':': 278, ';': 278, '<': 584, '=': 584, '>': 584, '?': 556, '@': 1015, 'A': 667, 'B': 667, 'C': 722, 'D': 722, 'E': 667, 'F': 611, 'G': 778, 'H': 722, 'I': 278, 'J': 500, 'K': 667, 'L': 556, 'M': 833, 'N': 722, 'O': 778, 'P': 667, 'Q': 778, 'R': 722, 'S': 667, 'T': 611, 'U': 722, 'V': 667, 'W': 944, 'X': 667, 'Y': 667, 'Z': 611, '[': 278, '\\': 278, ']': 278, '^': 469, '_': 556, '`': 333, 'a': 556, 'b': 556, 'c': 500, 'd': 556, 'e': 556, 'f': 278, 'g': 556, 'h': 556, 'i': 222, 'j': 222, 'k': 500, 'l': 222, 'm': 833, 'n': 556, 'o': 556, 'p': 556, 'q': 556, 'r': 333, 's': 500, 't': 278, 'u': 556, 'v': 500, 'w': 722, 'x': 500, 'y': 500, 'z': 500, '{': 334, '|': 260, '}': 334, '~': 584, '\xa1': 333, '\xa2': 556, '\xa3': 556, '\xa4': 556, '\xa5': 556, '\xa6': 260, '\xa7': 556, '\xa8': 333, '\xa9': 737, '\xaa': 370, '\xab': 556, '\xac': 584, '\xae': 737, '\xaf': 333, '\xb0': 400, '\xb1': 584, '\xb2': 333, '\xb3': 333, '\xb4': 333, '\xb5': 556, '\xb6': 537, '\xb7': 278, '\xb8': 333, '\xb9': 333, '\xba': 365, '\xbb': 556, '\xbc': 834, '\xbd': 834, '\xbe': 834, '\xbf': 611, '\xc0': 667, '\xc1': 667, '\xc2': 667, '\xc3': 667, '\xc4': 667, '\xc5': 667, '\xc6': 1000, '\xc7': 722, '\xc8': 667, '\xc9': 667, '\xca': 667, '\xcb': 667, '\xcc': 278, '\xcd': 278, '\xce': 278, '\xcf': 278, '\xd0': 722, '\xd1': 722, '\xd2': 778, '\xd3': 778, '\xd4': 778, '\xd5': 778, '\xd6': 778, '\xd7': 584, '\xd8': 778, '\xd9': 722, '\xda': 722, '\xdb': 722, '\xdc': 722, '\xdd': 667, '\xde': 667, '\xdf': 611, '\xe0': 556, '\xe1': 556, '\xe2': 556, '\xe3': 556, '\xe4': 556, '\xe5': 556, '\xe6': 889, '\xe7': 500, '\xe8': 556, '\xe9': 556, '\xea': 556, '\xeb': 556, '\xec': 278, '\xed': 278, '\xee': 278, '\xef': 278, '\xf0': 556, '\xf1': 556, '\xf2': 556, '\xf3': 556, '\xf4': 556, '\xf5': 556, '\xf6': 556, '\xf7': 584, '\xf8': 611, '\xf9': 556, '\xfa': 556, '\xfb': 556, '\xfc': 556, '\xfd': 500, '\xfe': 556, '\xff': 500, '\u0100': 667, '\u0101': 556, '\u0102': 667, '\u0103': 556, '\u0104': 667, '\u0105': 556, '\u0106': 722, '\u0107': 500, '\u010c': 722, '\u010d': 500, '\u010e': 722, '\u010f': 643, '\u0110': 722, '\u0111': 556, '\u0112': 667, '\u0113': 556, '\u0116': 667, '\u0117': 556, '\u0118': 667, '\u0119': 556, '\u011a': 667, '\u011b': 556, '\u011e': 778, '\u011f': 556, '\u0122': 778, '\u0123': 556, '\u012a': 278, '\u012b': 278, '\u012e': 278, '\u012f': 222, '\u0130': 278, '\u0131': 278, '\u0136': 667, '\u0137': 500, '\u0139': 556, '\u013a': 222, '\u013b': 556, '\u013c': 222, '\u013d': 556, '\u013e': 299, '\u0141': 556, '\u0142': 222, '\u0143': 722, '\u0144': 556, '\u0145': 722, '\u0146': 556, '\u0147': 722, '\u0148': 556, '\u014c': 778, '\u014d': 556, '\u0150': 778, '\u0151': 556, '\u0152': 1000, '\u0153': 944, '\u0154': 722, '\u0155': 333, '\u0156': 722, '\u0157': 333, '\u0158': 722, '\u0159': 333, '\u015a': 667, '\u015b': 500, '\u015e': 667, '\u015f': 500, '\u0160': 667, '\u0161': 500, '\u0162': 611, '\u0163': 278, '\u0164': 611, '\u0165': 317, '\u016a': 722, '\u016b': 556, '\u016e': 722, '\u016f': 556, '\u0170': 722, '\u0171': 556, '\u0172': 722, '\u0173': 556, '\u0178': 667, '\u0179': 611, '\u017a': 500, '\u017b': 611, '\u017c': 500, '\u017d': 611, '\u017e': 500, '\u0192': 556, '\u0218': 667, '\u0219': 500, '\u02c6': 333, '\u02c7': 333, '\u02d8': 333, '\u02d9': 333, '\u02da': 333, '\u02db': 333, '\u02dc': 333, '\u02dd': 333, '\u2013': 556, '\u2014': 1000, '\u2018': 222, '\u2019': 222, '\u201a': 222, '\u201c': 333, '\u201d': 333, '\u201e': 333, '\u2020': 556, '\u2021': 556, '\u2022': 350, '\u2026': 1000, '\u2030': 1000, '\u2039': 333, '\u203a': 333, '\u2044': 167, '\u2122': 1000, '\u2202': 476, '\u2206': 612, '\u2211': 600, '\u2212': 584, '\u221a': 453, '\u2260': 549, '\u2264': 549, '\u2265': 549, '\u25ca': 471, '\uf6c3': 250, '\ufb01': 500, '\ufb02': 500}),
|
||||||
'Symbol': ({'FontName': 'Symbol', 'FontBBox': (-180.0, -293.0, 1090.0, 1010.0), 'FontWeight': 'Medium', 'FontFamily': 'Symbol', 'Flags': 0, 'ItalicAngle': 0.0}, {u' ': 250, u'!': 333, u'#': 500, u'%': 833, u'&': 778, u'(': 333, u')': 333, u'+': 549, u',': 250, u'.': 250, u'/': 278, u'0': 500, u'1': 500, u'2': 500, u'3': 500, u'4': 500, u'5': 500, u'6': 500, u'7': 500, u'8': 500, u'9': 500, u':': 278, u';': 278, u'<': 549, u'=': 549, u'>': 549, u'?': 444, u'[': 333, u']': 333, u'_': 500, u'{': 480, u'|': 200, u'}': 480, u'\xac': 713, u'\xb0': 400, u'\xb1': 549, u'\xb5': 576, u'\xd7': 549, u'\xf7': 549, u'\u0192': 500, u'\u0391': 722, u'\u0392': 667, u'\u0393': 603, u'\u0395': 611, u'\u0396': 611, u'\u0397': 722, u'\u0398': 741, u'\u0399': 333, u'\u039a': 722, u'\u039b': 686, u'\u039c': 889, u'\u039d': 722, u'\u039e': 645, u'\u039f': 722, u'\u03a0': 768, u'\u03a1': 556, u'\u03a3': 592, u'\u03a4': 611, u'\u03a5': 690, u'\u03a6': 763, u'\u03a7': 722, u'\u03a8': 795, u'\u03b1': 631, u'\u03b2': 549, u'\u03b3': 411, u'\u03b4': 494, u'\u03b5': 439, u'\u03b6': 494, u'\u03b7': 603, u'\u03b8': 521, u'\u03b9': 329, u'\u03ba': 549, u'\u03bb': 549, u'\u03bd': 521, u'\u03be': 493, u'\u03bf': 549, u'\u03c0': 549, u'\u03c1': 549, u'\u03c2': 439, u'\u03c3': 603, u'\u03c4': 439, u'\u03c5': 576, u'\u03c6': 521, u'\u03c7': 549, u'\u03c8': 686, u'\u03c9': 686, u'\u03d1': 631, u'\u03d2': 620, u'\u03d5': 603, u'\u03d6': 713, u'\u2022': 460, u'\u2026': 1000, u'\u2032': 247, u'\u2033': 411, u'\u2044': 167, u'\u20ac': 750, u'\u2111': 686, u'\u2118': 987, u'\u211c': 795, u'\u2126': 768, u'\u2135': 823, u'\u2190': 987, u'\u2191': 603, u'\u2192': 987, u'\u2193': 603, u'\u2194': 1042, u'\u21b5': 658, u'\u21d0': 987, u'\u21d1': 603, u'\u21d2': 987, u'\u21d3': 603, u'\u21d4': 1042, u'\u2200': 713, u'\u2202': 494, u'\u2203': 549, u'\u2205': 823, u'\u2206': 612, u'\u2207': 713, u'\u2208': 713, u'\u2209': 713, u'\u220b': 439, u'\u220f': 823, u'\u2211': 713, u'\u2212': 549, u'\u2217': 500, u'\u221a': 549, u'\u221d': 713, u'\u221e': 713, u'\u2220': 768, u'\u2227': 603, u'\u2228': 603, u'\u2229': 768, u'\u222a': 768, u'\u222b': 274, u'\u2234': 863, u'\u223c': 549, u'\u2245': 549, u'\u2248': 549, u'\u2260': 549, u'\u2261': 549, u'\u2264': 549, u'\u2265': 549, u'\u2282': 713, u'\u2283': 713, u'\u2284': 713, u'\u2286': 713, u'\u2287': 713, u'\u2295': 768, u'\u2297': 768, u'\u22a5': 658, u'\u22c5': 250, u'\u2320': 686, u'\u2321': 686, u'\u2329': 329, u'\u232a': 329, u'\u25ca': 494, u'\u2660': 753, u'\u2663': 753, u'\u2665': 753, u'\u2666': 753, u'\uf6d9': 790, u'\uf6da': 790, u'\uf6db': 890, u'\uf8e5': 500, u'\uf8e6': 603, u'\uf8e7': 1000, u'\uf8e8': 790, u'\uf8e9': 790, u'\uf8ea': 786, u'\uf8eb': 384, u'\uf8ec': 384, u'\uf8ed': 384, u'\uf8ee': 384, u'\uf8ef': 384, u'\uf8f0': 384, u'\uf8f1': 494, u'\uf8f2': 494, u'\uf8f3': 494, u'\uf8f4': 494, u'\uf8f5': 686, u'\uf8f6': 384, u'\uf8f7': 384, u'\uf8f8': 384, u'\uf8f9': 384, u'\uf8fa': 384, u'\uf8fb': 384, u'\uf8fc': 494, u'\uf8fd': 494, u'\uf8fe': 494, u'\uf8ff': 790}),
|
'Symbol': ({'FontName': 'Symbol', 'FontBBox': (-180.0, -293.0, 1090.0, 1010.0), 'FontWeight': 'Medium', 'FontFamily': 'Symbol', 'Flags': 0, 'ItalicAngle': 0.0}, {' ': 250, '!': 333, '#': 500, '%': 833, '&': 778, '(': 333, ')': 333, '+': 549, ',': 250, '.': 250, '/': 278, '0': 500, '1': 500, '2': 500, '3': 500, '4': 500, '5': 500, '6': 500, '7': 500, '8': 500, '9': 500, ':': 278, ';': 278, '<': 549, '=': 549, '>': 549, '?': 444, '[': 333, ']': 333, '_': 500, '{': 480, '|': 200, '}': 480, '\xac': 713, '\xb0': 400, '\xb1': 549, '\xb5': 576, '\xd7': 549, '\xf7': 549, '\u0192': 500, '\u0391': 722, '\u0392': 667, '\u0393': 603, '\u0395': 611, '\u0396': 611, '\u0397': 722, '\u0398': 741, '\u0399': 333, '\u039a': 722, '\u039b': 686, '\u039c': 889, '\u039d': 722, '\u039e': 645, '\u039f': 722, '\u03a0': 768, '\u03a1': 556, '\u03a3': 592, '\u03a4': 611, '\u03a5': 690, '\u03a6': 763, '\u03a7': 722, '\u03a8': 795, '\u03b1': 631, '\u03b2': 549, '\u03b3': 411, '\u03b4': 494, '\u03b5': 439, '\u03b6': 494, '\u03b7': 603, '\u03b8': 521, '\u03b9': 329, '\u03ba': 549, '\u03bb': 549, '\u03bd': 521, '\u03be': 493, '\u03bf': 549, '\u03c0': 549, '\u03c1': 549, '\u03c2': 439, '\u03c3': 603, '\u03c4': 439, '\u03c5': 576, '\u03c6': 521, '\u03c7': 549, '\u03c8': 686, '\u03c9': 686, '\u03d1': 631, '\u03d2': 620, '\u03d5': 603, '\u03d6': 713, '\u2022': 460, '\u2026': 1000, '\u2032': 247, '\u2033': 411, '\u2044': 167, '\u20ac': 750, '\u2111': 686, '\u2118': 987, '\u211c': 795, '\u2126': 768, '\u2135': 823, '\u2190': 987, '\u2191': 603, '\u2192': 987, '\u2193': 603, '\u2194': 1042, '\u21b5': 658, '\u21d0': 987, '\u21d1': 603, '\u21d2': 987, '\u21d3': 603, '\u21d4': 1042, '\u2200': 713, '\u2202': 494, '\u2203': 549, '\u2205': 823, '\u2206': 612, '\u2207': 713, '\u2208': 713, '\u2209': 713, '\u220b': 439, '\u220f': 823, '\u2211': 713, '\u2212': 549, '\u2217': 500, '\u221a': 549, '\u221d': 713, '\u221e': 713, '\u2220': 768, '\u2227': 603, '\u2228': 603, '\u2229': 768, '\u222a': 768, '\u222b': 274, '\u2234': 863, '\u223c': 549, '\u2245': 549, '\u2248': 549, '\u2260': 549, '\u2261': 549, '\u2264': 549, '\u2265': 549, '\u2282': 713, '\u2283': 713, '\u2284': 713, '\u2286': 713, '\u2287': 713, '\u2295': 768, '\u2297': 768, '\u22a5': 658, '\u22c5': 250, '\u2320': 686, '\u2321': 686, '\u2329': 329, '\u232a': 329, '\u25ca': 494, '\u2660': 753, '\u2663': 753, '\u2665': 753, '\u2666': 753, '\uf6d9': 790, '\uf6da': 790, '\uf6db': 890, '\uf8e5': 500, '\uf8e6': 603, '\uf8e7': 1000, '\uf8e8': 790, '\uf8e9': 790, '\uf8ea': 786, '\uf8eb': 384, '\uf8ec': 384, '\uf8ed': 384, '\uf8ee': 384, '\uf8ef': 384, '\uf8f0': 384, '\uf8f1': 494, '\uf8f2': 494, '\uf8f3': 494, '\uf8f4': 494, '\uf8f5': 686, '\uf8f6': 384, '\uf8f7': 384, '\uf8f8': 384, '\uf8f9': 384, '\uf8fa': 384, '\uf8fb': 384, '\uf8fc': 494, '\uf8fd': 494, '\uf8fe': 494, '\uf8ff': 790}),
|
||||||
'Times-Bold': ({'FontName': 'Times-Bold', 'Descent': -217.0, 'FontBBox': (-168.0, -218.0, 1000.0, 935.0), 'FontWeight': 'Bold', 'CapHeight': 676.0, 'FontFamily': 'Times', 'Flags': 0, 'XHeight': 461.0, 'ItalicAngle': 0.0, 'Ascent': 683.0}, {u' ': 250, u'!': 333, u'"': 555, u'#': 500, u'$': 500, u'%': 1000, u'&': 833, u"'": 278, u'(': 333, u')': 333, u'*': 500, u'+': 570, u',': 250, u'-': 333, u'.': 250, u'/': 278, u'0': 500, u'1': 500, u'2': 500, u'3': 500, u'4': 500, u'5': 500, u'6': 500, u'7': 500, u'8': 500, u'9': 500, u':': 333, u';': 333, u'<': 570, u'=': 570, u'>': 570, u'?': 500, u'@': 930, u'A': 722, u'B': 667, u'C': 722, u'D': 722, u'E': 667, u'F': 611, u'G': 778, u'H': 778, u'I': 389, u'J': 500, u'K': 778, u'L': 667, u'M': 944, u'N': 722, u'O': 778, u'P': 611, u'Q': 778, u'R': 722, u'S': 556, u'T': 667, u'U': 722, u'V': 722, u'W': 1000, u'X': 722, u'Y': 722, u'Z': 667, u'[': 333, u'\\': 278, u']': 333, u'^': 581, u'_': 500, u'`': 333, u'a': 500, u'b': 556, u'c': 444, u'd': 556, u'e': 444, u'f': 333, u'g': 500, u'h': 556, u'i': 278, u'j': 333, u'k': 556, u'l': 278, u'm': 833, u'n': 556, u'o': 500, u'p': 556, u'q': 556, u'r': 444, u's': 389, u't': 333, u'u': 556, u'v': 500, u'w': 722, u'x': 500, u'y': 500, u'z': 444, u'{': 394, u'|': 220, u'}': 394, u'~': 520, u'\xa1': 333, u'\xa2': 500, u'\xa3': 500, u'\xa4': 500, u'\xa5': 500, u'\xa6': 220, u'\xa7': 500, u'\xa8': 333, u'\xa9': 747, u'\xaa': 300, u'\xab': 500, u'\xac': 570, u'\xae': 747, u'\xaf': 333, u'\xb0': 400, u'\xb1': 570, u'\xb2': 300, u'\xb3': 300, u'\xb4': 333, u'\xb5': 556, u'\xb6': 540, u'\xb7': 250, u'\xb8': 333, u'\xb9': 300, u'\xba': 330, u'\xbb': 500, u'\xbc': 750, u'\xbd': 750, u'\xbe': 750, u'\xbf': 500, u'\xc0': 722, u'\xc1': 722, u'\xc2': 722, u'\xc3': 722, u'\xc4': 722, u'\xc5': 722, u'\xc6': 1000, u'\xc7': 722, u'\xc8': 667, u'\xc9': 667, u'\xca': 667, u'\xcb': 667, u'\xcc': 389, u'\xcd': 389, u'\xce': 389, u'\xcf': 389, u'\xd0': 722, u'\xd1': 722, u'\xd2': 778, u'\xd3': 778, u'\xd4': 778, u'\xd5': 778, u'\xd6': 778, u'\xd7': 570, u'\xd8': 778, u'\xd9': 722, u'\xda': 722, u'\xdb': 722, u'\xdc': 722, u'\xdd': 722, u'\xde': 611, u'\xdf': 556, u'\xe0': 500, u'\xe1': 500, u'\xe2': 500, u'\xe3': 500, u'\xe4': 500, u'\xe5': 500, u'\xe6': 722, u'\xe7': 444, u'\xe8': 444, u'\xe9': 444, u'\xea': 444, u'\xeb': 444, u'\xec': 278, u'\xed': 278, u'\xee': 278, u'\xef': 278, u'\xf0': 500, u'\xf1': 556, u'\xf2': 500, u'\xf3': 500, u'\xf4': 500, u'\xf5': 500, u'\xf6': 500, u'\xf7': 570, u'\xf8': 500, u'\xf9': 556, u'\xfa': 556, u'\xfb': 556, u'\xfc': 556, u'\xfd': 500, u'\xfe': 556, u'\xff': 500, u'\u0100': 722, u'\u0101': 500, u'\u0102': 722, u'\u0103': 500, u'\u0104': 722, u'\u0105': 500, u'\u0106': 722, u'\u0107': 444, u'\u010c': 722, u'\u010d': 444, u'\u010e': 722, u'\u010f': 672, u'\u0110': 722, u'\u0111': 556, u'\u0112': 667, u'\u0113': 444, u'\u0116': 667, u'\u0117': 444, u'\u0118': 667, u'\u0119': 444, u'\u011a': 667, u'\u011b': 444, u'\u011e': 778, u'\u011f': 500, u'\u0122': 778, u'\u0123': 500, u'\u012a': 389, u'\u012b': 278, u'\u012e': 389, u'\u012f': 278, u'\u0130': 389, u'\u0131': 278, u'\u0136': 778, u'\u0137': 556, u'\u0139': 667, u'\u013a': 278, u'\u013b': 667, u'\u013c': 278, u'\u013d': 667, u'\u013e': 394, u'\u0141': 667, u'\u0142': 278, u'\u0143': 722, u'\u0144': 556, u'\u0145': 722, u'\u0146': 556, u'\u0147': 722, u'\u0148': 556, u'\u014c': 778, u'\u014d': 500, u'\u0150': 778, u'\u0151': 500, u'\u0152': 1000, u'\u0153': 722, u'\u0154': 722, u'\u0155': 444, u'\u0156': 722, u'\u0157': 444, u'\u0158': 722, u'\u0159': 444, u'\u015a': 556, u'\u015b': 389, u'\u015e': 556, u'\u015f': 389, u'\u0160': 556, u'\u0161': 389, u'\u0162': 667, u'\u0163': 333, u'\u0164': 667, u'\u0165': 416, u'\u016a': 722, u'\u016b': 556, u'\u016e': 722, u'\u016f': 556, u'\u0170': 722, u'\u0171': 556, u'\u0172': 722, u'\u0173': 556, u'\u0178': 722, u'\u0179': 667, u'\u017a': 444, u'\u017b': 667, u'\u017c': 444, u'\u017d': 667, u'\u017e': 444, u'\u0192': 500, u'\u0218': 556, u'\u0219': 389, u'\u02c6': 333, u'\u02c7': 333, u'\u02d8': 333, u'\u02d9': 333, u'\u02da': 333, u'\u02db': 333, u'\u02dc': 333, u'\u02dd': 333, u'\u2013': 500, u'\u2014': 1000, u'\u2018': 333, u'\u2019': 333, u'\u201a': 333, u'\u201c': 500, u'\u201d': 500, u'\u201e': 500, u'\u2020': 500, u'\u2021': 500, u'\u2022': 350, u'\u2026': 1000, u'\u2030': 1000, u'\u2039': 333, u'\u203a': 333, u'\u2044': 167, u'\u2122': 1000, u'\u2202': 494, u'\u2206': 612, u'\u2211': 600, u'\u2212': 570, u'\u221a': 549, u'\u2260': 549, u'\u2264': 549, u'\u2265': 549, u'\u25ca': 494, u'\uf6c3': 250, u'\ufb01': 556, u'\ufb02': 556}),
|
'Times-Bold': ({'FontName': 'Times-Bold', 'Descent': -217.0, 'FontBBox': (-168.0, -218.0, 1000.0, 935.0), 'FontWeight': 'Bold', 'CapHeight': 676.0, 'FontFamily': 'Times', 'Flags': 0, 'XHeight': 461.0, 'ItalicAngle': 0.0, 'Ascent': 683.0}, {' ': 250, '!': 333, '"': 555, '#': 500, '$': 500, '%': 1000, '&': 833, "'": 278, '(': 333, ')': 333, '*': 500, '+': 570, ',': 250, '-': 333, '.': 250, '/': 278, '0': 500, '1': 500, '2': 500, '3': 500, '4': 500, '5': 500, '6': 500, '7': 500, '8': 500, '9': 500, ':': 333, ';': 333, '<': 570, '=': 570, '>': 570, '?': 500, '@': 930, 'A': 722, 'B': 667, 'C': 722, 'D': 722, 'E': 667, 'F': 611, 'G': 778, 'H': 778, 'I': 389, 'J': 500, 'K': 778, 'L': 667, 'M': 944, 'N': 722, 'O': 778, 'P': 611, 'Q': 778, 'R': 722, 'S': 556, 'T': 667, 'U': 722, 'V': 722, 'W': 1000, 'X': 722, 'Y': 722, 'Z': 667, '[': 333, '\\': 278, ']': 333, '^': 581, '_': 500, '`': 333, 'a': 500, 'b': 556, 'c': 444, 'd': 556, 'e': 444, 'f': 333, 'g': 500, 'h': 556, 'i': 278, 'j': 333, 'k': 556, 'l': 278, 'm': 833, 'n': 556, 'o': 500, 'p': 556, 'q': 556, 'r': 444, 's': 389, 't': 333, 'u': 556, 'v': 500, 'w': 722, 'x': 500, 'y': 500, 'z': 444, '{': 394, '|': 220, '}': 394, '~': 520, '\xa1': 333, '\xa2': 500, '\xa3': 500, '\xa4': 500, '\xa5': 500, '\xa6': 220, '\xa7': 500, '\xa8': 333, '\xa9': 747, '\xaa': 300, '\xab': 500, '\xac': 570, '\xae': 747, '\xaf': 333, '\xb0': 400, '\xb1': 570, '\xb2': 300, '\xb3': 300, '\xb4': 333, '\xb5': 556, '\xb6': 540, '\xb7': 250, '\xb8': 333, '\xb9': 300, '\xba': 330, '\xbb': 500, '\xbc': 750, '\xbd': 750, '\xbe': 750, '\xbf': 500, '\xc0': 722, '\xc1': 722, '\xc2': 722, '\xc3': 722, '\xc4': 722, '\xc5': 722, '\xc6': 1000, '\xc7': 722, '\xc8': 667, '\xc9': 667, '\xca': 667, '\xcb': 667, '\xcc': 389, '\xcd': 389, '\xce': 389, '\xcf': 389, '\xd0': 722, '\xd1': 722, '\xd2': 778, '\xd3': 778, '\xd4': 778, '\xd5': 778, '\xd6': 778, '\xd7': 570, '\xd8': 778, '\xd9': 722, '\xda': 722, '\xdb': 722, '\xdc': 722, '\xdd': 722, '\xde': 611, '\xdf': 556, '\xe0': 500, '\xe1': 500, '\xe2': 500, '\xe3': 500, '\xe4': 500, '\xe5': 500, '\xe6': 722, '\xe7': 444, '\xe8': 444, '\xe9': 444, '\xea': 444, '\xeb': 444, '\xec': 278, '\xed': 278, '\xee': 278, '\xef': 278, '\xf0': 500, '\xf1': 556, '\xf2': 500, '\xf3': 500, '\xf4': 500, '\xf5': 500, '\xf6': 500, '\xf7': 570, '\xf8': 500, '\xf9': 556, '\xfa': 556, '\xfb': 556, '\xfc': 556, '\xfd': 500, '\xfe': 556, '\xff': 500, '\u0100': 722, '\u0101': 500, '\u0102': 722, '\u0103': 500, '\u0104': 722, '\u0105': 500, '\u0106': 722, '\u0107': 444, '\u010c': 722, '\u010d': 444, '\u010e': 722, '\u010f': 672, '\u0110': 722, '\u0111': 556, '\u0112': 667, '\u0113': 444, '\u0116': 667, '\u0117': 444, '\u0118': 667, '\u0119': 444, '\u011a': 667, '\u011b': 444, '\u011e': 778, '\u011f': 500, '\u0122': 778, '\u0123': 500, '\u012a': 389, '\u012b': 278, '\u012e': 389, '\u012f': 278, '\u0130': 389, '\u0131': 278, '\u0136': 778, '\u0137': 556, '\u0139': 667, '\u013a': 278, '\u013b': 667, '\u013c': 278, '\u013d': 667, '\u013e': 394, '\u0141': 667, '\u0142': 278, '\u0143': 722, '\u0144': 556, '\u0145': 722, '\u0146': 556, '\u0147': 722, '\u0148': 556, '\u014c': 778, '\u014d': 500, '\u0150': 778, '\u0151': 500, '\u0152': 1000, '\u0153': 722, '\u0154': 722, '\u0155': 444, '\u0156': 722, '\u0157': 444, '\u0158': 722, '\u0159': 444, '\u015a': 556, '\u015b': 389, '\u015e': 556, '\u015f': 389, '\u0160': 556, '\u0161': 389, '\u0162': 667, '\u0163': 333, '\u0164': 667, '\u0165': 416, '\u016a': 722, '\u016b': 556, '\u016e': 722, '\u016f': 556, '\u0170': 722, '\u0171': 556, '\u0172': 722, '\u0173': 556, '\u0178': 722, '\u0179': 667, '\u017a': 444, '\u017b': 667, '\u017c': 444, '\u017d': 667, '\u017e': 444, '\u0192': 500, '\u0218': 556, '\u0219': 389, '\u02c6': 333, '\u02c7': 333, '\u02d8': 333, '\u02d9': 333, '\u02da': 333, '\u02db': 333, '\u02dc': 333, '\u02dd': 333, '\u2013': 500, '\u2014': 1000, '\u2018': 333, '\u2019': 333, '\u201a': 333, '\u201c': 500, '\u201d': 500, '\u201e': 500, '\u2020': 500, '\u2021': 500, '\u2022': 350, '\u2026': 1000, '\u2030': 1000, '\u2039': 333, '\u203a': 333, '\u2044': 167, '\u2122': 1000, '\u2202': 494, '\u2206': 612, '\u2211': 600, '\u2212': 570, '\u221a': 549, '\u2260': 549, '\u2264': 549, '\u2265': 549, '\u25ca': 494, '\uf6c3': 250, '\ufb01': 556, '\ufb02': 556}),
|
||||||
'Times-BoldItalic': ({'FontName': 'Times-BoldItalic', 'Descent': -217.0, 'FontBBox': (-200.0, -218.0, 996.0, 921.0), 'FontWeight': 'Bold', 'CapHeight': 669.0, 'FontFamily': 'Times', 'Flags': 0, 'XHeight': 462.0, 'ItalicAngle': -15.0, 'Ascent': 683.0}, {u' ': 250, u'!': 389, u'"': 555, u'#': 500, u'$': 500, u'%': 833, u'&': 778, u"'": 278, u'(': 333, u')': 333, u'*': 500, u'+': 570, u',': 250, u'-': 333, u'.': 250, u'/': 278, u'0': 500, u'1': 500, u'2': 500, u'3': 500, u'4': 500, u'5': 500, u'6': 500, u'7': 500, u'8': 500, u'9': 500, u':': 333, u';': 333, u'<': 570, u'=': 570, u'>': 570, u'?': 500, u'@': 832, u'A': 667, u'B': 667, u'C': 667, u'D': 722, u'E': 667, u'F': 667, u'G': 722, u'H': 778, u'I': 389, u'J': 500, u'K': 667, u'L': 611, u'M': 889, u'N': 722, u'O': 722, u'P': 611, u'Q': 722, u'R': 667, u'S': 556, u'T': 611, u'U': 722, u'V': 667, u'W': 889, u'X': 667, u'Y': 611, u'Z': 611, u'[': 333, u'\\': 278, u']': 333, u'^': 570, u'_': 500, u'`': 333, u'a': 500, u'b': 500, u'c': 444, u'd': 500, u'e': 444, u'f': 333, u'g': 500, u'h': 556, u'i': 278, u'j': 278, u'k': 500, u'l': 278, u'm': 778, u'n': 556, u'o': 500, u'p': 500, u'q': 500, u'r': 389, u's': 389, u't': 278, u'u': 556, u'v': 444, u'w': 667, u'x': 500, u'y': 444, u'z': 389, u'{': 348, u'|': 220, u'}': 348, u'~': 570, u'\xa1': 389, u'\xa2': 500, u'\xa3': 500, u'\xa4': 500, u'\xa5': 500, u'\xa6': 220, u'\xa7': 500, u'\xa8': 333, u'\xa9': 747, u'\xaa': 266, u'\xab': 500, u'\xac': 606, u'\xae': 747, u'\xaf': 333, u'\xb0': 400, u'\xb1': 570, u'\xb2': 300, u'\xb3': 300, u'\xb4': 333, u'\xb5': 576, u'\xb6': 500, u'\xb7': 250, u'\xb8': 333, u'\xb9': 300, u'\xba': 300, u'\xbb': 500, u'\xbc': 750, u'\xbd': 750, u'\xbe': 750, u'\xbf': 500, u'\xc0': 667, u'\xc1': 667, u'\xc2': 667, u'\xc3': 667, u'\xc4': 667, u'\xc5': 667, u'\xc6': 944, u'\xc7': 667, u'\xc8': 667, u'\xc9': 667, u'\xca': 667, u'\xcb': 667, u'\xcc': 389, u'\xcd': 389, u'\xce': 389, u'\xcf': 389, u'\xd0': 722, u'\xd1': 722, u'\xd2': 722, u'\xd3': 722, u'\xd4': 722, u'\xd5': 722, u'\xd6': 722, u'\xd7': 570, u'\xd8': 722, u'\xd9': 722, u'\xda': 722, u'\xdb': 722, u'\xdc': 722, u'\xdd': 611, u'\xde': 611, u'\xdf': 500, u'\xe0': 500, u'\xe1': 500, u'\xe2': 500, u'\xe3': 500, u'\xe4': 500, u'\xe5': 500, u'\xe6': 722, u'\xe7': 444, u'\xe8': 444, u'\xe9': 444, u'\xea': 444, u'\xeb': 444, u'\xec': 278, u'\xed': 278, u'\xee': 278, u'\xef': 278, u'\xf0': 500, u'\xf1': 556, u'\xf2': 500, u'\xf3': 500, u'\xf4': 500, u'\xf5': 500, u'\xf6': 500, u'\xf7': 570, u'\xf8': 500, u'\xf9': 556, u'\xfa': 556, u'\xfb': 556, u'\xfc': 556, u'\xfd': 444, u'\xfe': 500, u'\xff': 444, u'\u0100': 667, u'\u0101': 500, u'\u0102': 667, u'\u0103': 500, u'\u0104': 667, u'\u0105': 500, u'\u0106': 667, u'\u0107': 444, u'\u010c': 667, u'\u010d': 444, u'\u010e': 722, u'\u010f': 608, u'\u0110': 722, u'\u0111': 500, u'\u0112': 667, u'\u0113': 444, u'\u0116': 667, u'\u0117': 444, u'\u0118': 667, u'\u0119': 444, u'\u011a': 667, u'\u011b': 444, u'\u011e': 722, u'\u011f': 500, u'\u0122': 722, u'\u0123': 500, u'\u012a': 389, u'\u012b': 278, u'\u012e': 389, u'\u012f': 278, u'\u0130': 389, u'\u0131': 278, u'\u0136': 667, u'\u0137': 500, u'\u0139': 611, u'\u013a': 278, u'\u013b': 611, u'\u013c': 278, u'\u013d': 611, u'\u013e': 382, u'\u0141': 611, u'\u0142': 278, u'\u0143': 722, u'\u0144': 556, u'\u0145': 722, u'\u0146': 556, u'\u0147': 722, u'\u0148': 556, u'\u014c': 722, u'\u014d': 500, u'\u0150': 722, u'\u0151': 500, u'\u0152': 944, u'\u0153': 722, u'\u0154': 667, u'\u0155': 389, u'\u0156': 667, u'\u0157': 389, u'\u0158': 667, u'\u0159': 389, u'\u015a': 556, u'\u015b': 389, u'\u015e': 556, u'\u015f': 389, u'\u0160': 556, u'\u0161': 389, u'\u0162': 611, u'\u0163': 278, u'\u0164': 611, u'\u0165': 366, u'\u016a': 722, u'\u016b': 556, u'\u016e': 722, u'\u016f': 556, u'\u0170': 722, u'\u0171': 556, u'\u0172': 722, u'\u0173': 556, u'\u0178': 611, u'\u0179': 611, u'\u017a': 389, u'\u017b': 611, u'\u017c': 389, u'\u017d': 611, u'\u017e': 389, u'\u0192': 500, u'\u0218': 556, u'\u0219': 389, u'\u02c6': 333, u'\u02c7': 333, u'\u02d8': 333, u'\u02d9': 333, u'\u02da': 333, u'\u02db': 333, u'\u02dc': 333, u'\u02dd': 333, u'\u2013': 500, u'\u2014': 1000, u'\u2018': 333, u'\u2019': 333, u'\u201a': 333, u'\u201c': 500, u'\u201d': 500, u'\u201e': 500, u'\u2020': 500, u'\u2021': 500, u'\u2022': 350, u'\u2026': 1000, u'\u2030': 1000, u'\u2039': 333, u'\u203a': 333, u'\u2044': 167, u'\u2122': 1000, u'\u2202': 494, u'\u2206': 612, u'\u2211': 600, u'\u2212': 606, u'\u221a': 549, u'\u2260': 549, u'\u2264': 549, u'\u2265': 549, u'\u25ca': 494, u'\uf6c3': 250, u'\ufb01': 556, u'\ufb02': 556}),
|
'Times-BoldItalic': ({'FontName': 'Times-BoldItalic', 'Descent': -217.0, 'FontBBox': (-200.0, -218.0, 996.0, 921.0), 'FontWeight': 'Bold', 'CapHeight': 669.0, 'FontFamily': 'Times', 'Flags': 0, 'XHeight': 462.0, 'ItalicAngle': -15.0, 'Ascent': 683.0}, {' ': 250, '!': 389, '"': 555, '#': 500, '$': 500, '%': 833, '&': 778, "'": 278, '(': 333, ')': 333, '*': 500, '+': 570, ',': 250, '-': 333, '.': 250, '/': 278, '0': 500, '1': 500, '2': 500, '3': 500, '4': 500, '5': 500, '6': 500, '7': 500, '8': 500, '9': 500, ':': 333, ';': 333, '<': 570, '=': 570, '>': 570, '?': 500, '@': 832, 'A': 667, 'B': 667, 'C': 667, 'D': 722, 'E': 667, 'F': 667, 'G': 722, 'H': 778, 'I': 389, 'J': 500, 'K': 667, 'L': 611, 'M': 889, 'N': 722, 'O': 722, 'P': 611, 'Q': 722, 'R': 667, 'S': 556, 'T': 611, 'U': 722, 'V': 667, 'W': 889, 'X': 667, 'Y': 611, 'Z': 611, '[': 333, '\\': 278, ']': 333, '^': 570, '_': 500, '`': 333, 'a': 500, 'b': 500, 'c': 444, 'd': 500, 'e': 444, 'f': 333, 'g': 500, 'h': 556, 'i': 278, 'j': 278, 'k': 500, 'l': 278, 'm': 778, 'n': 556, 'o': 500, 'p': 500, 'q': 500, 'r': 389, 's': 389, 't': 278, 'u': 556, 'v': 444, 'w': 667, 'x': 500, 'y': 444, 'z': 389, '{': 348, '|': 220, '}': 348, '~': 570, '\xa1': 389, '\xa2': 500, '\xa3': 500, '\xa4': 500, '\xa5': 500, '\xa6': 220, '\xa7': 500, '\xa8': 333, '\xa9': 747, '\xaa': 266, '\xab': 500, '\xac': 606, '\xae': 747, '\xaf': 333, '\xb0': 400, '\xb1': 570, '\xb2': 300, '\xb3': 300, '\xb4': 333, '\xb5': 576, '\xb6': 500, '\xb7': 250, '\xb8': 333, '\xb9': 300, '\xba': 300, '\xbb': 500, '\xbc': 750, '\xbd': 750, '\xbe': 750, '\xbf': 500, '\xc0': 667, '\xc1': 667, '\xc2': 667, '\xc3': 667, '\xc4': 667, '\xc5': 667, '\xc6': 944, '\xc7': 667, '\xc8': 667, '\xc9': 667, '\xca': 667, '\xcb': 667, '\xcc': 389, '\xcd': 389, '\xce': 389, '\xcf': 389, '\xd0': 722, '\xd1': 722, '\xd2': 722, '\xd3': 722, '\xd4': 722, '\xd5': 722, '\xd6': 722, '\xd7': 570, '\xd8': 722, '\xd9': 722, '\xda': 722, '\xdb': 722, '\xdc': 722, '\xdd': 611, '\xde': 611, '\xdf': 500, '\xe0': 500, '\xe1': 500, '\xe2': 500, '\xe3': 500, '\xe4': 500, '\xe5': 500, '\xe6': 722, '\xe7': 444, '\xe8': 444, '\xe9': 444, '\xea': 444, '\xeb': 444, '\xec': 278, '\xed': 278, '\xee': 278, '\xef': 278, '\xf0': 500, '\xf1': 556, '\xf2': 500, '\xf3': 500, '\xf4': 500, '\xf5': 500, '\xf6': 500, '\xf7': 570, '\xf8': 500, '\xf9': 556, '\xfa': 556, '\xfb': 556, '\xfc': 556, '\xfd': 444, '\xfe': 500, '\xff': 444, '\u0100': 667, '\u0101': 500, '\u0102': 667, '\u0103': 500, '\u0104': 667, '\u0105': 500, '\u0106': 667, '\u0107': 444, '\u010c': 667, '\u010d': 444, '\u010e': 722, '\u010f': 608, '\u0110': 722, '\u0111': 500, '\u0112': 667, '\u0113': 444, '\u0116': 667, '\u0117': 444, '\u0118': 667, '\u0119': 444, '\u011a': 667, '\u011b': 444, '\u011e': 722, '\u011f': 500, '\u0122': 722, '\u0123': 500, '\u012a': 389, '\u012b': 278, '\u012e': 389, '\u012f': 278, '\u0130': 389, '\u0131': 278, '\u0136': 667, '\u0137': 500, '\u0139': 611, '\u013a': 278, '\u013b': 611, '\u013c': 278, '\u013d': 611, '\u013e': 382, '\u0141': 611, '\u0142': 278, '\u0143': 722, '\u0144': 556, '\u0145': 722, '\u0146': 556, '\u0147': 722, '\u0148': 556, '\u014c': 722, '\u014d': 500, '\u0150': 722, '\u0151': 500, '\u0152': 944, '\u0153': 722, '\u0154': 667, '\u0155': 389, '\u0156': 667, '\u0157': 389, '\u0158': 667, '\u0159': 389, '\u015a': 556, '\u015b': 389, '\u015e': 556, '\u015f': 389, '\u0160': 556, '\u0161': 389, '\u0162': 611, '\u0163': 278, '\u0164': 611, '\u0165': 366, '\u016a': 722, '\u016b': 556, '\u016e': 722, '\u016f': 556, '\u0170': 722, '\u0171': 556, '\u0172': 722, '\u0173': 556, '\u0178': 611, '\u0179': 611, '\u017a': 389, '\u017b': 611, '\u017c': 389, '\u017d': 611, '\u017e': 389, '\u0192': 500, '\u0218': 556, '\u0219': 389, '\u02c6': 333, '\u02c7': 333, '\u02d8': 333, '\u02d9': 333, '\u02da': 333, '\u02db': 333, '\u02dc': 333, '\u02dd': 333, '\u2013': 500, '\u2014': 1000, '\u2018': 333, '\u2019': 333, '\u201a': 333, '\u201c': 500, '\u201d': 500, '\u201e': 500, '\u2020': 500, '\u2021': 500, '\u2022': 350, '\u2026': 1000, '\u2030': 1000, '\u2039': 333, '\u203a': 333, '\u2044': 167, '\u2122': 1000, '\u2202': 494, '\u2206': 612, '\u2211': 600, '\u2212': 606, '\u221a': 549, '\u2260': 549, '\u2264': 549, '\u2265': 549, '\u25ca': 494, '\uf6c3': 250, '\ufb01': 556, '\ufb02': 556}),
|
||||||
'Times-Italic': ({'FontName': 'Times-Italic', 'Descent': -217.0, 'FontBBox': (-169.0, -217.0, 1010.0, 883.0), 'FontWeight': 'Medium', 'CapHeight': 653.0, 'FontFamily': 'Times', 'Flags': 0, 'XHeight': 441.0, 'ItalicAngle': -15.5, 'Ascent': 683.0}, {u' ': 250, u'!': 333, u'"': 420, u'#': 500, u'$': 500, u'%': 833, u'&': 778, u"'": 214, u'(': 333, u')': 333, u'*': 500, u'+': 675, u',': 250, u'-': 333, u'.': 250, u'/': 278, u'0': 500, u'1': 500, u'2': 500, u'3': 500, u'4': 500, u'5': 500, u'6': 500, u'7': 500, u'8': 500, u'9': 500, u':': 333, u';': 333, u'<': 675, u'=': 675, u'>': 675, u'?': 500, u'@': 920, u'A': 611, u'B': 611, u'C': 667, u'D': 722, u'E': 611, u'F': 611, u'G': 722, u'H': 722, u'I': 333, u'J': 444, u'K': 667, u'L': 556, u'M': 833, u'N': 667, u'O': 722, u'P': 611, u'Q': 722, u'R': 611, u'S': 500, u'T': 556, u'U': 722, u'V': 611, u'W': 833, u'X': 611, u'Y': 556, u'Z': 556, u'[': 389, u'\\': 278, u']': 389, u'^': 422, u'_': 500, u'`': 333, u'a': 500, u'b': 500, u'c': 444, u'd': 500, u'e': 444, u'f': 278, u'g': 500, u'h': 500, u'i': 278, u'j': 278, u'k': 444, u'l': 278, u'm': 722, u'n': 500, u'o': 500, u'p': 500, u'q': 500, u'r': 389, u's': 389, u't': 278, u'u': 500, u'v': 444, u'w': 667, u'x': 444, u'y': 444, u'z': 389, u'{': 400, u'|': 275, u'}': 400, u'~': 541, u'\xa1': 389, u'\xa2': 500, u'\xa3': 500, u'\xa4': 500, u'\xa5': 500, u'\xa6': 275, u'\xa7': 500, u'\xa8': 333, u'\xa9': 760, u'\xaa': 276, u'\xab': 500, u'\xac': 675, u'\xae': 760, u'\xaf': 333, u'\xb0': 400, u'\xb1': 675, u'\xb2': 300, u'\xb3': 300, u'\xb4': 333, u'\xb5': 500, u'\xb6': 523, u'\xb7': 250, u'\xb8': 333, u'\xb9': 300, u'\xba': 310, u'\xbb': 500, u'\xbc': 750, u'\xbd': 750, u'\xbe': 750, u'\xbf': 500, u'\xc0': 611, u'\xc1': 611, u'\xc2': 611, u'\xc3': 611, u'\xc4': 611, u'\xc5': 611, u'\xc6': 889, u'\xc7': 667, u'\xc8': 611, u'\xc9': 611, u'\xca': 611, u'\xcb': 611, u'\xcc': 333, u'\xcd': 333, u'\xce': 333, u'\xcf': 333, u'\xd0': 722, u'\xd1': 667, u'\xd2': 722, u'\xd3': 722, u'\xd4': 722, u'\xd5': 722, u'\xd6': 722, u'\xd7': 675, u'\xd8': 722, u'\xd9': 722, u'\xda': 722, u'\xdb': 722, u'\xdc': 722, u'\xdd': 556, u'\xde': 611, u'\xdf': 500, u'\xe0': 500, u'\xe1': 500, u'\xe2': 500, u'\xe3': 500, u'\xe4': 500, u'\xe5': 500, u'\xe6': 667, u'\xe7': 444, u'\xe8': 444, u'\xe9': 444, u'\xea': 444, u'\xeb': 444, u'\xec': 278, u'\xed': 278, u'\xee': 278, u'\xef': 278, u'\xf0': 500, u'\xf1': 500, u'\xf2': 500, u'\xf3': 500, u'\xf4': 500, u'\xf5': 500, u'\xf6': 500, u'\xf7': 675, u'\xf8': 500, u'\xf9': 500, u'\xfa': 500, u'\xfb': 500, u'\xfc': 500, u'\xfd': 444, u'\xfe': 500, u'\xff': 444, u'\u0100': 611, u'\u0101': 500, u'\u0102': 611, u'\u0103': 500, u'\u0104': 611, u'\u0105': 500, u'\u0106': 667, u'\u0107': 444, u'\u010c': 667, u'\u010d': 444, u'\u010e': 722, u'\u010f': 544, u'\u0110': 722, u'\u0111': 500, u'\u0112': 611, u'\u0113': 444, u'\u0116': 611, u'\u0117': 444, u'\u0118': 611, u'\u0119': 444, u'\u011a': 611, u'\u011b': 444, u'\u011e': 722, u'\u011f': 500, u'\u0122': 722, u'\u0123': 500, u'\u012a': 333, u'\u012b': 278, u'\u012e': 333, u'\u012f': 278, u'\u0130': 333, u'\u0131': 278, u'\u0136': 667, u'\u0137': 444, u'\u0139': 556, u'\u013a': 278, u'\u013b': 556, u'\u013c': 278, u'\u013d': 611, u'\u013e': 300, u'\u0141': 556, u'\u0142': 278, u'\u0143': 667, u'\u0144': 500, u'\u0145': 667, u'\u0146': 500, u'\u0147': 667, u'\u0148': 500, u'\u014c': 722, u'\u014d': 500, u'\u0150': 722, u'\u0151': 500, u'\u0152': 944, u'\u0153': 667, u'\u0154': 611, u'\u0155': 389, u'\u0156': 611, u'\u0157': 389, u'\u0158': 611, u'\u0159': 389, u'\u015a': 500, u'\u015b': 389, u'\u015e': 500, u'\u015f': 389, u'\u0160': 500, u'\u0161': 389, u'\u0162': 556, u'\u0163': 278, u'\u0164': 556, u'\u0165': 300, u'\u016a': 722, u'\u016b': 500, u'\u016e': 722, u'\u016f': 500, u'\u0170': 722, u'\u0171': 500, u'\u0172': 722, u'\u0173': 500, u'\u0178': 556, u'\u0179': 556, u'\u017a': 389, u'\u017b': 556, u'\u017c': 389, u'\u017d': 556, u'\u017e': 389, u'\u0192': 500, u'\u0218': 500, u'\u0219': 389, u'\u02c6': 333, u'\u02c7': 333, u'\u02d8': 333, u'\u02d9': 333, u'\u02da': 333, u'\u02db': 333, u'\u02dc': 333, u'\u02dd': 333, u'\u2013': 500, u'\u2014': 889, u'\u2018': 333, u'\u2019': 333, u'\u201a': 333, u'\u201c': 556, u'\u201d': 556, u'\u201e': 556, u'\u2020': 500, u'\u2021': 500, u'\u2022': 350, u'\u2026': 889, u'\u2030': 1000, u'\u2039': 333, u'\u203a': 333, u'\u2044': 167, u'\u2122': 980, u'\u2202': 476, u'\u2206': 612, u'\u2211': 600, u'\u2212': 675, u'\u221a': 453, u'\u2260': 549, u'\u2264': 549, u'\u2265': 549, u'\u25ca': 471, u'\uf6c3': 250, u'\ufb01': 500, u'\ufb02': 500}),
|
'Times-Italic': ({'FontName': 'Times-Italic', 'Descent': -217.0, 'FontBBox': (-169.0, -217.0, 1010.0, 883.0), 'FontWeight': 'Medium', 'CapHeight': 653.0, 'FontFamily': 'Times', 'Flags': 0, 'XHeight': 441.0, 'ItalicAngle': -15.5, 'Ascent': 683.0}, {' ': 250, '!': 333, '"': 420, '#': 500, '$': 500, '%': 833, '&': 778, "'": 214, '(': 333, ')': 333, '*': 500, '+': 675, ',': 250, '-': 333, '.': 250, '/': 278, '0': 500, '1': 500, '2': 500, '3': 500, '4': 500, '5': 500, '6': 500, '7': 500, '8': 500, '9': 500, ':': 333, ';': 333, '<': 675, '=': 675, '>': 675, '?': 500, '@': 920, 'A': 611, 'B': 611, 'C': 667, 'D': 722, 'E': 611, 'F': 611, 'G': 722, 'H': 722, 'I': 333, 'J': 444, 'K': 667, 'L': 556, 'M': 833, 'N': 667, 'O': 722, 'P': 611, 'Q': 722, 'R': 611, 'S': 500, 'T': 556, 'U': 722, 'V': 611, 'W': 833, 'X': 611, 'Y': 556, 'Z': 556, '[': 389, '\\': 278, ']': 389, '^': 422, '_': 500, '`': 333, 'a': 500, 'b': 500, 'c': 444, 'd': 500, 'e': 444, 'f': 278, 'g': 500, 'h': 500, 'i': 278, 'j': 278, 'k': 444, 'l': 278, 'm': 722, 'n': 500, 'o': 500, 'p': 500, 'q': 500, 'r': 389, 's': 389, 't': 278, 'u': 500, 'v': 444, 'w': 667, 'x': 444, 'y': 444, 'z': 389, '{': 400, '|': 275, '}': 400, '~': 541, '\xa1': 389, '\xa2': 500, '\xa3': 500, '\xa4': 500, '\xa5': 500, '\xa6': 275, '\xa7': 500, '\xa8': 333, '\xa9': 760, '\xaa': 276, '\xab': 500, '\xac': 675, '\xae': 760, '\xaf': 333, '\xb0': 400, '\xb1': 675, '\xb2': 300, '\xb3': 300, '\xb4': 333, '\xb5': 500, '\xb6': 523, '\xb7': 250, '\xb8': 333, '\xb9': 300, '\xba': 310, '\xbb': 500, '\xbc': 750, '\xbd': 750, '\xbe': 750, '\xbf': 500, '\xc0': 611, '\xc1': 611, '\xc2': 611, '\xc3': 611, '\xc4': 611, '\xc5': 611, '\xc6': 889, '\xc7': 667, '\xc8': 611, '\xc9': 611, '\xca': 611, '\xcb': 611, '\xcc': 333, '\xcd': 333, '\xce': 333, '\xcf': 333, '\xd0': 722, '\xd1': 667, '\xd2': 722, '\xd3': 722, '\xd4': 722, '\xd5': 722, '\xd6': 722, '\xd7': 675, '\xd8': 722, '\xd9': 722, '\xda': 722, '\xdb': 722, '\xdc': 722, '\xdd': 556, '\xde': 611, '\xdf': 500, '\xe0': 500, '\xe1': 500, '\xe2': 500, '\xe3': 500, '\xe4': 500, '\xe5': 500, '\xe6': 667, '\xe7': 444, '\xe8': 444, '\xe9': 444, '\xea': 444, '\xeb': 444, '\xec': 278, '\xed': 278, '\xee': 278, '\xef': 278, '\xf0': 500, '\xf1': 500, '\xf2': 500, '\xf3': 500, '\xf4': 500, '\xf5': 500, '\xf6': 500, '\xf7': 675, '\xf8': 500, '\xf9': 500, '\xfa': 500, '\xfb': 500, '\xfc': 500, '\xfd': 444, '\xfe': 500, '\xff': 444, '\u0100': 611, '\u0101': 500, '\u0102': 611, '\u0103': 500, '\u0104': 611, '\u0105': 500, '\u0106': 667, '\u0107': 444, '\u010c': 667, '\u010d': 444, '\u010e': 722, '\u010f': 544, '\u0110': 722, '\u0111': 500, '\u0112': 611, '\u0113': 444, '\u0116': 611, '\u0117': 444, '\u0118': 611, '\u0119': 444, '\u011a': 611, '\u011b': 444, '\u011e': 722, '\u011f': 500, '\u0122': 722, '\u0123': 500, '\u012a': 333, '\u012b': 278, '\u012e': 333, '\u012f': 278, '\u0130': 333, '\u0131': 278, '\u0136': 667, '\u0137': 444, '\u0139': 556, '\u013a': 278, '\u013b': 556, '\u013c': 278, '\u013d': 611, '\u013e': 300, '\u0141': 556, '\u0142': 278, '\u0143': 667, '\u0144': 500, '\u0145': 667, '\u0146': 500, '\u0147': 667, '\u0148': 500, '\u014c': 722, '\u014d': 500, '\u0150': 722, '\u0151': 500, '\u0152': 944, '\u0153': 667, '\u0154': 611, '\u0155': 389, '\u0156': 611, '\u0157': 389, '\u0158': 611, '\u0159': 389, '\u015a': 500, '\u015b': 389, '\u015e': 500, '\u015f': 389, '\u0160': 500, '\u0161': 389, '\u0162': 556, '\u0163': 278, '\u0164': 556, '\u0165': 300, '\u016a': 722, '\u016b': 500, '\u016e': 722, '\u016f': 500, '\u0170': 722, '\u0171': 500, '\u0172': 722, '\u0173': 500, '\u0178': 556, '\u0179': 556, '\u017a': 389, '\u017b': 556, '\u017c': 389, '\u017d': 556, '\u017e': 389, '\u0192': 500, '\u0218': 500, '\u0219': 389, '\u02c6': 333, '\u02c7': 333, '\u02d8': 333, '\u02d9': 333, '\u02da': 333, '\u02db': 333, '\u02dc': 333, '\u02dd': 333, '\u2013': 500, '\u2014': 889, '\u2018': 333, '\u2019': 333, '\u201a': 333, '\u201c': 556, '\u201d': 556, '\u201e': 556, '\u2020': 500, '\u2021': 500, '\u2022': 350, '\u2026': 889, '\u2030': 1000, '\u2039': 333, '\u203a': 333, '\u2044': 167, '\u2122': 980, '\u2202': 476, '\u2206': 612, '\u2211': 600, '\u2212': 675, '\u221a': 453, '\u2260': 549, '\u2264': 549, '\u2265': 549, '\u25ca': 471, '\uf6c3': 250, '\ufb01': 500, '\ufb02': 500}),
|
||||||
'Times-Roman': ({'FontName': 'Times-Roman', 'Descent': -217.0, 'FontBBox': (-168.0, -218.0, 1000.0, 898.0), 'FontWeight': 'Roman', 'CapHeight': 662.0, 'FontFamily': 'Times', 'Flags': 0, 'XHeight': 450.0, 'ItalicAngle': 0.0, 'Ascent': 683.0}, {u' ': 250, u'!': 333, u'"': 408, u'#': 500, u'$': 500, u'%': 833, u'&': 778, u"'": 180, u'(': 333, u')': 333, u'*': 500, u'+': 564, u',': 250, u'-': 333, u'.': 250, u'/': 278, u'0': 500, u'1': 500, u'2': 500, u'3': 500, u'4': 500, u'5': 500, u'6': 500, u'7': 500, u'8': 500, u'9': 500, u':': 278, u';': 278, u'<': 564, u'=': 564, u'>': 564, u'?': 444, u'@': 921, u'A': 722, u'B': 667, u'C': 667, u'D': 722, u'E': 611, u'F': 556, u'G': 722, u'H': 722, u'I': 333, u'J': 389, u'K': 722, u'L': 611, u'M': 889, u'N': 722, u'O': 722, u'P': 556, u'Q': 722, u'R': 667, u'S': 556, u'T': 611, u'U': 722, u'V': 722, u'W': 944, u'X': 722, u'Y': 722, u'Z': 611, u'[': 333, u'\\': 278, u']': 333, u'^': 469, u'_': 500, u'`': 333, u'a': 444, u'b': 500, u'c': 444, u'd': 500, u'e': 444, u'f': 333, u'g': 500, u'h': 500, u'i': 278, u'j': 278, u'k': 500, u'l': 278, u'm': 778, u'n': 500, u'o': 500, u'p': 500, u'q': 500, u'r': 333, u's': 389, u't': 278, u'u': 500, u'v': 500, u'w': 722, u'x': 500, u'y': 500, u'z': 444, u'{': 480, u'|': 200, u'}': 480, u'~': 541, u'\xa1': 333, u'\xa2': 500, u'\xa3': 500, u'\xa4': 500, u'\xa5': 500, u'\xa6': 200, u'\xa7': 500, u'\xa8': 333, u'\xa9': 760, u'\xaa': 276, u'\xab': 500, u'\xac': 564, u'\xae': 760, u'\xaf': 333, u'\xb0': 400, u'\xb1': 564, u'\xb2': 300, u'\xb3': 300, u'\xb4': 333, u'\xb5': 500, u'\xb6': 453, u'\xb7': 250, u'\xb8': 333, u'\xb9': 300, u'\xba': 310, u'\xbb': 500, u'\xbc': 750, u'\xbd': 750, u'\xbe': 750, u'\xbf': 444, u'\xc0': 722, u'\xc1': 722, u'\xc2': 722, u'\xc3': 722, u'\xc4': 722, u'\xc5': 722, u'\xc6': 889, u'\xc7': 667, u'\xc8': 611, u'\xc9': 611, u'\xca': 611, u'\xcb': 611, u'\xcc': 333, u'\xcd': 333, u'\xce': 333, u'\xcf': 333, u'\xd0': 722, u'\xd1': 722, u'\xd2': 722, u'\xd3': 722, u'\xd4': 722, u'\xd5': 722, u'\xd6': 722, u'\xd7': 564, u'\xd8': 722, u'\xd9': 722, u'\xda': 722, u'\xdb': 722, u'\xdc': 722, u'\xdd': 722, u'\xde': 556, u'\xdf': 500, u'\xe0': 444, u'\xe1': 444, u'\xe2': 444, u'\xe3': 444, u'\xe4': 444, u'\xe5': 444, u'\xe6': 667, u'\xe7': 444, u'\xe8': 444, u'\xe9': 444, u'\xea': 444, u'\xeb': 444, u'\xec': 278, u'\xed': 278, u'\xee': 278, u'\xef': 278, u'\xf0': 500, u'\xf1': 500, u'\xf2': 500, u'\xf3': 500, u'\xf4': 500, u'\xf5': 500, u'\xf6': 500, u'\xf7': 564, u'\xf8': 500, u'\xf9': 500, u'\xfa': 500, u'\xfb': 500, u'\xfc': 500, u'\xfd': 500, u'\xfe': 500, u'\xff': 500, u'\u0100': 722, u'\u0101': 444, u'\u0102': 722, u'\u0103': 444, u'\u0104': 722, u'\u0105': 444, u'\u0106': 667, u'\u0107': 444, u'\u010c': 667, u'\u010d': 444, u'\u010e': 722, u'\u010f': 588, u'\u0110': 722, u'\u0111': 500, u'\u0112': 611, u'\u0113': 444, u'\u0116': 611, u'\u0117': 444, u'\u0118': 611, u'\u0119': 444, u'\u011a': 611, u'\u011b': 444, u'\u011e': 722, u'\u011f': 500, u'\u0122': 722, u'\u0123': 500, u'\u012a': 333, u'\u012b': 278, u'\u012e': 333, u'\u012f': 278, u'\u0130': 333, u'\u0131': 278, u'\u0136': 722, u'\u0137': 500, u'\u0139': 611, u'\u013a': 278, u'\u013b': 611, u'\u013c': 278, u'\u013d': 611, u'\u013e': 344, u'\u0141': 611, u'\u0142': 278, u'\u0143': 722, u'\u0144': 500, u'\u0145': 722, u'\u0146': 500, u'\u0147': 722, u'\u0148': 500, u'\u014c': 722, u'\u014d': 500, u'\u0150': 722, u'\u0151': 500, u'\u0152': 889, u'\u0153': 722, u'\u0154': 667, u'\u0155': 333, u'\u0156': 667, u'\u0157': 333, u'\u0158': 667, u'\u0159': 333, u'\u015a': 556, u'\u015b': 389, u'\u015e': 556, u'\u015f': 389, u'\u0160': 556, u'\u0161': 389, u'\u0162': 611, u'\u0163': 278, u'\u0164': 611, u'\u0165': 326, u'\u016a': 722, u'\u016b': 500, u'\u016e': 722, u'\u016f': 500, u'\u0170': 722, u'\u0171': 500, u'\u0172': 722, u'\u0173': 500, u'\u0178': 722, u'\u0179': 611, u'\u017a': 444, u'\u017b': 611, u'\u017c': 444, u'\u017d': 611, u'\u017e': 444, u'\u0192': 500, u'\u0218': 556, u'\u0219': 389, u'\u02c6': 333, u'\u02c7': 333, u'\u02d8': 333, u'\u02d9': 333, u'\u02da': 333, u'\u02db': 333, u'\u02dc': 333, u'\u02dd': 333, u'\u2013': 500, u'\u2014': 1000, u'\u2018': 333, u'\u2019': 333, u'\u201a': 333, u'\u201c': 444, u'\u201d': 444, u'\u201e': 444, u'\u2020': 500, u'\u2021': 500, u'\u2022': 350, u'\u2026': 1000, u'\u2030': 1000, u'\u2039': 333, u'\u203a': 333, u'\u2044': 167, u'\u2122': 980, u'\u2202': 476, u'\u2206': 612, u'\u2211': 600, u'\u2212': 564, u'\u221a': 453, u'\u2260': 549, u'\u2264': 549, u'\u2265': 549, u'\u25ca': 471, u'\uf6c3': 250, u'\ufb01': 556, u'\ufb02': 556}),
|
'Times-Roman': ({'FontName': 'Times-Roman', 'Descent': -217.0, 'FontBBox': (-168.0, -218.0, 1000.0, 898.0), 'FontWeight': 'Roman', 'CapHeight': 662.0, 'FontFamily': 'Times', 'Flags': 0, 'XHeight': 450.0, 'ItalicAngle': 0.0, 'Ascent': 683.0}, {' ': 250, '!': 333, '"': 408, '#': 500, '$': 500, '%': 833, '&': 778, "'": 180, '(': 333, ')': 333, '*': 500, '+': 564, ',': 250, '-': 333, '.': 250, '/': 278, '0': 500, '1': 500, '2': 500, '3': 500, '4': 500, '5': 500, '6': 500, '7': 500, '8': 500, '9': 500, ':': 278, ';': 278, '<': 564, '=': 564, '>': 564, '?': 444, '@': 921, 'A': 722, 'B': 667, 'C': 667, 'D': 722, 'E': 611, 'F': 556, 'G': 722, 'H': 722, 'I': 333, 'J': 389, 'K': 722, 'L': 611, 'M': 889, 'N': 722, 'O': 722, 'P': 556, 'Q': 722, 'R': 667, 'S': 556, 'T': 611, 'U': 722, 'V': 722, 'W': 944, 'X': 722, 'Y': 722, 'Z': 611, '[': 333, '\\': 278, ']': 333, '^': 469, '_': 500, '`': 333, 'a': 444, 'b': 500, 'c': 444, 'd': 500, 'e': 444, 'f': 333, 'g': 500, 'h': 500, 'i': 278, 'j': 278, 'k': 500, 'l': 278, 'm': 778, 'n': 500, 'o': 500, 'p': 500, 'q': 500, 'r': 333, 's': 389, 't': 278, 'u': 500, 'v': 500, 'w': 722, 'x': 500, 'y': 500, 'z': 444, '{': 480, '|': 200, '}': 480, '~': 541, '\xa1': 333, '\xa2': 500, '\xa3': 500, '\xa4': 500, '\xa5': 500, '\xa6': 200, '\xa7': 500, '\xa8': 333, '\xa9': 760, '\xaa': 276, '\xab': 500, '\xac': 564, '\xae': 760, '\xaf': 333, '\xb0': 400, '\xb1': 564, '\xb2': 300, '\xb3': 300, '\xb4': 333, '\xb5': 500, '\xb6': 453, '\xb7': 250, '\xb8': 333, '\xb9': 300, '\xba': 310, '\xbb': 500, '\xbc': 750, '\xbd': 750, '\xbe': 750, '\xbf': 444, '\xc0': 722, '\xc1': 722, '\xc2': 722, '\xc3': 722, '\xc4': 722, '\xc5': 722, '\xc6': 889, '\xc7': 667, '\xc8': 611, '\xc9': 611, '\xca': 611, '\xcb': 611, '\xcc': 333, '\xcd': 333, '\xce': 333, '\xcf': 333, '\xd0': 722, '\xd1': 722, '\xd2': 722, '\xd3': 722, '\xd4': 722, '\xd5': 722, '\xd6': 722, '\xd7': 564, '\xd8': 722, '\xd9': 722, '\xda': 722, '\xdb': 722, '\xdc': 722, '\xdd': 722, '\xde': 556, '\xdf': 500, '\xe0': 444, '\xe1': 444, '\xe2': 444, '\xe3': 444, '\xe4': 444, '\xe5': 444, '\xe6': 667, '\xe7': 444, '\xe8': 444, '\xe9': 444, '\xea': 444, '\xeb': 444, '\xec': 278, '\xed': 278, '\xee': 278, '\xef': 278, '\xf0': 500, '\xf1': 500, '\xf2': 500, '\xf3': 500, '\xf4': 500, '\xf5': 500, '\xf6': 500, '\xf7': 564, '\xf8': 500, '\xf9': 500, '\xfa': 500, '\xfb': 500, '\xfc': 500, '\xfd': 500, '\xfe': 500, '\xff': 500, '\u0100': 722, '\u0101': 444, '\u0102': 722, '\u0103': 444, '\u0104': 722, '\u0105': 444, '\u0106': 667, '\u0107': 444, '\u010c': 667, '\u010d': 444, '\u010e': 722, '\u010f': 588, '\u0110': 722, '\u0111': 500, '\u0112': 611, '\u0113': 444, '\u0116': 611, '\u0117': 444, '\u0118': 611, '\u0119': 444, '\u011a': 611, '\u011b': 444, '\u011e': 722, '\u011f': 500, '\u0122': 722, '\u0123': 500, '\u012a': 333, '\u012b': 278, '\u012e': 333, '\u012f': 278, '\u0130': 333, '\u0131': 278, '\u0136': 722, '\u0137': 500, '\u0139': 611, '\u013a': 278, '\u013b': 611, '\u013c': 278, '\u013d': 611, '\u013e': 344, '\u0141': 611, '\u0142': 278, '\u0143': 722, '\u0144': 500, '\u0145': 722, '\u0146': 500, '\u0147': 722, '\u0148': 500, '\u014c': 722, '\u014d': 500, '\u0150': 722, '\u0151': 500, '\u0152': 889, '\u0153': 722, '\u0154': 667, '\u0155': 333, '\u0156': 667, '\u0157': 333, '\u0158': 667, '\u0159': 333, '\u015a': 556, '\u015b': 389, '\u015e': 556, '\u015f': 389, '\u0160': 556, '\u0161': 389, '\u0162': 611, '\u0163': 278, '\u0164': 611, '\u0165': 326, '\u016a': 722, '\u016b': 500, '\u016e': 722, '\u016f': 500, '\u0170': 722, '\u0171': 500, '\u0172': 722, '\u0173': 500, '\u0178': 722, '\u0179': 611, '\u017a': 444, '\u017b': 611, '\u017c': 444, '\u017d': 611, '\u017e': 444, '\u0192': 500, '\u0218': 556, '\u0219': 389, '\u02c6': 333, '\u02c7': 333, '\u02d8': 333, '\u02d9': 333, '\u02da': 333, '\u02db': 333, '\u02dc': 333, '\u02dd': 333, '\u2013': 500, '\u2014': 1000, '\u2018': 333, '\u2019': 333, '\u201a': 333, '\u201c': 444, '\u201d': 444, '\u201e': 444, '\u2020': 500, '\u2021': 500, '\u2022': 350, '\u2026': 1000, '\u2030': 1000, '\u2039': 333, '\u203a': 333, '\u2044': 167, '\u2122': 980, '\u2202': 476, '\u2206': 612, '\u2211': 600, '\u2212': 564, '\u221a': 453, '\u2260': 549, '\u2264': 549, '\u2265': 549, '\u25ca': 471, '\uf6c3': 250, '\ufb01': 556, '\ufb02': 556}),
|
||||||
'ZapfDingbats': ({'FontName': 'ZapfDingbats', 'FontBBox': (-1.0, -143.0, 981.0, 820.0), 'FontWeight': 'Medium', 'FontFamily': 'ITC', 'Flags': 0, 'ItalicAngle': 0.0}, {u'\x01': 974, u'\x02': 961, u'\x03': 980, u'\x04': 719, u'\x05': 789, u'\x06': 494, u'\x07': 552, u'\x08': 537, u'\t': 577, u'\n': 692, u'\x0b': 960, u'\x0c': 939, u'\r': 549, u'\x0e': 855, u'\x0f': 911, u'\x10': 933, u'\x11': 945, u'\x12': 974, u'\x13': 755, u'\x14': 846, u'\x15': 762, u'\x16': 761, u'\x17': 571, u'\x18': 677, u'\x19': 763, u'\x1a': 760, u'\x1b': 759, u'\x1c': 754, u'\x1d': 786, u'\x1e': 788, u'\x1f': 788, u' ': 790, u'!': 793, u'"': 794, u'#': 816, u'$': 823, u'%': 789, u'&': 841, u"'": 823, u'(': 833, u')': 816, u'*': 831, u'+': 923, u',': 744, u'-': 723, u'.': 749, u'/': 790, u'0': 792, u'1': 695, u'2': 776, u'3': 768, u'4': 792, u'5': 759, u'6': 707, u'7': 708, u'8': 682, u'9': 701, u':': 826, u';': 815, u'<': 789, u'=': 789, u'>': 707, u'?': 687, u'@': 696, u'A': 689, u'B': 786, u'C': 787, u'D': 713, u'E': 791, u'F': 785, u'G': 791, u'H': 873, u'I': 761, u'J': 762, u'K': 759, u'L': 892, u'M': 892, u'N': 788, u'O': 784, u'Q': 438, u'R': 138, u'S': 277, u'T': 415, u'U': 509, u'V': 410, u'W': 234, u'X': 234, u'Y': 390, u'Z': 390, u'[': 276, u'\\': 276, u']': 317, u'^': 317, u'_': 334, u'`': 334, u'a': 392, u'b': 392, u'c': 668, u'd': 668, u'e': 732, u'f': 544, u'g': 544, u'h': 910, u'i': 911, u'j': 667, u'k': 760, u'l': 760, u'm': 626, u'n': 694, u'o': 595, u'p': 776, u'u': 690, u'v': 791, u'w': 790, u'x': 788, u'y': 788, u'z': 788, u'{': 788, u'|': 788, u'}': 788, u'~': 788, u'\x7f': 788, u'\x80': 788, u'\x81': 788, u'\x82': 788, u'\x83': 788, u'\x84': 788, u'\x85': 788, u'\x86': 788, u'\x87': 788, u'\x88': 788, u'\x89': 788, u'\x8a': 788, u'\x8b': 788, u'\x8c': 788, u'\x8d': 788, u'\x8e': 788, u'\x8f': 788, u'\x90': 788, u'\x91': 788, u'\x92': 788, u'\x93': 788, u'\x94': 788, u'\x95': 788, u'\x96': 788, u'\x97': 788, u'\x98': 788, u'\x99': 788, u'\x9a': 788, u'\x9b': 788, u'\x9c': 788, u'\x9d': 788, u'\x9e': 788, u'\x9f': 788, u'\xa0': 894, u'\xa1': 838, u'\xa2': 924, u'\xa3': 1016, u'\xa4': 458, u'\xa5': 924, u'\xa6': 918, u'\xa7': 927, u'\xa8': 928, u'\xa9': 928, u'\xaa': 834, u'\xab': 873, u'\xac': 828, u'\xad': 924, u'\xae': 917, u'\xaf': 930, u'\xb0': 931, u'\xb1': 463, u'\xb2': 883, u'\xb3': 836, u'\xb4': 867, u'\xb5': 696, u'\xb6': 874, u'\xb7': 760, u'\xb8': 946, u'\xb9': 865, u'\xba': 967, u'\xbb': 831, u'\xbc': 873, u'\xbd': 927, u'\xbe': 970, u'\xbf': 918, u'\xc0': 748, u'\xc1': 836, u'\xc2': 771, u'\xc3': 888, u'\xc4': 748, u'\xc5': 771, u'\xc6': 888, u'\xc7': 867, u'\xc8': 696, u'\xc9': 874, u'\xca': 974, u'\xcb': 762, u'\xcc': 759, u'\xcd': 509, u'\xce': 410}),
|
'ZapfDingbats': ({'FontName': 'ZapfDingbats', 'FontBBox': (-1.0, -143.0, 981.0, 820.0), 'FontWeight': 'Medium', 'FontFamily': 'ITC', 'Flags': 0, 'ItalicAngle': 0.0}, {'\x01': 974, '\x02': 961, '\x03': 980, '\x04': 719, '\x05': 789, '\x06': 494, '\x07': 552, '\x08': 537, '\t': 577, '\n': 692, '\x0b': 960, '\x0c': 939, '\r': 549, '\x0e': 855, '\x0f': 911, '\x10': 933, '\x11': 945, '\x12': 974, '\x13': 755, '\x14': 846, '\x15': 762, '\x16': 761, '\x17': 571, '\x18': 677, '\x19': 763, '\x1a': 760, '\x1b': 759, '\x1c': 754, '\x1d': 786, '\x1e': 788, '\x1f': 788, ' ': 790, '!': 793, '"': 794, '#': 816, '$': 823, '%': 789, '&': 841, "'": 823, '(': 833, ')': 816, '*': 831, '+': 923, ',': 744, '-': 723, '.': 749, '/': 790, '0': 792, '1': 695, '2': 776, '3': 768, '4': 792, '5': 759, '6': 707, '7': 708, '8': 682, '9': 701, ':': 826, ';': 815, '<': 789, '=': 789, '>': 707, '?': 687, '@': 696, 'A': 689, 'B': 786, 'C': 787, 'D': 713, 'E': 791, 'F': 785, 'G': 791, 'H': 873, 'I': 761, 'J': 762, 'K': 759, 'L': 892, 'M': 892, 'N': 788, 'O': 784, 'Q': 438, 'R': 138, 'S': 277, 'T': 415, 'U': 509, 'V': 410, 'W': 234, 'X': 234, 'Y': 390, 'Z': 390, '[': 276, '\\': 276, ']': 317, '^': 317, '_': 334, '`': 334, 'a': 392, 'b': 392, 'c': 668, 'd': 668, 'e': 732, 'f': 544, 'g': 544, 'h': 910, 'i': 911, 'j': 667, 'k': 760, 'l': 760, 'm': 626, 'n': 694, 'o': 595, 'p': 776, 'u': 690, 'v': 791, 'w': 790, 'x': 788, 'y': 788, 'z': 788, '{': 788, '|': 788, '}': 788, '~': 788, '\x7f': 788, '\x80': 788, '\x81': 788, '\x82': 788, '\x83': 788, '\x84': 788, '\x85': 788, '\x86': 788, '\x87': 788, '\x88': 788, '\x89': 788, '\x8a': 788, '\x8b': 788, '\x8c': 788, '\x8d': 788, '\x8e': 788, '\x8f': 788, '\x90': 788, '\x91': 788, '\x92': 788, '\x93': 788, '\x94': 788, '\x95': 788, '\x96': 788, '\x97': 788, '\x98': 788, '\x99': 788, '\x9a': 788, '\x9b': 788, '\x9c': 788, '\x9d': 788, '\x9e': 788, '\x9f': 788, '\xa0': 894, '\xa1': 838, '\xa2': 924, '\xa3': 1016, '\xa4': 458, '\xa5': 924, '\xa6': 918, '\xa7': 927, '\xa8': 928, '\xa9': 928, '\xaa': 834, '\xab': 873, '\xac': 828, '\xad': 924, '\xae': 917, '\xaf': 930, '\xb0': 931, '\xb1': 463, '\xb2': 883, '\xb3': 836, '\xb4': 867, '\xb5': 696, '\xb6': 874, '\xb7': 760, '\xb8': 946, '\xb9': 865, '\xba': 967, '\xbb': 831, '\xbc': 873, '\xbd': 927, '\xbe': 970, '\xbf': 918, '\xc0': 748, '\xc1': 836, '\xc2': 771, '\xc3': 888, '\xc4': 748, '\xc5': 771, '\xc6': 888, '\xc7': 867, '\xc8': 696, '\xc9': 874, '\xca': 974, '\xcb': 762, '\xcc': 759, '\xcd': 509, '\xce': 410}),
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,9 +1,7 @@
|
||||||
"""Functions that can be used for the most common use-cases for pdfminer.six"""
|
"""Functions that can be used for the most common use-cases for pdfminer.six"""
|
||||||
|
|
||||||
import logging
|
|
||||||
import sys
|
import sys
|
||||||
|
import logging
|
||||||
import six
|
|
||||||
|
|
||||||
from .pdfinterp import PDFResourceManager, PDFPageInterpreter
|
from .pdfinterp import PDFResourceManager, PDFPageInterpreter
|
||||||
from .pdfdevice import TagExtractor
|
from .pdfdevice import TagExtractor
|
||||||
|
@ -11,12 +9,7 @@ from .pdfpage import PDFPage
|
||||||
from .converter import XMLConverter, HTMLConverter, TextConverter
|
from .converter import XMLConverter, HTMLConverter, TextConverter
|
||||||
from .image import ImageWriter
|
from .image import ImageWriter
|
||||||
from .layout import LAParams
|
from .layout import LAParams
|
||||||
|
|
||||||
# Conditional import because python 2 is stupid
|
|
||||||
if sys.version_info > (3, 0):
|
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
else:
|
|
||||||
from io import BytesIO as StringIO
|
|
||||||
|
|
||||||
|
|
||||||
def extract_text_to_fp(inf, outfp, output_type='text', codec='utf-8',
|
def extract_text_to_fp(inf, outfp, output_type='text', codec='utf-8',
|
||||||
|
@ -53,19 +46,9 @@ def extract_text_to_fp(inf, outfp, output_type='text', codec='utf-8',
|
||||||
:return: nothing, acting as it does on two streams. Use StringIO to get
|
:return: nothing, acting as it does on two streams. Use StringIO to get
|
||||||
strings.
|
strings.
|
||||||
"""
|
"""
|
||||||
if '_py2_no_more_posargs' in kwargs is not None:
|
|
||||||
raise DeprecationWarning(
|
|
||||||
'The `_py2_no_more_posargs will be removed on January, 2020. At '
|
|
||||||
'that moment pdfminer.six will stop supporting Python 2. Please '
|
|
||||||
'upgrade to Python 3. For more information see '
|
|
||||||
'https://github.com/pdfminer/pdfminer .six/issues/194')
|
|
||||||
|
|
||||||
if debug:
|
if debug:
|
||||||
logging.getLogger().setLevel(logging.DEBUG)
|
logging.getLogger().setLevel(logging.DEBUG)
|
||||||
|
|
||||||
if six.PY2 and sys.stdin.encoding:
|
|
||||||
password = password.decode(sys.stdin.encoding)
|
|
||||||
|
|
||||||
imagewriter = None
|
imagewriter = None
|
||||||
if output_dir:
|
if output_dir:
|
||||||
imagewriter = ImageWriter(output_dir)
|
imagewriter = ImageWriter(output_dir)
|
||||||
|
@ -76,7 +59,7 @@ def extract_text_to_fp(inf, outfp, output_type='text', codec='utf-8',
|
||||||
device = TextConverter(rsrcmgr, outfp, codec=codec, laparams=laparams,
|
device = TextConverter(rsrcmgr, outfp, codec=codec, laparams=laparams,
|
||||||
imagewriter=imagewriter)
|
imagewriter=imagewriter)
|
||||||
|
|
||||||
if six.PY3 and outfp == sys.stdout:
|
if outfp == sys.stdout:
|
||||||
outfp = sys.stdout.buffer
|
outfp = sys.stdout.buffer
|
||||||
|
|
||||||
if output_type == 'xml':
|
if output_type == 'xml':
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
import struct
|
import struct
|
||||||
|
@ -15,8 +14,7 @@ def align32(x):
|
||||||
return ((x+3)//4)*4
|
return ((x+3)//4)*4
|
||||||
|
|
||||||
|
|
||||||
class BMPWriter(object):
|
class BMPWriter:
|
||||||
|
|
||||||
def __init__(self, fp, bits, width, height):
|
def __init__(self, fp, bits, width, height):
|
||||||
self.fp = fp
|
self.fp = fp
|
||||||
self.bits = bits
|
self.bits = bits
|
||||||
|
@ -59,7 +57,7 @@ class BMPWriter(object):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class ImageWriter(object):
|
class ImageWriter:
|
||||||
"""Write image to a file
|
"""Write image to a file
|
||||||
|
|
||||||
Supports various image types: JPEG, JBIG2 and bitmaps
|
Supports various image types: JPEG, JBIG2 and bitmaps
|
||||||
|
|
|
@ -58,7 +58,7 @@ def mask_value(mask, value):
|
||||||
raise Exception("Invalid mask or value")
|
raise Exception("Invalid mask or value")
|
||||||
|
|
||||||
|
|
||||||
class JBIG2StreamReader(object):
|
class JBIG2StreamReader:
|
||||||
"""Read segments from a JBIG2 byte stream"""
|
"""Read segments from a JBIG2 byte stream"""
|
||||||
|
|
||||||
def __init__(self, stream):
|
def __init__(self, stream):
|
||||||
|
@ -160,7 +160,7 @@ class JBIG2StreamReader(object):
|
||||||
return length
|
return length
|
||||||
|
|
||||||
|
|
||||||
class JBIG2StreamWriter(object):
|
class JBIG2StreamWriter:
|
||||||
"""Write JBIG2 segments to a file in JBIG2 format"""
|
"""Write JBIG2 segments to a file in JBIG2 format"""
|
||||||
|
|
||||||
def __init__(self, stream):
|
def __init__(self, stream):
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
""" Standard encoding tables used in PDF.
|
""" Standard encoding tables used in PDF.
|
||||||
|
|
||||||
This table is extracted from PDF Reference Manual 1.6, pp.925
|
This table is extracted from PDF Reference Manual 1.6, pp.925
|
||||||
|
|
|
@ -13,7 +13,7 @@ from .utils import uniq
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class IndexAssigner(object):
|
class IndexAssigner:
|
||||||
|
|
||||||
def __init__(self, index=0):
|
def __init__(self, index=0):
|
||||||
self.index = index
|
self.index = index
|
||||||
|
@ -29,7 +29,7 @@ class IndexAssigner(object):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class LAParams(object):
|
class LAParams:
|
||||||
"""Parameters for layout analysis
|
"""Parameters for layout analysis
|
||||||
|
|
||||||
:param line_overlap: If two characters have more overlap than this they
|
:param line_overlap: If two characters have more overlap than this they
|
||||||
|
@ -81,7 +81,7 @@ class LAParams(object):
|
||||||
self.all_texts)
|
self.all_texts)
|
||||||
|
|
||||||
|
|
||||||
class LTItem(object):
|
class LTItem:
|
||||||
"""Interface for things that can be analyzed"""
|
"""Interface for things that can be analyzed"""
|
||||||
|
|
||||||
def analyze(self, laparams):
|
def analyze(self, laparams):
|
||||||
|
@ -89,7 +89,7 @@ class LTItem(object):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class LTText(object):
|
class LTText:
|
||||||
"""Interface for things that have text"""
|
"""Interface for things that have text"""
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
|
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
import six
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,7 +9,7 @@ class CorruptDataError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class LZWDecoder(object):
|
class LZWDecoder:
|
||||||
|
|
||||||
def __init__(self, fp):
|
def __init__(self, fp):
|
||||||
self.fp = fp
|
self.fp = fp
|
||||||
|
@ -50,7 +48,7 @@ class LZWDecoder(object):
|
||||||
def feed(self, code):
|
def feed(self, code):
|
||||||
x = b''
|
x = b''
|
||||||
if code == 256:
|
if code == 256:
|
||||||
self.table = [six.int2byte(c) for c in range(256)] # 0-255
|
self.table = [bytes((c,)) for c in range(256)] # 0-255
|
||||||
self.table.append(None) # 256
|
self.table.append(None) # 256
|
||||||
self.table.append(None) # 257
|
self.table.append(None) # 257
|
||||||
self.prevbuf = b''
|
self.prevbuf = b''
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
import collections
|
import collections
|
||||||
from .psparser import LIT
|
from .psparser import LIT
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
|
|
||||||
LITERAL_DEVICE_GRAY = LIT('DeviceGray')
|
LITERAL_DEVICE_GRAY = LIT('DeviceGray')
|
||||||
LITERAL_DEVICE_RGB = LIT('DeviceRGB')
|
LITERAL_DEVICE_RGB = LIT('DeviceRGB')
|
||||||
LITERAL_DEVICE_CMYK = LIT('DeviceCMYK')
|
LITERAL_DEVICE_CMYK = LIT('DeviceCMYK')
|
||||||
|
|
||||||
|
|
||||||
class PDFColorSpace(object):
|
class PDFColorSpace:
|
||||||
|
|
||||||
def __init__(self, name, ncomponents):
|
def __init__(self, name, ncomponents):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
@ -21,9 +19,6 @@ class PDFColorSpace(object):
|
||||||
(self.name, self.ncomponents)
|
(self.name, self.ncomponents)
|
||||||
|
|
||||||
|
|
||||||
if six.PY2:
|
|
||||||
PREDEFINED_COLORSPACE = {}
|
|
||||||
else:
|
|
||||||
PREDEFINED_COLORSPACE = collections.OrderedDict()
|
PREDEFINED_COLORSPACE = collections.OrderedDict()
|
||||||
|
|
||||||
for (name, n) in [
|
for (name, n) in [
|
||||||
|
|
|
@ -1,12 +1,8 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
from . import utils
|
from . import utils
|
||||||
from .pdffont import PDFUnicodeNotDefined
|
from .pdffont import PDFUnicodeNotDefined
|
||||||
|
|
||||||
|
|
||||||
class PDFDevice(object):
|
class PDFDevice:
|
||||||
"""Translate the output of PDFPageInterpreter to the output that is needed
|
"""Translate the output of PDFPageInterpreter to the output that is needed
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -148,9 +144,9 @@ class TagExtractor(PDFDevice):
|
||||||
font = textstate.font
|
font = textstate.font
|
||||||
text = ''
|
text = ''
|
||||||
for obj in seq:
|
for obj in seq:
|
||||||
if isinstance(obj, six.text_type):
|
if isinstance(obj, str):
|
||||||
obj = utils.make_compat_bytes(obj)
|
obj = utils.make_compat_bytes(obj)
|
||||||
if not isinstance(obj, six.binary_type):
|
if not isinstance(obj, bytes):
|
||||||
continue
|
continue
|
||||||
chars = font.decode(obj)
|
chars = font.decode(obj)
|
||||||
for cid in chars:
|
for cid in chars:
|
||||||
|
@ -177,9 +173,9 @@ class TagExtractor(PDFDevice):
|
||||||
def begin_tag(self, tag, props=None):
|
def begin_tag(self, tag, props=None):
|
||||||
s = ''
|
s = ''
|
||||||
if isinstance(props, dict):
|
if isinstance(props, dict):
|
||||||
s = ''.join(' %s="%s"' % (utils.enc(k), utils.enc(str(v)))
|
s = ''.join(' {}="{}"'.format(utils.enc(k), utils.enc(str(v)))
|
||||||
for (k, v) in sorted(six.iteritems(props)))
|
for (k, v) in sorted(props.items()))
|
||||||
out_s = '<%s%s>' % (utils.enc(tag.name), s)
|
out_s = '<{}{}>'.format(utils.enc(tag.name), s)
|
||||||
self.outfp.write(utils.make_compat_bytes(out_s))
|
self.outfp.write(utils.make_compat_bytes(out_s))
|
||||||
self._stack.append(tag)
|
self._stack.append(tag)
|
||||||
return
|
return
|
||||||
|
|
|
@ -1,13 +1,7 @@
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import struct
|
import struct
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import six
|
|
||||||
try:
|
|
||||||
import hashlib as md5
|
import hashlib as md5
|
||||||
except ImportError:
|
|
||||||
import md5
|
|
||||||
try:
|
try:
|
||||||
from Crypto.Cipher import ARC4
|
from Crypto.Cipher import ARC4
|
||||||
from Crypto.Cipher import AES
|
from Crypto.Cipher import AES
|
||||||
|
@ -70,7 +64,7 @@ LITERAL_XREF = LIT('XRef')
|
||||||
LITERAL_CATALOG = LIT('Catalog')
|
LITERAL_CATALOG = LIT('Catalog')
|
||||||
|
|
||||||
|
|
||||||
class PDFBaseXRef(object):
|
class PDFBaseXRef:
|
||||||
|
|
||||||
def get_trailer(self):
|
def get_trailer(self):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
@ -110,15 +104,14 @@ class PDFXRef(PDFBaseXRef):
|
||||||
break
|
break
|
||||||
f = line.strip().split(b' ')
|
f = line.strip().split(b' ')
|
||||||
if len(f) != 2:
|
if len(f) != 2:
|
||||||
error_msg = 'Trailer not found: %r: line=%r' % (parser, line)
|
error_msg = 'Trailer not found: {!r}: line={!r}'\
|
||||||
|
.format(parser, line)
|
||||||
raise PDFNoValidXRef(error_msg)
|
raise PDFNoValidXRef(error_msg)
|
||||||
try:
|
try:
|
||||||
if six.PY2:
|
|
||||||
(start, nobjs) = map(long, f) # noqa F821
|
|
||||||
else:
|
|
||||||
(start, nobjs) = map(int, f)
|
(start, nobjs) = map(int, f)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
error_msg = 'Invalid line: %r: line=%r' % (parser, line)
|
error_msg = 'Invalid line: {!r}: line={!r}'\
|
||||||
|
.format(parser, line)
|
||||||
raise PDFNoValidXRef(error_msg)
|
raise PDFNoValidXRef(error_msg)
|
||||||
for objid in range(start, start+nobjs):
|
for objid in range(start, start+nobjs):
|
||||||
try:
|
try:
|
||||||
|
@ -127,17 +120,13 @@ class PDFXRef(PDFBaseXRef):
|
||||||
raise PDFNoValidXRef('Unexpected EOF - file corrupted?')
|
raise PDFNoValidXRef('Unexpected EOF - file corrupted?')
|
||||||
f = line.strip().split(b' ')
|
f = line.strip().split(b' ')
|
||||||
if len(f) != 3:
|
if len(f) != 3:
|
||||||
error_msg = 'Invalid XRef format: %r, line=%r' \
|
error_msg = 'Invalid XRef format: {!r}, line={!r}'\
|
||||||
% (parser, line)
|
.format(parser, line)
|
||||||
raise PDFNoValidXRef(error_msg)
|
raise PDFNoValidXRef(error_msg)
|
||||||
(pos, genno, use) = f
|
(pos, genno, use) = f
|
||||||
if use != b'n':
|
if use != b'n':
|
||||||
continue
|
continue
|
||||||
if six.PY2:
|
self.offsets[objid] = (None, int(pos), int(genno))
|
||||||
position = long(pos) # noqa F821
|
|
||||||
else:
|
|
||||||
position = int(pos)
|
|
||||||
self.offsets[objid] = None, position, int(genno)
|
|
||||||
log.info('xref objects: %r', self.offsets)
|
log.info('xref objects: %r', self.offsets)
|
||||||
self.load_trailer(parser)
|
self.load_trailer(parser)
|
||||||
return
|
return
|
||||||
|
@ -160,7 +149,7 @@ class PDFXRef(PDFBaseXRef):
|
||||||
return self.trailer
|
return self.trailer
|
||||||
|
|
||||||
def get_objids(self):
|
def get_objids(self):
|
||||||
return six.iterkeys(self.offsets)
|
return self.offsets.keys()
|
||||||
|
|
||||||
def get_pos(self, objid):
|
def get_pos(self, objid):
|
||||||
try:
|
try:
|
||||||
|
@ -188,7 +177,6 @@ class PDFXRefFallback(PDFXRef):
|
||||||
self.load_trailer(parser)
|
self.load_trailer(parser)
|
||||||
log.info('trailer: %r', self.trailer)
|
log.info('trailer: %r', self.trailer)
|
||||||
break
|
break
|
||||||
if six.PY3:
|
|
||||||
line = line.decode('latin-1') # default pdf encoding
|
line = line.decode('latin-1') # default pdf encoding
|
||||||
m = self.PDFOBJ_CUE.match(line)
|
m = self.PDFOBJ_CUE.match(line)
|
||||||
if not m:
|
if not m:
|
||||||
|
@ -295,7 +283,7 @@ class PDFXRefStream(PDFBaseXRef):
|
||||||
raise KeyError(objid)
|
raise KeyError(objid)
|
||||||
|
|
||||||
|
|
||||||
class PDFStandardSecurityHandler(object):
|
class PDFStandardSecurityHandler:
|
||||||
|
|
||||||
PASSWORD_PADDING = (b'(\xbfN^Nu\x8aAd\x00NV\xff\xfa\x01\x08'
|
PASSWORD_PADDING = (b'(\xbfN^Nu\x8aAd\x00NV\xff\xfa\x01\x08'
|
||||||
b'..\x00\xb6\xd0h>\x80/\x0c\xa9\xfedSiz')
|
b'..\x00\xb6\xd0h>\x80/\x0c\xa9\xfedSiz')
|
||||||
|
@ -350,7 +338,7 @@ class PDFStandardSecurityHandler(object):
|
||||||
hash.update(self.docid[0]) # 3
|
hash.update(self.docid[0]) # 3
|
||||||
result = ARC4.new(key).encrypt(hash.digest()) # 4
|
result = ARC4.new(key).encrypt(hash.digest()) # 4
|
||||||
for i in range(1, 20): # 5
|
for i in range(1, 20): # 5
|
||||||
k = b''.join(six.int2byte(c ^ i) for c in six.iterbytes(key))
|
k = b''.join(bytes((c ^ i,)) for c in iter(key))
|
||||||
result = ARC4.new(k).encrypt(result)
|
result = ARC4.new(k).encrypt(result)
|
||||||
result += result # 6
|
result += result # 6
|
||||||
return result
|
return result
|
||||||
|
@ -410,7 +398,7 @@ class PDFStandardSecurityHandler(object):
|
||||||
else:
|
else:
|
||||||
user_password = self.o
|
user_password = self.o
|
||||||
for i in range(19, -1, -1):
|
for i in range(19, -1, -1):
|
||||||
k = b''.join(six.int2byte(c ^ i) for c in six.iterbytes(key))
|
k = b''.join(bytes((c ^ i,)) for c in iter(key))
|
||||||
user_password = ARC4.new(k).decrypt(user_password)
|
user_password = ARC4.new(k).decrypt(user_password)
|
||||||
return self.authenticate_user_password(user_password)
|
return self.authenticate_user_password(user_password)
|
||||||
|
|
||||||
|
@ -430,7 +418,7 @@ class PDFStandardSecurityHandlerV4(PDFStandardSecurityHandler):
|
||||||
supported_revisions = (4,)
|
supported_revisions = (4,)
|
||||||
|
|
||||||
def init_params(self):
|
def init_params(self):
|
||||||
super(PDFStandardSecurityHandlerV4, self).init_params()
|
super().init_params()
|
||||||
self.length = 128
|
self.length = 128
|
||||||
self.cf = dict_value(self.param.get('CF'))
|
self.cf = dict_value(self.param.get('CF'))
|
||||||
self.stmf = literal_name(self.param['StmF'])
|
self.stmf = literal_name(self.param['StmF'])
|
||||||
|
@ -486,7 +474,7 @@ class PDFStandardSecurityHandlerV5(PDFStandardSecurityHandlerV4):
|
||||||
supported_revisions = (5,)
|
supported_revisions = (5,)
|
||||||
|
|
||||||
def init_params(self):
|
def init_params(self):
|
||||||
super(PDFStandardSecurityHandlerV5, self).init_params()
|
super().init_params()
|
||||||
self.length = 256
|
self.length = 256
|
||||||
self.oe = str_value(self.param['OE'])
|
self.oe = str_value(self.param['OE'])
|
||||||
self.ue = str_value(self.param['UE'])
|
self.ue = str_value(self.param['UE'])
|
||||||
|
@ -529,7 +517,7 @@ class PDFStandardSecurityHandlerV5(PDFStandardSecurityHandlerV4):
|
||||||
.decrypt(data[16:])
|
.decrypt(data[16:])
|
||||||
|
|
||||||
|
|
||||||
class PDFDocument(object):
|
class PDFDocument:
|
||||||
"""PDFDocument object represents a PDF document.
|
"""PDFDocument object represents a PDF document.
|
||||||
|
|
||||||
Since a PDF file can be very big, normally it is not loaded at
|
Since a PDF file can be very big, normally it is not loaded at
|
||||||
|
@ -673,7 +661,8 @@ class PDFDocument(object):
|
||||||
objid1 = x[-2]
|
objid1 = x[-2]
|
||||||
# #### end hack around malformed pdf files
|
# #### end hack around malformed pdf files
|
||||||
if objid1 != objid:
|
if objid1 != objid:
|
||||||
raise PDFSyntaxError('objid mismatch: %r=%r' % (objid1, objid))
|
raise PDFSyntaxError('objid mismatch: {!r}={!r}'
|
||||||
|
.format(objid1, objid))
|
||||||
|
|
||||||
if kwd != KWD(b'obj'):
|
if kwd != KWD(b'obj'):
|
||||||
raise PDFSyntaxError('Invalid object spec: offset=%r' % pos)
|
raise PDFSyntaxError('Invalid object spec: offset=%r' % pos)
|
||||||
|
@ -734,11 +723,9 @@ class PDFDocument(object):
|
||||||
se = entry.get('SE')
|
se = entry.get('SE')
|
||||||
yield (level, title, dest, action, se)
|
yield (level, title, dest, action, se)
|
||||||
if 'First' in entry and 'Last' in entry:
|
if 'First' in entry and 'Last' in entry:
|
||||||
for x in search(entry['First'], level+1):
|
yield from search(entry['First'], level+1)
|
||||||
yield x
|
|
||||||
if 'Next' in entry:
|
if 'Next' in entry:
|
||||||
for x in search(entry['Next'], level):
|
yield from search(entry['Next'], level)
|
||||||
yield x
|
|
||||||
return
|
return
|
||||||
return search(self.catalog['Outlines'], 0)
|
return search(self.catalog['Outlines'], 0)
|
||||||
|
|
||||||
|
@ -796,9 +783,6 @@ class PDFDocument(object):
|
||||||
else:
|
else:
|
||||||
raise PDFNoValidXRef('Unexpected EOF')
|
raise PDFNoValidXRef('Unexpected EOF')
|
||||||
log.info('xref found: pos=%r', prev)
|
log.info('xref found: pos=%r', prev)
|
||||||
if six.PY2:
|
|
||||||
return long(prev) # noqa F821
|
|
||||||
else:
|
|
||||||
return int(prev)
|
return int(prev)
|
||||||
|
|
||||||
# read xref table
|
# read xref table
|
||||||
|
|
|
@ -3,7 +3,6 @@ import struct
|
||||||
import sys
|
import sys
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
from . import settings
|
from . import settings
|
||||||
from .cmapdb import CMap
|
from .cmapdb import CMap
|
||||||
|
@ -75,7 +74,7 @@ def get_widths2(seq):
|
||||||
return widths
|
return widths
|
||||||
|
|
||||||
|
|
||||||
class FontMetricsDB(object):
|
class FontMetricsDB:
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_metrics(cls, fontname):
|
def get_metrics(cls, fontname):
|
||||||
|
@ -191,7 +190,7 @@ def getdict(data):
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
|
||||||
class CFFFont(object):
|
class CFFFont:
|
||||||
|
|
||||||
STANDARD_STRINGS = (
|
STANDARD_STRINGS = (
|
||||||
'.notdef', 'space', 'exclam', 'quotedbl', 'numbersign',
|
'.notdef', 'space', 'exclam', 'quotedbl', 'numbersign',
|
||||||
|
@ -274,7 +273,7 @@ class CFFFont(object):
|
||||||
'Light', 'Medium', 'Regular', 'Roman', 'Semibold',
|
'Light', 'Medium', 'Regular', 'Roman', 'Semibold',
|
||||||
)
|
)
|
||||||
|
|
||||||
class INDEX(object):
|
class INDEX:
|
||||||
|
|
||||||
def __init__(self, fp):
|
def __init__(self, fp):
|
||||||
self.fp = fp
|
self.fp = fp
|
||||||
|
@ -385,7 +384,7 @@ class CFFFont(object):
|
||||||
return self.string_index[sid-len(self.STANDARD_STRINGS)]
|
return self.string_index[sid-len(self.STANDARD_STRINGS)]
|
||||||
|
|
||||||
|
|
||||||
class TrueTypeFont(object):
|
class TrueTypeFont:
|
||||||
|
|
||||||
class CMapNotFound(Exception):
|
class CMapNotFound(Exception):
|
||||||
pass
|
pass
|
||||||
|
@ -470,7 +469,7 @@ class TrueTypeFont(object):
|
||||||
assert False, str(('Unhandled', fmttype))
|
assert False, str(('Unhandled', fmttype))
|
||||||
# create unicode map
|
# create unicode map
|
||||||
unicode_map = FileUnicodeMap()
|
unicode_map = FileUnicodeMap()
|
||||||
for (char, gid) in six.iteritems(char2gid):
|
for (char, gid) in char2gid.items():
|
||||||
unicode_map.add_cid2unichr(gid, char)
|
unicode_map.add_cid2unichr(gid, char)
|
||||||
return unicode_map
|
return unicode_map
|
||||||
|
|
||||||
|
@ -487,7 +486,7 @@ LITERAL_STANDARD_ENCODING = LIT('StandardEncoding')
|
||||||
LITERAL_TYPE1C = LIT('Type1C')
|
LITERAL_TYPE1C = LIT('Type1C')
|
||||||
|
|
||||||
|
|
||||||
class PDFFont(object):
|
class PDFFont:
|
||||||
|
|
||||||
def __init__(self, descriptor, widths, default_width=None):
|
def __init__(self, descriptor, widths, default_width=None):
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
@ -617,7 +616,7 @@ class PDFType1Font(PDFSimpleFont):
|
||||||
firstchar = int_value(spec.get('FirstChar', 0))
|
firstchar = int_value(spec.get('FirstChar', 0))
|
||||||
# lastchar = int_value(spec.get('LastChar', 255))
|
# lastchar = int_value(spec.get('LastChar', 255))
|
||||||
widths = list_value(spec.get('Widths', [0]*256))
|
widths = list_value(spec.get('Widths', [0]*256))
|
||||||
widths = dict((i+firstchar, w) for (i, w) in enumerate(widths))
|
widths = {i+firstchar: w for (i, w) in enumerate(widths)}
|
||||||
PDFSimpleFont.__init__(self, descriptor, widths, spec)
|
PDFSimpleFont.__init__(self, descriptor, widths, spec)
|
||||||
if 'Encoding' not in spec and 'FontFile' in descriptor:
|
if 'Encoding' not in spec and 'FontFile' in descriptor:
|
||||||
# try to recover the missing encoding info from the font file.
|
# try to recover the missing encoding info from the font file.
|
||||||
|
@ -644,7 +643,7 @@ class PDFType3Font(PDFSimpleFont):
|
||||||
firstchar = int_value(spec.get('FirstChar', 0))
|
firstchar = int_value(spec.get('FirstChar', 0))
|
||||||
# lastchar = int_value(spec.get('LastChar', 0))
|
# lastchar = int_value(spec.get('LastChar', 0))
|
||||||
widths = list_value(spec.get('Widths', [0]*256))
|
widths = list_value(spec.get('Widths', [0]*256))
|
||||||
widths = dict((i+firstchar, w) for (i, w) in enumerate(widths))
|
widths = {i+firstchar: w for (i, w) in enumerate(widths)}
|
||||||
if 'FontDescriptor' in spec:
|
if 'FontDescriptor' in spec:
|
||||||
descriptor = dict_value(spec['FontDescriptor'])
|
descriptor = dict_value(spec['FontDescriptor'])
|
||||||
else:
|
else:
|
||||||
|
@ -674,7 +673,7 @@ class PDFCIDFont(PDFFont):
|
||||||
self.cidsysteminfo.get('Registry', b'unknown')).decode("latin1")
|
self.cidsysteminfo.get('Registry', b'unknown')).decode("latin1")
|
||||||
cid_ordering = resolve1(
|
cid_ordering = resolve1(
|
||||||
self.cidsysteminfo.get('Ordering', b'unknown')).decode("latin1")
|
self.cidsysteminfo.get('Ordering', b'unknown')).decode("latin1")
|
||||||
self.cidcoding = '%s-%s' % (cid_registry, cid_ordering)
|
self.cidcoding = '{}-{}'.format(cid_registry, cid_ordering)
|
||||||
self.cmap = self.get_cmap_from_spec(spec, strict)
|
self.cmap = self.get_cmap_from_spec(spec, strict)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -710,11 +709,11 @@ class PDFCIDFont(PDFFont):
|
||||||
if self.vertical:
|
if self.vertical:
|
||||||
# writing mode: vertical
|
# writing mode: vertical
|
||||||
widths = get_widths2(list_value(spec.get('W2', [])))
|
widths = get_widths2(list_value(spec.get('W2', [])))
|
||||||
self.disps = dict((cid, (vx, vy)) for (cid, (_, (vx, vy)))
|
self.disps = {cid: (vx, vy)
|
||||||
in six.iteritems(widths))
|
for (cid, (_, (vx, vy))) in widths.items()}
|
||||||
(vy, w) = spec.get('DW2', [880, -1000])
|
(vy, w) = spec.get('DW2', [880, -1000])
|
||||||
self.default_disp = (None, vy)
|
self.default_disp = (None, vy)
|
||||||
widths = dict((cid, w) for (cid, (w, _)) in six.iteritems(widths))
|
widths = {cid: w for (cid, (w, _)) in widths.items()}
|
||||||
default_width = w
|
default_width = w
|
||||||
else:
|
else:
|
||||||
# writing mode: horizontal
|
# writing mode: horizontal
|
||||||
|
@ -756,8 +755,8 @@ class PDFCIDFont(PDFFont):
|
||||||
return CMap()
|
return CMap()
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<PDFCIDFont: basefont=%r, cidcoding=%r>' \
|
return '<PDFCIDFont: basefont={!r}, cidcoding={!r}>'\
|
||||||
% (self.basefont, self.cidcoding)
|
.format(self.basefont, self.cidcoding)
|
||||||
|
|
||||||
def is_vertical(self):
|
def is_vertical(self):
|
||||||
return self.vertical
|
return self.vertical
|
||||||
|
|
|
@ -30,7 +30,6 @@ from .utils import choplist
|
||||||
from .utils import mult_matrix
|
from .utils import mult_matrix
|
||||||
from .utils import MATRIX_IDENTITY
|
from .utils import MATRIX_IDENTITY
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -50,7 +49,7 @@ LITERAL_FORM = LIT('Form')
|
||||||
LITERAL_IMAGE = LIT('Image')
|
LITERAL_IMAGE = LIT('Image')
|
||||||
|
|
||||||
|
|
||||||
class PDFTextState(object):
|
class PDFTextState:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.font = None
|
self.font = None
|
||||||
|
@ -94,7 +93,7 @@ class PDFTextState(object):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class PDFGraphicState(object):
|
class PDFGraphicState:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.linewidth = 0
|
self.linewidth = 0
|
||||||
|
@ -134,7 +133,7 @@ class PDFGraphicState(object):
|
||||||
self.scolor, self.ncolor))
|
self.scolor, self.ncolor))
|
||||||
|
|
||||||
|
|
||||||
class PDFResourceManager(object):
|
class PDFResourceManager:
|
||||||
"""Repository of shared resources.
|
"""Repository of shared resources.
|
||||||
|
|
||||||
ResourceManager facilitates reuse of shared resources
|
ResourceManager facilitates reuse of shared resources
|
||||||
|
@ -253,14 +252,13 @@ class PDFContentParser(PSStackParser):
|
||||||
while i <= len(target):
|
while i <= len(target):
|
||||||
self.fillbuf()
|
self.fillbuf()
|
||||||
if i:
|
if i:
|
||||||
c = six.indexbytes(self.buf, self.charpos)
|
c = self.buf[self.charpos]
|
||||||
c = six.int2byte(c)
|
c = bytes((c,))
|
||||||
data += c
|
data += c
|
||||||
self.charpos += 1
|
self.charpos += 1
|
||||||
if len(target) <= i and c.isspace():
|
if len(target) <= i and c.isspace():
|
||||||
i += 1
|
i += 1
|
||||||
elif i < len(target) and (c == six.int2byte(target[i])
|
elif i < len(target) and c == (bytes((target[i],))):
|
||||||
if six.PY3 else target[i]):
|
|
||||||
i += 1
|
i += 1
|
||||||
else:
|
else:
|
||||||
i = 0
|
i = 0
|
||||||
|
@ -293,9 +291,10 @@ class PDFContentParser(PSStackParser):
|
||||||
try:
|
try:
|
||||||
(_, objs) = self.end_type('inline')
|
(_, objs) = self.end_type('inline')
|
||||||
if len(objs) % 2 != 0:
|
if len(objs) % 2 != 0:
|
||||||
error_msg = 'Invalid dictionary construct: %r' % objs
|
error_msg = 'Invalid dictionary construct: {!r}' \
|
||||||
|
.format(objs)
|
||||||
raise PSTypeError(error_msg)
|
raise PSTypeError(error_msg)
|
||||||
d = dict((literal_name(k), v) for (k, v) in choplist(2, objs))
|
d = {literal_name(k): v for (k, v) in choplist(2, objs)}
|
||||||
(pos, data) = self.get_inline_data(pos+len(b'ID '))
|
(pos, data) = self.get_inline_data(pos+len(b'ID '))
|
||||||
obj = PDFStream(d, data)
|
obj = PDFStream(d, data)
|
||||||
self.push((pos, obj))
|
self.push((pos, obj))
|
||||||
|
@ -308,7 +307,7 @@ class PDFContentParser(PSStackParser):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class PDFPageInterpreter(object):
|
class PDFPageInterpreter:
|
||||||
"""Processor for the content of a PDF page
|
"""Processor for the content of a PDF page
|
||||||
|
|
||||||
Reference: PDF Reference, Appendix A, Operator Summary
|
Reference: PDF Reference, Appendix A, Operator Summary
|
||||||
|
@ -344,22 +343,22 @@ class PDFPageInterpreter(object):
|
||||||
return PDFColorSpace(name, len(list_value(spec[1])))
|
return PDFColorSpace(name, len(list_value(spec[1])))
|
||||||
else:
|
else:
|
||||||
return PREDEFINED_COLORSPACE.get(name)
|
return PREDEFINED_COLORSPACE.get(name)
|
||||||
for (k, v) in six.iteritems(dict_value(resources)):
|
for (k, v) in dict_value(resources).items():
|
||||||
log.debug('Resource: %r: %r', k, v)
|
log.debug('Resource: %r: %r', k, v)
|
||||||
if k == 'Font':
|
if k == 'Font':
|
||||||
for (fontid, spec) in six.iteritems(dict_value(v)):
|
for (fontid, spec) in dict_value(v).items():
|
||||||
objid = None
|
objid = None
|
||||||
if isinstance(spec, PDFObjRef):
|
if isinstance(spec, PDFObjRef):
|
||||||
objid = spec.objid
|
objid = spec.objid
|
||||||
spec = dict_value(spec)
|
spec = dict_value(spec)
|
||||||
self.fontmap[fontid] = self.rsrcmgr.get_font(objid, spec)
|
self.fontmap[fontid] = self.rsrcmgr.get_font(objid, spec)
|
||||||
elif k == 'ColorSpace':
|
elif k == 'ColorSpace':
|
||||||
for (csid, spec) in six.iteritems(dict_value(v)):
|
for (csid, spec) in dict_value(v).items():
|
||||||
self.csmap[csid] = get_colorspace(resolve1(spec))
|
self.csmap[csid] = get_colorspace(resolve1(spec))
|
||||||
elif k == 'ProcSet':
|
elif k == 'ProcSet':
|
||||||
self.rsrcmgr.get_procset(list_value(v))
|
self.rsrcmgr.get_procset(list_value(v))
|
||||||
elif k == 'XObject':
|
elif k == 'XObject':
|
||||||
for (xobjid, xobjstrm) in six.iteritems(dict_value(v)):
|
for (xobjid, xobjstrm) in dict_value(v).items():
|
||||||
self.xobjmap[xobjid] = xobjstrm
|
self.xobjmap[xobjid] = xobjstrm
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -376,7 +375,7 @@ class PDFPageInterpreter(object):
|
||||||
# set some global states.
|
# set some global states.
|
||||||
self.scs = self.ncs = None
|
self.scs = self.ncs = None
|
||||||
if self.csmap:
|
if self.csmap:
|
||||||
self.scs = self.ncs = six.next(six.itervalues(self.csmap))
|
self.scs = self.ncs = next(iter(self.csmap.values()))
|
||||||
return
|
return
|
||||||
|
|
||||||
def push(self, obj):
|
def push(self, obj):
|
||||||
|
@ -926,7 +925,7 @@ class PDFPageInterpreter(object):
|
||||||
.replace("'", '_q')
|
.replace("'", '_q')
|
||||||
if hasattr(self, method):
|
if hasattr(self, method):
|
||||||
func = getattr(self, method)
|
func = getattr(self, method)
|
||||||
nargs = six.get_function_code(func).co_argcount-1
|
nargs = func.__code__.co_argcount-1
|
||||||
if nargs:
|
if nargs:
|
||||||
args = self.pop(nargs)
|
args = self.pop(nargs)
|
||||||
log.debug('exec: %s %r', name, args)
|
log.debug('exec: %s %r', name, args)
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from . import settings
|
from . import settings
|
||||||
from .psparser import LIT
|
from .psparser import LIT
|
||||||
|
@ -11,7 +10,6 @@ from .pdfparser import PDFParser
|
||||||
from .pdfdocument import PDFDocument
|
from .pdfdocument import PDFDocument
|
||||||
from .pdfdocument import PDFTextExtractionNotAllowed
|
from .pdfdocument import PDFTextExtractionNotAllowed
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -20,8 +18,7 @@ LITERAL_PAGE = LIT('Page')
|
||||||
LITERAL_PAGES = LIT('Pages')
|
LITERAL_PAGES = LIT('Pages')
|
||||||
|
|
||||||
|
|
||||||
class PDFPage(object):
|
class PDFPage:
|
||||||
|
|
||||||
"""An object that holds the information about a page.
|
"""An object that holds the information about a page.
|
||||||
|
|
||||||
A PDFPage object is merely a convenience class that has a set
|
A PDFPage object is merely a convenience class that has a set
|
||||||
|
@ -72,10 +69,10 @@ class PDFPage(object):
|
||||||
return
|
return
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<PDFPage: Resources=%r, MediaBox=%r>' % \
|
return '<PDFPage: Resources={!r}, MediaBox={!r}>'\
|
||||||
(self.resources, self.mediabox)
|
.format(self.resources, self.mediabox)
|
||||||
|
|
||||||
INHERITABLE_ATTRS = set(['Resources', 'MediaBox', 'CropBox', 'Rotate'])
|
INHERITABLE_ATTRS = {'Resources', 'MediaBox', 'CropBox', 'Rotate'}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_pages(cls, document):
|
def create_pages(cls, document):
|
||||||
|
@ -86,7 +83,7 @@ class PDFPage(object):
|
||||||
else:
|
else:
|
||||||
objid = obj.objid
|
objid = obj.objid
|
||||||
tree = dict_value(obj).copy()
|
tree = dict_value(obj).copy()
|
||||||
for (k, v) in six.iteritems(parent):
|
for (k, v) in parent.items():
|
||||||
if k in cls.INHERITABLE_ATTRS and k not in tree:
|
if k in cls.INHERITABLE_ATTRS and k not in tree:
|
||||||
tree[k] = v
|
tree[k] = v
|
||||||
|
|
||||||
|
@ -97,8 +94,7 @@ class PDFPage(object):
|
||||||
if tree_type is LITERAL_PAGES and 'Kids' in tree:
|
if tree_type is LITERAL_PAGES and 'Kids' in tree:
|
||||||
log.info('Pages: Kids=%r', tree['Kids'])
|
log.info('Pages: Kids=%r', tree['Kids'])
|
||||||
for c in list_value(tree['Kids']):
|
for c in list_value(tree['Kids']):
|
||||||
for x in search(c, tree):
|
yield from search(c, tree)
|
||||||
yield x
|
|
||||||
elif tree_type is LITERAL_PAGE:
|
elif tree_type is LITERAL_PAGE:
|
||||||
log.info('Page: %r', tree)
|
log.info('Page: %r', tree)
|
||||||
yield (objid, tree)
|
yield (objid, tree)
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
import zlib
|
import zlib
|
||||||
import logging
|
import logging
|
||||||
from .lzw import lzwdecode
|
from .lzw import lzwdecode
|
||||||
|
@ -13,7 +12,6 @@ from . import settings
|
||||||
from .utils import apply_png_predictor
|
from .utils import apply_png_predictor
|
||||||
from .utils import isnumber
|
from .utils import isnumber
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -96,7 +94,7 @@ def resolve_all(x, default=None):
|
||||||
if isinstance(x, list):
|
if isinstance(x, list):
|
||||||
x = [resolve_all(v, default=default) for v in x]
|
x = [resolve_all(v, default=default) for v in x]
|
||||||
elif isinstance(x, dict):
|
elif isinstance(x, dict):
|
||||||
for (k, v) in six.iteritems(x):
|
for (k, v) in x.items():
|
||||||
x[k] = resolve_all(v, default=default)
|
x[k] = resolve_all(v, default=default)
|
||||||
return x
|
return x
|
||||||
|
|
||||||
|
@ -109,7 +107,7 @@ def decipher_all(decipher, objid, genno, x):
|
||||||
if isinstance(x, list):
|
if isinstance(x, list):
|
||||||
x = [decipher_all(decipher, objid, genno, v) for v in x]
|
x = [decipher_all(decipher, objid, genno, v) for v in x]
|
||||||
elif isinstance(x, dict):
|
elif isinstance(x, dict):
|
||||||
for (k, v) in six.iteritems(x):
|
for (k, v) in x.items():
|
||||||
x[k] = decipher_all(decipher, objid, genno, v)
|
x[k] = decipher_all(decipher, objid, genno, v)
|
||||||
return x
|
return x
|
||||||
|
|
||||||
|
@ -143,7 +141,7 @@ def num_value(x):
|
||||||
|
|
||||||
def str_value(x):
|
def str_value(x):
|
||||||
x = resolve1(x)
|
x = resolve1(x)
|
||||||
if not isinstance(x, six.binary_type):
|
if not isinstance(x, bytes):
|
||||||
if settings.STRICT:
|
if settings.STRICT:
|
||||||
raise PDFTypeError('String required: %r' % x)
|
raise PDFTypeError('String required: %r' % x)
|
||||||
return ''
|
return ''
|
||||||
|
@ -260,7 +258,8 @@ class PDFStream(PDFObject):
|
||||||
data = zlib.decompress(data)
|
data = zlib.decompress(data)
|
||||||
except zlib.error as e:
|
except zlib.error as e:
|
||||||
if settings.STRICT:
|
if settings.STRICT:
|
||||||
error_msg = 'Invalid zlib bytes: %r, %r' % (e, data)
|
error_msg = 'Invalid zlib bytes: {!r}, {!r}'\
|
||||||
|
.format(e, data)
|
||||||
raise PDFException(error_msg)
|
raise PDFException(error_msg)
|
||||||
data = b''
|
data = b''
|
||||||
elif f in LITERALS_LZW_DECODE:
|
elif f in LITERALS_LZW_DECODE:
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
import re
|
import re
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
from . import settings
|
from . import settings
|
||||||
from .utils import choplist
|
from .utils import choplist
|
||||||
|
@ -33,8 +32,7 @@ class PSValueError(PSException):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class PSObject(object):
|
class PSObject:
|
||||||
|
|
||||||
"""Base class for all PS or PDF-related data types."""
|
"""Base class for all PS or PDF-related data types."""
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
@ -82,8 +80,7 @@ class PSKeyword(PSObject):
|
||||||
return '/%r' % name
|
return '/%r' % name
|
||||||
|
|
||||||
|
|
||||||
class PSSymbolTable(object):
|
class PSSymbolTable:
|
||||||
|
|
||||||
"""A utility class for storing PSLiteral/PSKeyword objects.
|
"""A utility class for storing PSLiteral/PSKeyword objects.
|
||||||
|
|
||||||
Interned objects can be checked its identity with "is" operator.
|
Interned objects can be checked its identity with "is" operator.
|
||||||
|
@ -118,12 +115,11 @@ KEYWORD_DICT_END = KWD(b'>>')
|
||||||
def literal_name(x):
|
def literal_name(x):
|
||||||
if not isinstance(x, PSLiteral):
|
if not isinstance(x, PSLiteral):
|
||||||
if settings.STRICT:
|
if settings.STRICT:
|
||||||
raise PSTypeError('Literal required: %r' % (x,))
|
raise PSTypeError('Literal required: {!r}'.format(x))
|
||||||
else:
|
else:
|
||||||
name = x
|
name = x
|
||||||
else:
|
else:
|
||||||
name = x.name
|
name = x.name
|
||||||
if six.PY3:
|
|
||||||
try:
|
try:
|
||||||
name = str(name, 'utf-8')
|
name = str(name, 'utf-8')
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -138,9 +134,7 @@ def keyword_name(x):
|
||||||
else:
|
else:
|
||||||
name = x
|
name = x
|
||||||
else:
|
else:
|
||||||
name = x.name
|
name = str(x.name, 'utf-8', 'ignore')
|
||||||
if six.PY3:
|
|
||||||
name = str(name, 'utf-8', 'ignore')
|
|
||||||
return name
|
return name
|
||||||
|
|
||||||
|
|
||||||
|
@ -167,7 +161,7 @@ ESC_STRING = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class PSBaseParser(object):
|
class PSBaseParser:
|
||||||
|
|
||||||
"""Most basic PostScript parser that performs only tokenization.
|
"""Most basic PostScript parser that performs only tokenization.
|
||||||
"""
|
"""
|
||||||
|
@ -369,7 +363,7 @@ class PSBaseParser(object):
|
||||||
self.hex += c
|
self.hex += c
|
||||||
return i+1
|
return i+1
|
||||||
if self.hex:
|
if self.hex:
|
||||||
self._curtoken += six.int2byte(int(self.hex, 16))
|
self._curtoken += bytes((int(self.hex, 16),))
|
||||||
self._parse1 = self._parse_literal
|
self._parse1 = self._parse_literal
|
||||||
return i
|
return i
|
||||||
|
|
||||||
|
@ -455,11 +449,11 @@ class PSBaseParser(object):
|
||||||
self.oct += c
|
self.oct += c
|
||||||
return i+1
|
return i+1
|
||||||
if self.oct:
|
if self.oct:
|
||||||
self._curtoken += six.int2byte(int(self.oct, 8))
|
self._curtoken += bytes((int(self.oct, 8),))
|
||||||
self._parse1 = self._parse_string
|
self._parse1 = self._parse_string
|
||||||
return i
|
return i
|
||||||
if c in ESC_STRING:
|
if c in ESC_STRING:
|
||||||
self._curtoken += six.int2byte(ESC_STRING[c])
|
self._curtoken += bytes((ESC_STRING[c],))
|
||||||
self._parse1 = self._parse_string
|
self._parse1 = self._parse_string
|
||||||
return i+1
|
return i+1
|
||||||
|
|
||||||
|
@ -488,7 +482,7 @@ class PSBaseParser(object):
|
||||||
return len(s)
|
return len(s)
|
||||||
j = m.start(0)
|
j = m.start(0)
|
||||||
self._curtoken += s[i:j]
|
self._curtoken += s[i:j]
|
||||||
token = HEX_PAIR.sub(lambda m: six.int2byte(int(m.group(0), 16)),
|
token = HEX_PAIR.sub(lambda m: bytes((int(m.group(0), 16),)),
|
||||||
SPC.sub(b'', self._curtoken))
|
SPC.sub(b'', self._curtoken))
|
||||||
self._add_token(token)
|
self._add_token(token)
|
||||||
self._parse1 = self._parse_main
|
self._parse1 = self._parse_main
|
||||||
|
@ -551,7 +545,8 @@ class PSStackParser(PSBaseParser):
|
||||||
|
|
||||||
def end_type(self, type):
|
def end_type(self, type):
|
||||||
if self.curtype != type:
|
if self.curtype != type:
|
||||||
raise PSTypeError('Type mismatch: %r != %r' % (self.curtype, type))
|
raise PSTypeError('Type mismatch: {!r} != {!r}'
|
||||||
|
.format(self.curtype, type))
|
||||||
objs = [obj for (_, obj) in self.curstack]
|
objs = [obj for (_, obj) in self.curstack]
|
||||||
(pos, self.curtype, self.curstack) = self.context.pop()
|
(pos, self.curtype, self.curstack) = self.context.pop()
|
||||||
log.debug('end_type: pos=%r, type=%r, objs=%r', pos, type, objs)
|
log.debug('end_type: pos=%r, type=%r, objs=%r', pos, type, objs)
|
||||||
|
@ -570,9 +565,7 @@ class PSStackParser(PSBaseParser):
|
||||||
"""
|
"""
|
||||||
while not self.results:
|
while not self.results:
|
||||||
(pos, token) = self.nexttoken()
|
(pos, token) = self.nexttoken()
|
||||||
if isinstance(token, (six.integer_types, float, bool,
|
if isinstance(token, (int, float, bool, str, bytes, PSLiteral)):
|
||||||
six.string_types, six.binary_type,
|
|
||||||
PSLiteral)):
|
|
||||||
# normal token
|
# normal token
|
||||||
self.push((pos, token))
|
self.push((pos, token))
|
||||||
elif token == KEYWORD_ARRAY_BEGIN:
|
elif token == KEYWORD_ARRAY_BEGIN:
|
||||||
|
@ -595,9 +588,8 @@ class PSStackParser(PSBaseParser):
|
||||||
if len(objs) % 2 != 0:
|
if len(objs) % 2 != 0:
|
||||||
error_msg = 'Invalid dictionary construct: %r' % objs
|
error_msg = 'Invalid dictionary construct: %r' % objs
|
||||||
raise PSSyntaxError(error_msg)
|
raise PSSyntaxError(error_msg)
|
||||||
# construct a Python dictionary.
|
d = {literal_name(k): v
|
||||||
d = dict((literal_name(k), v)
|
for (k, v) in choplist(2, objs) if v is not None}
|
||||||
for (k, v) in choplist(2, objs) if v is not None)
|
|
||||||
self.push((pos, d))
|
self.push((pos, d))
|
||||||
except PSTypeError:
|
except PSTypeError:
|
||||||
if settings.STRICT:
|
if settings.STRICT:
|
||||||
|
|
|
@ -1056,7 +1056,7 @@ def rijndaelDecrypt(rk, nrounds, ciphertext):
|
||||||
|
|
||||||
|
|
||||||
# decrypt(key, fin, fout, keybits=256)
|
# decrypt(key, fin, fout, keybits=256)
|
||||||
class RijndaelDecryptor(object):
|
class RijndaelDecryptor:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
>>> key = b'00010203050607080a0b0c0d0f101112'.decode('hex')
|
>>> key = b'00010203050607080a0b0c0d0f101112'.decode('hex')
|
||||||
|
@ -1081,7 +1081,7 @@ class RijndaelDecryptor(object):
|
||||||
|
|
||||||
|
|
||||||
# encrypt(key, fin, fout, keybits=256)
|
# encrypt(key, fin, fout, keybits=256)
|
||||||
class RijndaelEncryptor(object):
|
class RijndaelEncryptor:
|
||||||
|
|
||||||
def __init__(self, key, keybits=256):
|
def __init__(self, key, keybits=256):
|
||||||
assert len(key) == KEYLENGTH(keybits), \
|
assert len(key) == KEYLENGTH(keybits), \
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
#
|
#
|
||||||
# RunLength decoder (Adobe version) implementation based on PDF Reference
|
# RunLength decoder (Adobe version) implementation based on PDF Reference
|
||||||
# version 1.4 section 3.3.4.
|
# version 1.4 section 3.3.4.
|
||||||
|
@ -6,8 +5,6 @@
|
||||||
# * public domain *
|
# * public domain *
|
||||||
#
|
#
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
|
|
||||||
def rldecode(data):
|
def rldecode(data):
|
||||||
"""
|
"""
|
||||||
|
@ -26,15 +23,18 @@ def rldecode(data):
|
||||||
decoded = b''
|
decoded = b''
|
||||||
i = 0
|
i = 0
|
||||||
while i < len(data):
|
while i < len(data):
|
||||||
length = six.indexbytes(data, i)
|
length = data[i]
|
||||||
if length == 128:
|
if length == 128:
|
||||||
break
|
break
|
||||||
|
|
||||||
if length >= 0 and length < 128:
|
if length >= 0 and length < 128:
|
||||||
for j in range(i+1, (i+1)+(length+1)):
|
for j in range(i+1, (i+1)+(length+1)):
|
||||||
decoded += six.int2byte(six.indexbytes(data, j))
|
decoded += bytes((data[j],))
|
||||||
i = (i+1) + (length+1)
|
i = (i+1) + (length+1)
|
||||||
|
|
||||||
if length > 128:
|
if length > 128:
|
||||||
run = six.int2byte(six.indexbytes(data, i+1))*(257-length)
|
run = bytes((data[i+1],))*(257-length)
|
||||||
decoded += run
|
decoded += run
|
||||||
i = (i+1) + 1
|
i = (i+1) + 1
|
||||||
|
|
||||||
return decoded
|
return decoded
|
||||||
|
|
|
@ -2,32 +2,23 @@
|
||||||
Miscellaneous Routines.
|
Miscellaneous Routines.
|
||||||
"""
|
"""
|
||||||
import struct
|
import struct
|
||||||
|
import chardet # For str encoding detection
|
||||||
import six
|
|
||||||
|
|
||||||
# from sys import maxint as INF doesn't work anymore under Python3, but PDF
|
# from sys import maxint as INF doesn't work anymore under Python3, but PDF
|
||||||
# still uses 32 bits ints
|
# still uses 32 bits ints
|
||||||
INF = (1 << 31) - 1
|
INF = (1 << 31) - 1
|
||||||
|
|
||||||
if six.PY3:
|
|
||||||
import chardet # For str encoding detection in Py3
|
|
||||||
|
|
||||||
unicode = str
|
|
||||||
|
|
||||||
|
|
||||||
def make_compat_bytes(in_str):
|
def make_compat_bytes(in_str):
|
||||||
"""In Py2, does nothing. In Py3, converts to bytes, encoding to unicode."""
|
"Converts to bytes, encoding to unicode."
|
||||||
assert isinstance(in_str, str), str(type(in_str))
|
assert isinstance(in_str, str), str(type(in_str))
|
||||||
if six.PY2:
|
|
||||||
return in_str
|
|
||||||
else:
|
|
||||||
return in_str.encode()
|
return in_str.encode()
|
||||||
|
|
||||||
|
|
||||||
def make_compat_str(in_str):
|
def make_compat_str(in_str):
|
||||||
"""In Py2, does nothing. In Py3, converts to string, guessing encoding."""
|
"""Converts to string, guessing encoding."""
|
||||||
assert isinstance(in_str, (bytes, str, unicode)), str(type(in_str))
|
assert isinstance(in_str, (bytes, str)), str(type(in_str))
|
||||||
if six.PY3 and isinstance(in_str, bytes):
|
if isinstance(in_str, bytes):
|
||||||
enc = chardet.detect(in_str)
|
enc = chardet.detect(in_str)
|
||||||
in_str = in_str.decode(enc['encoding'])
|
in_str = in_str.decode(enc['encoding'])
|
||||||
return in_str
|
return in_str
|
||||||
|
@ -49,11 +40,6 @@ def compatible_encode_method(bytesorstring, encoding='utf-8',
|
||||||
|
|
||||||
This does either.
|
This does either.
|
||||||
"""
|
"""
|
||||||
if six.PY2:
|
|
||||||
error_msg = str(type(bytesorstring))
|
|
||||||
assert isinstance(bytesorstring, (str, unicode)), error_msg
|
|
||||||
return bytesorstring.encode(encoding, erraction)
|
|
||||||
if six.PY3:
|
|
||||||
if isinstance(bytesorstring, str):
|
if isinstance(bytesorstring, str):
|
||||||
return bytesorstring
|
return bytesorstring
|
||||||
assert isinstance(bytesorstring, bytes), str(type(bytesorstring))
|
assert isinstance(bytesorstring, bytes), str(type(bytesorstring))
|
||||||
|
@ -70,8 +56,6 @@ def apply_png_predictor(pred, colors, columns, bitspercomponent, data):
|
||||||
line0 = b'\x00' * columns
|
line0 = b'\x00' * columns
|
||||||
for i in range(0, len(data), nbytes + 1):
|
for i in range(0, len(data), nbytes + 1):
|
||||||
ft = data[i]
|
ft = data[i]
|
||||||
if six.PY2:
|
|
||||||
ft = six.byte2int(ft)
|
|
||||||
i += 1
|
i += 1
|
||||||
line1 = data[i:i + nbytes]
|
line1 = data[i:i + nbytes]
|
||||||
line2 = b''
|
line2 = b''
|
||||||
|
@ -82,25 +66,19 @@ def apply_png_predictor(pred, colors, columns, bitspercomponent, data):
|
||||||
# PNG sub (UNTESTED)
|
# PNG sub (UNTESTED)
|
||||||
c = 0
|
c = 0
|
||||||
for b in line1:
|
for b in line1:
|
||||||
if six.PY2:
|
|
||||||
b = six.byte2int(b)
|
|
||||||
c = (c + b) & 255
|
c = (c + b) & 255
|
||||||
line2 += six.int2byte(c)
|
line2 += bytes((c,))
|
||||||
elif ft == 2:
|
elif ft == 2:
|
||||||
# PNG up
|
# PNG up
|
||||||
for (a, b) in zip(line0, line1):
|
for (a, b) in zip(line0, line1):
|
||||||
if six.PY2:
|
|
||||||
a, b = six.byte2int(a), six.byte2int(b)
|
|
||||||
c = (a + b) & 255
|
c = (a + b) & 255
|
||||||
line2 += six.int2byte(c)
|
line2 += bytes((c,))
|
||||||
elif ft == 3:
|
elif ft == 3:
|
||||||
# PNG average (UNTESTED)
|
# PNG average (UNTESTED)
|
||||||
c = 0
|
c = 0
|
||||||
for (a, b) in zip(line0, line1):
|
for (a, b) in zip(line0, line1):
|
||||||
if six.PY2:
|
|
||||||
a, b = six.byte2int(a), six.byte2int(b)
|
|
||||||
c = ((c + a + b) // 2) & 255
|
c = ((c + a + b) // 2) & 255
|
||||||
line2 += six.int2byte(c)
|
line2 += bytes((c,))
|
||||||
else:
|
else:
|
||||||
# unsupported
|
# unsupported
|
||||||
raise ValueError("Unsupported predictor value: %d" % ft)
|
raise ValueError("Unsupported predictor value: %d" % ft)
|
||||||
|
@ -146,7 +124,7 @@ def apply_matrix_norm(m, v):
|
||||||
# Utility functions
|
# Utility functions
|
||||||
|
|
||||||
def isnumber(x):
|
def isnumber(x):
|
||||||
return isinstance(x, (six.integer_types, float))
|
return isinstance(x, ((int,), float))
|
||||||
|
|
||||||
|
|
||||||
def uniq(objs):
|
def uniq(objs):
|
||||||
|
@ -228,7 +206,7 @@ def nunpack(s, default=0):
|
||||||
raise TypeError('invalid length: %d' % length)
|
raise TypeError('invalid length: %d' % length)
|
||||||
|
|
||||||
|
|
||||||
PDFDocEncoding = ''.join(six.unichr(x) for x in (
|
PDFDocEncoding = ''.join(chr(x) for x in (
|
||||||
0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
|
0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
|
||||||
0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
|
0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
|
||||||
0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0017, 0x0017,
|
0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0017, 0x0017,
|
||||||
|
@ -267,14 +245,14 @@ PDFDocEncoding = ''.join(six.unichr(x) for x in (
|
||||||
def decode_text(s):
|
def decode_text(s):
|
||||||
"""Decodes a PDFDocEncoding string to Unicode."""
|
"""Decodes a PDFDocEncoding string to Unicode."""
|
||||||
if s.startswith(b'\xfe\xff'):
|
if s.startswith(b'\xfe\xff'):
|
||||||
return six.text_type(s[2:], 'utf-16be', 'ignore')
|
return str(s[2:], 'utf-16be', 'ignore')
|
||||||
else:
|
else:
|
||||||
return ''.join(PDFDocEncoding[c] for c in s)
|
return ''.join(PDFDocEncoding[c] for c in s)
|
||||||
|
|
||||||
|
|
||||||
def enc(x, codec='ascii'):
|
def enc(x, codec='ascii'):
|
||||||
"""Encodes a string for SGML/XML/HTML"""
|
"""Encodes a string for SGML/XML/HTML"""
|
||||||
if six.PY3 and isinstance(x, bytes):
|
if isinstance(x, bytes):
|
||||||
return ''
|
return ''
|
||||||
x = x.replace('&', '&').replace('>', '>').replace('<', '<') \
|
x = x.replace('&', '&').replace('>', '>').replace('<', '<') \
|
||||||
.replace('"', '"')
|
.replace('"', '"')
|
||||||
|
@ -285,12 +263,13 @@ def enc(x, codec='ascii'):
|
||||||
|
|
||||||
def bbox2str(bbox):
|
def bbox2str(bbox):
|
||||||
(x0, y0, x1, y1) = bbox
|
(x0, y0, x1, y1) = bbox
|
||||||
return '%.3f,%.3f,%.3f,%.3f' % (x0, y0, x1, y1)
|
return '{:.3f},{:.3f},{:.3f},{:.3f}'.format(x0, y0, x1, y1)
|
||||||
|
|
||||||
|
|
||||||
def matrix2str(m):
|
def matrix2str(m):
|
||||||
(a, b, c, d, e, f) = m
|
(a, b, c, d, e, f) = m
|
||||||
return '[%.2f,%.2f,%.2f,%.2f, (%.2f,%.2f)]' % (a, b, c, d, e, f)
|
return '[{:.2f},{:.2f},{:.2f},{:.2f}, ({:.2f},{:.2f})]'\
|
||||||
|
.format(a, b, c, d, e, f)
|
||||||
|
|
||||||
|
|
||||||
def vecBetweenBoxes(obj1, obj2):
|
def vecBetweenBoxes(obj1, obj2):
|
||||||
|
@ -319,7 +298,7 @@ def vecBetweenBoxes(obj1, obj2):
|
||||||
return max(0, iw), max(0, ih)
|
return max(0, iw), max(0, ih)
|
||||||
|
|
||||||
|
|
||||||
class Plane(object):
|
class Plane:
|
||||||
"""A set-like data structure for objects placed on a plane.
|
"""A set-like data structure for objects placed on a plane.
|
||||||
|
|
||||||
Can efficiently find objects in a certain rectangular area.
|
Can efficiently find objects in a certain rectangular area.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
RM=rm -f
|
RM=rm -f
|
||||||
CMP=:
|
CMP=:
|
||||||
PYTHON=python2
|
PYTHON=python3
|
||||||
PDF2TXT=PYTHONPATH=../.. $(PYTHON) ../../tools/pdf2txt.py
|
PDF2TXT=PYTHONPATH=../.. $(PYTHON) ../../tools/pdf2txt.py
|
||||||
|
|
||||||
XMLS= \
|
XMLS= \
|
||||||
|
|
5
setup.py
5
setup.py
|
@ -10,7 +10,6 @@ setup(
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'chardet ; python_version > "3.0"',
|
'chardet ; python_version > "3.0"',
|
||||||
'pycryptodome',
|
'pycryptodome',
|
||||||
'six',
|
|
||||||
'sortedcontainers',
|
'sortedcontainers',
|
||||||
],
|
],
|
||||||
extras_require={
|
extras_require={
|
||||||
|
@ -34,13 +33,13 @@ setup(
|
||||||
'layout analysis',
|
'layout analysis',
|
||||||
'text mining',
|
'text mining',
|
||||||
],
|
],
|
||||||
|
python_requires='>=3.4',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 2.6',
|
|
||||||
'Programming Language :: Python :: 2.7',
|
|
||||||
'Programming Language :: Python :: 3.4',
|
'Programming Language :: Python :: 3.4',
|
||||||
'Programming Language :: Python :: 3.5',
|
'Programming Language :: Python :: 3.5',
|
||||||
'Programming Language :: Python :: 3.6',
|
'Programming Language :: Python :: 3.6',
|
||||||
|
'Programming Language :: Python :: 3 :: Only',
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Environment :: Console',
|
'Environment :: Console',
|
||||||
'Intended Audience :: Developers',
|
'Intended Audience :: Developers',
|
||||||
|
|
|
@ -12,31 +12,31 @@ from pdfminer.encodingdb import name2unicode
|
||||||
def test_name2unicode_name_in_agl():
|
def test_name2unicode_name_in_agl():
|
||||||
"""The name "Lcommaaccent" has a single component,
|
"""The name "Lcommaaccent" has a single component,
|
||||||
which is mapped to the string U+013B by AGL"""
|
which is mapped to the string U+013B by AGL"""
|
||||||
assert u'\u013B' == name2unicode('Lcommaaccent')
|
assert '\u013B' == name2unicode('Lcommaaccent')
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_uni():
|
def test_name2unicode_uni():
|
||||||
"""The components "Lcommaaccent," "uni013B," and "u013B"
|
"""The components "Lcommaaccent," "uni013B," and "u013B"
|
||||||
all map to the string U+013B"""
|
all map to the string U+013B"""
|
||||||
assert u'\u013B' == name2unicode('uni013B')
|
assert '\u013B' == name2unicode('uni013B')
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_uni_lowercase():
|
def test_name2unicode_uni_lowercase():
|
||||||
"""The components "Lcommaaccent," "uni013B," and "u013B"
|
"""The components "Lcommaaccent," "uni013B," and "u013B"
|
||||||
all map to the string U+013B"""
|
all map to the string U+013B"""
|
||||||
assert u'\u013B' == name2unicode('uni013b')
|
assert '\u013B' == name2unicode('uni013b')
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_uni_with_sequence_of_digits():
|
def test_name2unicode_uni_with_sequence_of_digits():
|
||||||
"""The name "uni20AC0308" has a single component,
|
"""The name "uni20AC0308" has a single component,
|
||||||
which is mapped to the string U+20AC U+0308"""
|
which is mapped to the string U+20AC U+0308"""
|
||||||
assert u'\u20AC\u0308' == name2unicode('uni20AC0308')
|
assert '\u20AC\u0308' == name2unicode('uni20AC0308')
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_uni_with_sequence_of_digits_lowercase():
|
def test_name2unicode_uni_with_sequence_of_digits_lowercase():
|
||||||
"""The name "uni20AC0308" has a single component,
|
"""The name "uni20AC0308" has a single component,
|
||||||
which is mapped to the string U+20AC U+0308"""
|
which is mapped to the string U+20AC U+0308"""
|
||||||
assert u'\u20AC\u0308' == name2unicode('uni20ac0308')
|
assert '\u20AC\u0308' == name2unicode('uni20ac0308')
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_uni_empty_string():
|
def test_name2unicode_uni_empty_string():
|
||||||
|
@ -45,7 +45,7 @@ def test_name2unicode_uni_empty_string():
|
||||||
|
|
||||||
According to the specification this should be mapped to an empty string,
|
According to the specification this should be mapped to an empty string,
|
||||||
but we also want to support lowercase hexadecimals"""
|
but we also want to support lowercase hexadecimals"""
|
||||||
assert u'\u20ac' == name2unicode('uni20ac')
|
assert '\u20ac' == name2unicode('uni20ac')
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_uni_empty_string_long():
|
def test_name2unicode_uni_empty_string_long():
|
||||||
|
@ -74,58 +74,52 @@ def test_name2unicode_uni_empty_string_long_lowercase():
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_uni_pua():
|
def test_name2unicode_uni_pua():
|
||||||
""""Ogoneksmall" and "uniF6FB" both map
|
""""Ogoneksmall" and "uniF6FB" both map to the string that corresponds to
|
||||||
to the string that corresponds to U+F6FB."""
|
U+F6FB."""
|
||||||
assert u'\uF6FB' == \
|
assert '\uF6FB' == name2unicode('uniF6FB')
|
||||||
name2unicode('uniF6FB')
|
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_uni_pua_lowercase():
|
def test_name2unicode_uni_pua_lowercase():
|
||||||
""""Ogoneksmall" and "uniF6FB" both map
|
""""Ogoneksmall" and "uniF6FB" both map to the string that corresponds to
|
||||||
to the string that corresponds to U+F6FB."""
|
U+F6FB."""
|
||||||
assert u'\uF6FB' == \
|
assert '\uF6FB' == name2unicode('unif6fb')
|
||||||
name2unicode('unif6fb')
|
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_u_with_4_digits():
|
def test_name2unicode_u_with_4_digits():
|
||||||
"""The components "Lcommaaccent," "uni013B,"
|
"""The components "Lcommaaccent," "uni013B," and "u013B" all map to the
|
||||||
and "u013B" all map to the string U+013B"""
|
string U+013B"""
|
||||||
assert u'\u013B' == \
|
assert '\u013B' == name2unicode('u013B')
|
||||||
name2unicode('u013B')
|
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_u_with_4_digits_lowercase():
|
def test_name2unicode_u_with_4_digits_lowercase():
|
||||||
"""The components "Lcommaaccent," "uni013B," and "u013B"
|
"""The components "Lcommaaccent," "uni013B," and "u013B" all map to the
|
||||||
all map to the string U+013B"""
|
string U+013B"""
|
||||||
assert u'\u013B' == \
|
assert '\u013B' == name2unicode('u013b')
|
||||||
name2unicode('u013b')
|
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_u_with_5_digits():
|
def test_name2unicode_u_with_5_digits():
|
||||||
"""The name "u1040C" has a single component, which
|
"""The name "u1040C" has a single component, which is mapped to the string
|
||||||
is mapped to the string U+1040C"""
|
U+1040C"""
|
||||||
assert u'\U0001040C' == \
|
assert '\U0001040C' == name2unicode('u1040C')
|
||||||
name2unicode('u1040C')
|
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_u_with_5_digits_lowercase():
|
def test_name2unicode_u_with_5_digits_lowercase():
|
||||||
"""The name "u1040C" has a single component, which
|
"""The name "u1040C" has a single component, which is mapped to the string
|
||||||
is mapped to the string U+1040C"""
|
U+1040C"""
|
||||||
assert u'\U0001040C' == \
|
assert '\U0001040C' == name2unicode('u1040c')
|
||||||
name2unicode('u1040c')
|
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_multiple_components():
|
def test_name2unicode_multiple_components():
|
||||||
"""The name "Lcommaaccent_uni20AC0308_u1040C.alternate"
|
"""The name "Lcommaaccent_uni20AC0308_u1040C.alternate" is mapped to the
|
||||||
is mapped to the string U+013B U+20AC U+0308 U+1040C"""
|
string U+013B U+20AC U+0308 U+1040C"""
|
||||||
assert u'\u013B\u20AC\u0308\U0001040C' == \
|
assert '\u013B\u20AC\u0308\U0001040C' == \
|
||||||
name2unicode('Lcommaaccent_uni20AC0308_u1040C.alternate')
|
name2unicode('Lcommaaccent_uni20AC0308_u1040C.alternate')
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_multiple_components_lowercase():
|
def test_name2unicode_multiple_components_lowercase():
|
||||||
"""The name "Lcommaaccent_uni20AC0308_u1040C.alternate"
|
"""The name "Lcommaaccent_uni20AC0308_u1040C.alternate" is mapped to the
|
||||||
is mapped to the string U+013B U+20AC U+0308 U+1040C"""
|
string U+013B U+20AC U+0308 U+1040C"""
|
||||||
assert u'\u013B\u20AC\u0308\U0001040C' == \
|
assert '\u013B\u20AC\u0308\U0001040C' == \
|
||||||
name2unicode('Lcommaaccent_uni20ac0308_u1040c.alternate')
|
name2unicode('Lcommaaccent_uni20ac0308_u1040c.alternate')
|
||||||
|
|
||||||
|
|
||||||
|
@ -146,7 +140,7 @@ def test_name2unicode_pua_ogoneksmall():
|
||||||
""""
|
""""
|
||||||
Ogoneksmall" and "uniF6FB" both map to the string
|
Ogoneksmall" and "uniF6FB" both map to the string
|
||||||
that corresponds to U+F6FB."""
|
that corresponds to U+F6FB."""
|
||||||
assert u'\uF6FB' == name2unicode('Ogoneksmall')
|
assert '\uF6FB' == name2unicode('Ogoneksmall')
|
||||||
|
|
||||||
|
|
||||||
def test_name2unicode_overflow_error():
|
def test_name2unicode_overflow_error():
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
"""Test of various compression/encoding modules (previously in doctests)
|
"""Test of various compression/encoding modules (previously in doctests)
|
||||||
"""
|
"""
|
||||||
import binascii
|
import binascii
|
||||||
|
|
||||||
from nose.tools import assert_equal
|
from nose.tools import assert_equal
|
||||||
|
|
||||||
from pdfminer.arcfour import Arcfour
|
from pdfminer.arcfour import Arcfour
|
||||||
|
|
|
@ -10,15 +10,14 @@ def run(sample_path, options=None):
|
||||||
absolute_path = absolute_sample_path(sample_path)
|
absolute_path = absolute_sample_path(sample_path)
|
||||||
with NamedTemporaryFile() as output_file:
|
with NamedTemporaryFile() as output_file:
|
||||||
if options:
|
if options:
|
||||||
s = 'pdf2txt -o %s %s %s' % (output_file.name,
|
s = 'pdf2txt -o{} {} {}' \
|
||||||
options, absolute_path)
|
.format(output_file.name, options, absolute_path)
|
||||||
else:
|
else:
|
||||||
s = 'pdf2txt -o %s %s' % (output_file.name, absolute_path)
|
s = 'pdf2txt -o{} {}'.format(output_file.name, absolute_path)
|
||||||
pdf2txt.main(s.split(' ')[1:])
|
pdf2txt.main(s.split(' ')[1:])
|
||||||
|
|
||||||
|
|
||||||
class TestDumpPDF():
|
class TestDumpPDF():
|
||||||
|
|
||||||
def test_jo(self):
|
def test_jo(self):
|
||||||
run('jo.pdf')
|
run('jo.pdf')
|
||||||
|
|
||||||
|
@ -65,7 +64,7 @@ class TestDumpPDF():
|
||||||
run('scancode/patchelf.pdf')
|
run('scancode/patchelf.pdf')
|
||||||
|
|
||||||
|
|
||||||
class TestDumpImages(object):
|
class TestDumpImages:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def extract_images(input_file):
|
def extract_images(input_file):
|
||||||
|
|
|
@ -4,7 +4,7 @@ from pdfminer.layout import LTComponent
|
||||||
from pdfminer.utils import Plane, shorten_str
|
from pdfminer.utils import Plane, shorten_str
|
||||||
|
|
||||||
|
|
||||||
class TestPlane(object):
|
class TestPlane:
|
||||||
def test_find_nothing_in_empty_bbox(self):
|
def test_find_nothing_in_empty_bbox(self):
|
||||||
plane, _ = self.given_plane_with_one_object()
|
plane, _ = self.given_plane_with_one_object()
|
||||||
result = list(plane.find((50, 50, 100, 100)))
|
result = list(plane.find((50, 50, 100, 100)))
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
import sys
|
import sys
|
||||||
import fileinput
|
import fileinput
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
|
|
||||||
def main(argv):
|
def main(argv):
|
||||||
fonts = {}
|
fonts = {}
|
||||||
|
@ -37,8 +35,8 @@ def main(argv):
|
||||||
props[k] = tuple(map(float, f[1:5]))
|
props[k] = tuple(map(float, f[1:5]))
|
||||||
print('# -*- python -*-')
|
print('# -*- python -*-')
|
||||||
print('FONT_METRICS = {')
|
print('FONT_METRICS = {')
|
||||||
for (fontname, (props, chars)) in six.iteritems(fonts):
|
for (fontname, (props, chars)) in fonts.items():
|
||||||
print(' %r: %r,' % (fontname, (props, chars)))
|
print(' {!r}: {!r},'.format(fontname, (props, chars)))
|
||||||
print('}')
|
print('}')
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,11 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
try:
|
|
||||||
import cPickle as pickle
|
|
||||||
except ImportError:
|
|
||||||
import pickle as pickle
|
import pickle as pickle
|
||||||
import codecs
|
import codecs
|
||||||
import six
|
|
||||||
|
|
||||||
|
|
||||||
class CMapConverter(object):
|
class CMapConverter:
|
||||||
|
|
||||||
def __init__(self, enc2codec={}):
|
def __init__(self, enc2codec={}):
|
||||||
self.enc2codec = enc2codec
|
self.enc2codec = enc2codec
|
||||||
|
@ -58,8 +54,6 @@ class CMapConverter(object):
|
||||||
|
|
||||||
def put(dmap, code, cid, force=False):
|
def put(dmap, code, cid, force=False):
|
||||||
for b in code[:-1]:
|
for b in code[:-1]:
|
||||||
if six.PY2:
|
|
||||||
b = ord(b)
|
|
||||||
if b in dmap:
|
if b in dmap:
|
||||||
dmap = dmap[b]
|
dmap = dmap[b]
|
||||||
else:
|
else:
|
||||||
|
@ -67,8 +61,6 @@ class CMapConverter(object):
|
||||||
dmap[b] = d
|
dmap[b] = d
|
||||||
dmap = d
|
dmap = d
|
||||||
b = code[-1]
|
b = code[-1]
|
||||||
if six.PY2:
|
|
||||||
b = ord(b)
|
|
||||||
if force or ((b not in dmap) or dmap[b] == cid):
|
if force or ((b not in dmap) or dmap[b] == cid):
|
||||||
dmap[b] = cid
|
dmap[b] = cid
|
||||||
return
|
return
|
||||||
|
|
|
@ -19,8 +19,8 @@ def main(argv):
|
||||||
state = 1
|
state = 1
|
||||||
(name, x) = line.split(';')
|
(name, x) = line.split(';')
|
||||||
codes = x.split(' ')
|
codes = x.split(' ')
|
||||||
print(' %r: u\'%s\',' % (name,
|
print(' {!r}: u\'{}\','
|
||||||
''.join('\\u%s' % code for code in codes)))
|
.format(name, ''.join('\\u%s' % code for code in codes)))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -5,8 +5,6 @@ import re
|
||||||
import sys
|
import sys
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
from pdfminer.pdfdocument import PDFDocument, PDFNoOutlines
|
from pdfminer.pdfdocument import PDFDocument, PDFNoOutlines
|
||||||
from pdfminer.pdfpage import PDFPage
|
from pdfminer.pdfpage import PDFPage
|
||||||
from pdfminer.pdfparser import PDFParser
|
from pdfminer.pdfparser import PDFParser
|
||||||
|
@ -21,7 +19,7 @@ ESC_PAT = re.compile(r'[\000-\037&<>()"\042\047\134\177-\377]')
|
||||||
|
|
||||||
|
|
||||||
def e(s):
|
def e(s):
|
||||||
if six.PY3 and isinstance(s, six.binary_type):
|
if isinstance(s, bytes):
|
||||||
s = str(s, 'latin-1')
|
s = str(s, 'latin-1')
|
||||||
return ESC_PAT.sub(lambda m: '&#%d;' % ord(m.group(0)), s)
|
return ESC_PAT.sub(lambda m: '&#%d;' % ord(m.group(0)), s)
|
||||||
|
|
||||||
|
@ -33,7 +31,7 @@ def dumpxml(out, obj, codec=None):
|
||||||
|
|
||||||
if isinstance(obj, dict):
|
if isinstance(obj, dict):
|
||||||
out.write('<dict size="%d">\n' % len(obj))
|
out.write('<dict size="%d">\n' % len(obj))
|
||||||
for (k, v) in six.iteritems(obj):
|
for (k, v) in obj.items():
|
||||||
out.write('<key>%s</key>\n' % k)
|
out.write('<key>%s</key>\n' % k)
|
||||||
out.write('<value>')
|
out.write('<value>')
|
||||||
dumpxml(out, v)
|
dumpxml(out, v)
|
||||||
|
@ -49,7 +47,7 @@ def dumpxml(out, obj, codec=None):
|
||||||
out.write('</list>')
|
out.write('</list>')
|
||||||
return
|
return
|
||||||
|
|
||||||
if isinstance(obj, (six.string_types, six.binary_type)):
|
if isinstance(obj, ((str,), bytes)):
|
||||||
out.write('<string size="%d">%s</string>' % (len(obj), e(obj)))
|
out.write('<string size="%d">%s</string>' % (len(obj), e(obj)))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -122,8 +120,8 @@ def dumpoutline(outfp, fname, objids, pagenos, password='',
|
||||||
fp = open(fname, 'rb')
|
fp = open(fname, 'rb')
|
||||||
parser = PDFParser(fp)
|
parser = PDFParser(fp)
|
||||||
doc = PDFDocument(parser, password)
|
doc = PDFDocument(parser, password)
|
||||||
pages = dict((page.pageid, pageno) for (pageno, page)
|
pages = {page.pageid: pageno for (pageno, page)
|
||||||
in enumerate(PDFPage.create_pages(doc), 1))
|
in enumerate(PDFPage.create_pages(doc), 1)}
|
||||||
|
|
||||||
def resolve_dest(dest):
|
def resolve_dest(dest):
|
||||||
if isinstance(dest, str):
|
if isinstance(dest, str):
|
||||||
|
@ -153,7 +151,7 @@ def dumpoutline(outfp, fname, objids, pagenos, password='',
|
||||||
dest = resolve_dest(action['D'])
|
dest = resolve_dest(action['D'])
|
||||||
pageno = pages[dest[0].objid]
|
pageno = pages[dest[0].objid]
|
||||||
s = e(title).encode('utf-8', 'xmlcharrefreplace')
|
s = e(title).encode('utf-8', 'xmlcharrefreplace')
|
||||||
outfp.write('<outline level="%r" title="%s">\n' % (level, s))
|
outfp.write('<outline level="{!r}" title="{}">\n'.format(level, s))
|
||||||
if dest is not None:
|
if dest is not None:
|
||||||
outfp.write('<dest>')
|
outfp.write('<dest>')
|
||||||
dumpxml(outfp, dest)
|
dumpxml(outfp, dest)
|
||||||
|
@ -317,8 +315,6 @@ def main(argv=None):
|
||||||
pagenos = set()
|
pagenos = set()
|
||||||
|
|
||||||
password = args.password
|
password = args.password
|
||||||
if six.PY2 and sys.stdin.encoding:
|
|
||||||
password = password.decode(sys.stdin.encoding)
|
|
||||||
|
|
||||||
if args.raw_stream:
|
if args.raw_stream:
|
||||||
codec = 'raw'
|
codec = 'raw'
|
||||||
|
|
|
@ -4,8 +4,6 @@ import argparse
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
import pdfminer.high_level
|
import pdfminer.high_level
|
||||||
import pdfminer.layout
|
import pdfminer.layout
|
||||||
|
|
||||||
|
@ -25,13 +23,6 @@ def extract_text(files=[], outfile='-',
|
||||||
password="", scale=1.0, rotation=0, layoutmode='normal',
|
password="", scale=1.0, rotation=0, layoutmode='normal',
|
||||||
output_dir=None, debug=False, disable_caching=False,
|
output_dir=None, debug=False, disable_caching=False,
|
||||||
**kwargs):
|
**kwargs):
|
||||||
if '_py2_no_more_posargs' in kwargs is not None:
|
|
||||||
raise DeprecationWarning(
|
|
||||||
'The `_py2_no_more_posargs will be removed on January, 2020. At '
|
|
||||||
'that moment pdfminer.six will stop supporting Python 2. Please '
|
|
||||||
'upgrade to Python 3. For more information see '
|
|
||||||
'https://github.com/pdfminer/pdfminer .six/issues/194')
|
|
||||||
|
|
||||||
if not files:
|
if not files:
|
||||||
raise ValueError("Must provide files to work upon!")
|
raise ValueError("Must provide files to work upon!")
|
||||||
|
|
||||||
|
@ -179,12 +170,9 @@ def main(args=None):
|
||||||
A = P.parse_args(args=args)
|
A = P.parse_args(args=args)
|
||||||
|
|
||||||
if A.page_numbers:
|
if A.page_numbers:
|
||||||
A.page_numbers = set([x-1 for x in A.page_numbers])
|
A.page_numbers = {x-1 for x in A.page_numbers}
|
||||||
if A.pagenos:
|
if A.pagenos:
|
||||||
A.page_numbers = set([int(x)-1 for x in A.pagenos.split(",")])
|
A.page_numbers = {int(x)-1 for x in A.pagenos.split(",")}
|
||||||
|
|
||||||
if six.PY2 and sys.stdin.encoding:
|
|
||||||
A.password = A.password.decode(sys.stdin.encoding)
|
|
||||||
|
|
||||||
if A.output_type == "text" and A.outfile != "-":
|
if A.output_type == "text" and A.outfile != "-":
|
||||||
for override, alttype in OUTPUT_TYPES:
|
for override, alttype in OUTPUT_TYPES:
|
||||||
|
|
|
@ -3,11 +3,13 @@
|
||||||
"""
|
"""
|
||||||
compares rwo pdf files.
|
compares rwo pdf files.
|
||||||
"""
|
"""
|
||||||
from pdfminer import high_level, layout
|
import io
|
||||||
import sys
|
|
||||||
import logging
|
import logging
|
||||||
import six
|
import sys
|
||||||
|
|
||||||
import pdfminer.settings
|
import pdfminer.settings
|
||||||
|
from pdfminer import high_level, layout
|
||||||
|
|
||||||
pdfminer.settings.STRICT = False
|
pdfminer.settings.STRICT = False
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,13 +17,6 @@ logging.basicConfig()
|
||||||
|
|
||||||
|
|
||||||
def compare(file1, file2, **kwargs):
|
def compare(file1, file2, **kwargs):
|
||||||
if '_py2_no_more_posargs' in kwargs is not None:
|
|
||||||
raise DeprecationWarning(
|
|
||||||
'The `_py2_no_more_posargs will be removed on January, 2020. At '
|
|
||||||
'that moment pdfminer.six will stop supporting Python 2. Please '
|
|
||||||
'upgrade to Python 3. For more information see '
|
|
||||||
'https://github.com/pdfminer/pdfminer .six/issues/194')
|
|
||||||
|
|
||||||
# If any LAParams group arguments were passed,
|
# If any LAParams group arguments were passed,
|
||||||
# create an LAParams object and
|
# create an LAParams object and
|
||||||
# populate with given args. Otherwise, set it to None.
|
# populate with given args. Otherwise, set it to None.
|
||||||
|
@ -33,12 +28,15 @@ def compare(file1, file2, **kwargs):
|
||||||
if paramv is not None:
|
if paramv is not None:
|
||||||
laparams[param] = paramv
|
laparams[param] = paramv
|
||||||
kwargs['laparams'] = laparams
|
kwargs['laparams'] = laparams
|
||||||
s1 = six.StringIO()
|
|
||||||
|
s1 = io.StringIO()
|
||||||
with open(file1, "rb") as fp:
|
with open(file1, "rb") as fp:
|
||||||
high_level.extract_text_to_fp(fp, s1, **kwargs)
|
high_level.extract_text_to_fp(fp, s1, **kwargs)
|
||||||
s2 = six.StringIO()
|
|
||||||
|
s2 = io.StringIO()
|
||||||
with open(file2, "rb") as fp:
|
with open(file2, "rb") as fp:
|
||||||
high_level.extract_text_to_fp(fp, s2, **kwargs)
|
high_level.extract_text_to_fp(fp, s2, **kwargs)
|
||||||
|
|
||||||
import difflib
|
import difflib
|
||||||
s1.seek(0)
|
s1.seek(0)
|
||||||
s2.seek(0)
|
s2.seek(0)
|
||||||
|
@ -122,12 +120,9 @@ def main(args=None):
|
||||||
logging.getLogger().setLevel(logging.DEBUG)
|
logging.getLogger().setLevel(logging.DEBUG)
|
||||||
|
|
||||||
if A.page_numbers:
|
if A.page_numbers:
|
||||||
A.page_numbers = set([x-1 for x in A.page_numbers])
|
A.page_numbers = {x-1 for x in A.page_numbers}
|
||||||
if A.pagenos:
|
if A.pagenos:
|
||||||
A.page_numbers = set([int(x)-1 for x in A.pagenos.split(",")])
|
A.page_numbers = {int(x)-1 for x in A.pagenos.split(",")}
|
||||||
|
|
||||||
if six.PY2 and sys.stdin.encoding:
|
|
||||||
A.password = A.password.decode(sys.stdin.encoding)
|
|
||||||
|
|
||||||
if A.output_type == "text" and A.outfile != "-":
|
if A.output_type == "text" and A.outfile != "-":
|
||||||
for override, alttype in ((".htm", "html"),
|
for override, alttype in ((".htm", "html"),
|
||||||
|
|
Loading…
Reference in New Issue