From 7a798f8724a3f519dfa7db3cf2245082d0c2f2e3 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 4 Mar 2015 00:00:18 +1100 Subject: [PATCH] Added copy method font_variant() and accessible properties to truetype() --- PIL/ImageFont.py | 11 +++++++++++ Tests/test_imagefont.py | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/PIL/ImageFont.py b/PIL/ImageFont.py index cf1922c9e0d..5d08abfa591 100644 --- a/PIL/ImageFont.py +++ b/PIL/ImageFont.py @@ -133,6 +133,11 @@ def __init__(self, font=None, size=10, index=0, encoding="", file=None): DeprecationWarning) font = file + self.path = font + self.size = size + self.index = index + self.encoding = encoding + if isPath(font): self.font = core.getfont(font, size, index, encoding) else: @@ -162,6 +167,12 @@ def getmask2(self, text, mode="", fill=Image.core.fill): self.font.render(text, im.id, mode == "1") return im, offset + def font_variant(self, font=None, size=None, index=None, encoding=None): + return FreeTypeFont(font = self.path if font == None else font, + size = self.size if size == None else size, + index = self.index if index == None else index, + encoding = self.encoding if encoding == None else encoding) + ## # Wrapper that creates a transposed font from any existing font # object. diff --git a/Tests/test_imagefont.py b/Tests/test_imagefont.py index 1f935088cd7..1b03ed13b1c 100644 --- a/Tests/test_imagefont.py +++ b/Tests/test_imagefont.py @@ -44,6 +44,22 @@ def test_sanity(self): self.assertRegexpMatches( ImageFont.core.freetype2_version, "\d+\.\d+\.\d+$") + def test_font_properties(self): + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) + self.assertEqual(ttf.path, FONT_PATH) + self.assertEqual(ttf.size, FONT_SIZE) + + ttf_copy = ttf.font_variant() + self.assertEqual(ttf_copy.path, FONT_PATH) + self.assertEqual(ttf_copy.size, FONT_SIZE) + + ttf_copy = ttf.font_variant(size=FONT_SIZE+1) + self.assertEqual(ttf_copy.size, FONT_SIZE+1) + + second_font_path = "Tests/fonts/DejaVuSans.ttf" + ttf_copy = ttf.font_variant(font=second_font_path) + self.assertEqual(ttf_copy.path, second_font_path) + def test_font_with_name(self): ImageFont.truetype(FONT_PATH, FONT_SIZE) self._render(FONT_PATH)