Pillow/Tests/test_imagefontctl.py

158 lines
5.3 KiB
Python
Raw Normal View History

2016-02-03 14:24:10 +03:00
# -*- coding: utf-8 -*-
from .helper import unittest, PillowTestCase
from PIL import Image, ImageDraw, ImageFont, features
2016-12-15 13:43:02 +03:00
2016-02-03 14:24:10 +03:00
FONT_SIZE = 20
FONT_PATH = "Tests/fonts/DejaVuSans.ttf"
2018-03-03 12:54:00 +03:00
@unittest.skipUnless(features.check('raqm'), "Raqm Library is not installed.")
class TestImagecomplextext(PillowTestCase):
2016-02-03 14:24:10 +03:00
def test_english(self):
2018-06-15 12:40:04 +03:00
# smoke test, this should not fail
ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
draw.text((0, 0), 'TEST', font=ttf, fill=500, direction='ltr')
2018-01-27 09:07:24 +03:00
def test_complex_text(self):
ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
2016-02-03 14:24:10 +03:00
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
draw.text((0, 0), 'اهلا عمان', font=ttf, fill=500)
2016-02-03 14:24:10 +03:00
target = 'Tests/images/test_text.png'
target_img = Image.open(target)
2016-02-03 14:24:10 +03:00
self.assert_image_similar(im, target_img, .5)
2016-02-03 14:24:10 +03:00
def test_y_offset(self):
2018-06-24 15:32:25 +03:00
ttf = ImageFont.truetype("Tests/fonts/NotoNastaliqUrdu-Regular.ttf",
FONT_SIZE)
2016-02-03 14:24:10 +03:00
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
draw.text((0, 0), 'العالم العربي', font=ttf, fill=500)
2016-02-03 14:24:10 +03:00
target = 'Tests/images/test_y_offset.png'
target_img = Image.open(target)
2016-02-03 14:24:10 +03:00
2017-06-21 21:27:30 +03:00
self.assert_image_similar(im, target_img, 1.7)
2016-02-03 14:24:10 +03:00
def test_complex_unicode_text(self):
ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
2016-02-03 14:24:10 +03:00
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
2017-06-29 11:50:29 +03:00
draw.text((0, 0), 'السلام عليكم', font=ttf, fill=500)
2016-02-03 14:24:10 +03:00
target = 'Tests/images/test_complex_unicode_text.png'
target_img = Image.open(target)
2016-02-03 14:24:10 +03:00
self.assert_image_similar(im, target_img, .5)
2016-02-03 14:24:10 +03:00
2019-04-11 08:36:33 +03:00
ttf = ImageFont.truetype("Tests/fonts/KhmerOSBattambang-Regular.ttf",
FONT_SIZE)
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
draw.text((0, 0), 'លោកុប្បត្តិ', font=ttf, fill=500)
target = 'Tests/images/test_complex_unicode_text2.png'
target_img = Image.open(target)
self.assert_image_similar(im, target_img, 2.3)
def test_text_direction_rtl(self):
ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
2016-02-03 14:24:10 +03:00
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
draw.text((0, 0), 'English عربي', font=ttf, fill=500, direction='rtl')
2016-02-03 14:24:10 +03:00
target = 'Tests/images/test_direction_rtl.png'
target_img = Image.open(target)
2016-02-03 14:24:10 +03:00
self.assert_image_similar(im, target_img, .5)
2016-02-03 14:24:10 +03:00
def test_text_direction_ltr(self):
ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
2016-02-03 14:24:10 +03:00
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
2018-06-24 15:32:25 +03:00
draw.text((0, 0), 'سلطنة عمان Oman',
font=ttf, fill=500, direction='ltr')
2016-02-03 14:24:10 +03:00
target = 'Tests/images/test_direction_ltr.png'
target_img = Image.open(target)
2016-02-03 14:24:10 +03:00
self.assert_image_similar(im, target_img, .5)
2016-02-03 14:24:10 +03:00
def test_text_direction_rtl2(self):
ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
2016-02-03 14:24:10 +03:00
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
2018-06-24 15:32:25 +03:00
draw.text((0, 0), 'Oman سلطنة عمان',
font=ttf, fill=500, direction='rtl')
2016-02-03 14:24:10 +03:00
target = 'Tests/images/test_direction_ltr.png'
target_img = Image.open(target)
2016-02-03 14:24:10 +03:00
self.assert_image_similar(im, target_img, .5)
2016-02-03 14:24:10 +03:00
def test_ligature_features(self):
ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
2016-02-03 14:24:10 +03:00
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
draw.text((0, 0), 'filling', font=ttf, fill=500, features=['-liga'])
target = 'Tests/images/test_ligature_features.png'
target_img = Image.open(target)
2016-02-03 14:24:10 +03:00
self.assert_image_similar(im, target_img, .5)
2016-02-03 14:24:10 +03:00
2017-07-01 00:57:57 +03:00
liga_size = ttf.getsize('fi', features=['-liga'])
2018-03-06 11:53:07 +03:00
self.assertEqual(liga_size, (13, 19))
2018-01-27 09:07:24 +03:00
def test_kerning_features(self):
ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
2016-02-03 14:24:10 +03:00
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
draw.text((0, 0), 'TeToAV', font=ttf, fill=500, features=['-kern'])
2016-02-03 14:24:10 +03:00
target = 'Tests/images/test_kerning_features.png'
target_img = Image.open(target)
2016-02-03 14:24:10 +03:00
self.assert_image_similar(im, target_img, .5)
2016-02-03 14:24:10 +03:00
def test_arabictext_features(self):
ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
2016-02-03 14:24:10 +03:00
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
2018-06-24 15:32:25 +03:00
draw.text((0, 0), 'اللغة العربية', font=ttf, fill=500,
features=['-fina', '-init', '-medi'])
2016-02-03 14:24:10 +03:00
target = 'Tests/images/test_arabictext_features.png'
target_img = Image.open(target)
2016-02-03 14:24:10 +03:00
self.assert_image_similar(im, target_img, .5)
def test_language(self):
ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
im = Image.new(mode='RGB', size=(300, 100))
draw = ImageDraw.Draw(im)
draw.text((0, 0), 'абвг', font=ttf, fill=500,
language='sr')
2019-03-06 07:38:05 +03:00
target = 'Tests/images/test_language.png'
target_img = Image.open(target)
2019-03-06 07:38:05 +03:00
self.assert_image_similar(im, target_img, .5)