Отсечение при рендеринге кхмерского текста с использованием Pillow и libraqm
Я использую библиотеку Python Pillow для рисования кхмерского текста на изображении. Я использую libraqm, который упаковывает FreeType и HarfBuzz для поддержки сложной компоновки (layout_engine=ImageFont.LAYOUT_RAQM
).
При визуализации некоторый текст смещается вправо и, следовательно, обрезается ограничительной рамкой. Сравните первый рендеринг ниже (с помощью подушки) со вторым (в MS Word). Я показал ограничивающую рамку красным цветом.
Кхмерский, предоставленный MS Word
Код для воспроизведения эффекта отсечения:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
img = Image.new("RGB", (512, 512), "white")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("Battambang-Regular.ttf", 60, layout_engine=ImageFont.LAYOUT_RAQM)
text = "លោកុប្បត្តិ"
draw.text((0, 0), text, (0, 0, 0), font=font)
img.save('out.png')
Я использую следующие версии на Ubuntu 14.04.3 LTS:
- Python 3.4.3
- Подушка 5.3.0.dev0
- libfreetype6: 2.5.2-1ubuntu2.8
- libharfbuzz0b: 0.9.27-1ubuntu1.1