Skip to content

Commit

Permalink
Merge pull request #6386 from dawidcrivelli/handle_pcf_missing_charac…
Browse files Browse the repository at this point in the history
…ters

Handle PCF fonts files with less than 256 characters
  • Loading branch information
hugovk committed Jun 27, 2022
2 parents bc6a024 + 93805d5 commit 714ff4e
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 6 deletions.
Binary file added Tests/fonts/10x20-ISO8859-1-fewer-characters.pcf
Binary file not shown.
8 changes: 8 additions & 0 deletions Tests/test_font_pcf.py
Expand Up @@ -49,6 +49,14 @@ def test_sanity(request, tmp_path):
save_font(request, tmp_path)


def test_less_than_256_characters():
with open("Tests/fonts/10x20-ISO8859-1-fewer-characters.pcf", "rb") as test_file:
font = PcfFontFile.PcfFontFile(test_file)
assert isinstance(font, FontFile.FontFile)
# check the number of characters in the font
assert len([_f for _f in font.glyph if _f]) == 127


def test_invalid_file():
with open("Tests/images/flower.jpg", "rb") as fp:
with pytest.raises(SyntaxError):
Expand Down
10 changes: 4 additions & 6 deletions src/PIL/PcfFontFile.py
Expand Up @@ -84,8 +84,7 @@ def __init__(self, fp, charset_encoding="iso8859-1"):
#
# create glyph structure

for ch in range(256):
ix = encoding[ch]
for ch, ix in enumerate(encoding):
if ix is not None:
x, y, l, r, w, a, d, f = metrics[ix]
glyph = (w, 0), (l, d - y, x + l, d), (0, 0, x, y), bitmaps[ix]
Expand Down Expand Up @@ -219,10 +218,6 @@ def _load_bitmaps(self, metrics):
return bitmaps

def _load_encoding(self):

# map character code to bitmap index
encoding = [None] * 256

fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS)

first_col, last_col = i16(fp.read(2)), i16(fp.read(2))
Expand All @@ -232,6 +227,9 @@ def _load_encoding(self):

nencoding = (last_col - first_col + 1) * (last_row - first_row + 1)

# map character code to bitmap index
encoding = [None] * min(256, nencoding)

encoding_offsets = [i16(fp.read(2)) for _ in range(nencoding)]

for i in range(first_col, len(encoding)):
Expand Down

0 comments on commit 714ff4e

Please sign in to comment.