From 7a798f8724a3f519dfa7db3cf2245082d0c2f2e3 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 4 Mar 2015 00:00:18 +1100 Subject: [PATCH 1/2] 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 cf1922c9e..5d08abfa5 100644 --- a/PIL/ImageFont.py +++ b/PIL/ImageFont.py @@ -133,6 +133,11 @@ class FreeTypeFont: 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 @@ class FreeTypeFont: 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 1f935088c..1b03ed13b 100644 --- a/Tests/test_imagefont.py +++ b/Tests/test_imagefont.py @@ -44,6 +44,22 @@ try: 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) From fb3fe4b8770941deb3e8da9f2f7ed85b0fef5d92 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sat, 7 Mar 2015 18:38:17 +1100 Subject: [PATCH 2/2] Added documentation for font_variant() [ci skip] --- PIL/ImageFont.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/PIL/ImageFont.py b/PIL/ImageFont.py index 5d08abfa5..8f60ddb00 100644 --- a/PIL/ImageFont.py +++ b/PIL/ImageFont.py @@ -168,6 +168,15 @@ class FreeTypeFont: return im, offset def font_variant(self, font=None, size=None, index=None, encoding=None): + """ + Create a copy of this FreeTypeFont object, + using any specified arguments to override the settings. + + Parameters are identical to the parameters used to initialize this object, + minus the deprecated 'file' argument. + + :return: A FreeTypeFont object. + """ 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,