Сообщить об ошибке.

Подмодуль ImageDraw модуля Pillow в Python

Создания графики и надписей на лету

Подмодуль ImageDraw предоставляет простую 2D-графику для объектов изображения. Этот модуль можно использовать для создания новых изображений, комментирования или ретуширования существующих изображений, а также для создания графики на лету для использования в Интернете.

Содержание:


Общие сведения о подмодуле ImageDraw.

Координаты.

Графический интерфейс использует ту же систему координат, что и сам Pillow, с (0, 0) в верхнем левом углу. Любые пиксели, нарисованные за пределами изображения, будут отброшены.

Пример :

from PIL import ImageDraw, ImageGrab
import time

# 2 секунды на выбор 
# окна для скриншота
time.sleep(2)
# создание скриншота выбранного окна
img = ImageGrab.grab()
# сохраним для дальнейшей работы
img.save('test1.png')

# используем в качестве полотна для 
# рисования изображение скриншота
draw = ImageDraw.Draw(img)
# перечеркнем скриншот
draw.line((0, 0) + im.size, fill=128, width=3)
draw.line((0, im.size[1], im.size[0], 0), fill=128, width=3)
# смотрим что получилось
img.save('test1.png')

Цвета.

Чтобы указать цвета, можно использовать числа или кортежи так же, как использует функция PIL.Image.new() или метод Image.putpixel(). Для изображений 1, L и I используются целые числа. Для изображений RGB используются тройные кортежи, содержащую целые значения или цветовой хеш (как в web). Для изображений F используются целые числа или значения float.

Шрифты.

Pillow может использовать растровые шрифты или шрифты OpenType/TrueType.

Растровые шрифты хранятся в собственном формате библиотеки Pillow, где каждый шрифт обычно состоит из двух файлов, один из которых называется .pil, а другой - .pbm. Первый содержит метрики шрифта, второй - растровые данные.

Чтобы загрузить растровый шрифт, необходимо использовать функцию ImageFont.load(). Чтобы загрузить шрифт OpenType/TrueType, необходимо использовать функцию ImageFont.truetype(). Обратите внимание, что эта функция зависит от сторонних библиотек и может быть недоступна во всех сборках Pillow.

Пример загрузки шрифтов:

from PIL import ImageFont, ImageDraw

draw = ImageDraw.Draw(image)

# растровый шрифт
font = ImageFont.load("arial.pil")
draw.text((10, 10), "hello", font=font)

# TrueType шрифт
font = ImageFont.truetype("arial.ttf", 15)
draw.text((10, 25), "world", font=font)

Пример текста с частичной прозрачностью (полупрозрачный):

from PIL import Image, ImageDraw, ImageFont

with Image.open("test.jpg").convert("RGBA") as img:
    # пустое изображение для текста, инициализировать прозрачным цветом текста
    txt = Image.new("RGBA", base.size, (255, 255, 255, 0))

    # подключаем шрифт
    fnt = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeSans.ttf", size=100)
    # контекст для рисования
    d = ImageDraw.Draw(txt)

    # наносим полупрозрачный текст
    d.text((10, 10), "DOCS-Python.ru", font=fnt, fill=(255, 255, 255, 128))
    # наносим непрозрачный текст
    d.text((10, 200), "Pillow", font=fnt, fill=(255, 255, 255, 255))
    
    # объединяем оба изображения
    out = Image.alpha_composite(img, txt)
    # смотрим что получилось
    out.save('test_text.png')

Пример многострочного текста:

from PIL import Image, ImageDraw, ImageFont

out = Image.new("RGB", (500, 250), (255, 255, 255))
fnt = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeSans.ttf", size=50)
d = ImageDraw.Draw(out)

# многострочный текст
d.multiline_text((100, 100), "Hello\nWorld", font=fnt, fill=(50, 50, 50))
# смотрим что получилось
out.save('multiline_text.png')

Понимание термина "привязка текста".

Якорь привязки задается двухсимвольной строкой. Первый символ - горизонтальное выравнивание, второй - вертикальное выравнивание. Например, значение по умолчанию la для горизонтального текста означает текст, выровненный по левому краю.

При рисовании текста с помощью ImageDraw.text() с определенной привязкой (аргумент anchor), текст будет размещен таким образом, что указанная точка привязки находится в координатах xy.

Например, для следующего кода справедливо изображение ниже:

from PIL import Image, ImageDraw, ImageFont

font = ImageFont.truetype("Tests/fonts/NotoSans-Regular.ttf", 48)
im = Image.new("RGB", (200, 200), "white")
d = ImageDraw.Draw(im)
d.line(((0, 100), (200, 100)), "gray")
d.line(((100, 0), (100, 200)), "gray")
d.text((100, 100), "Quick", fill="black", anchor="ms", font=font)

На следующем изображении текст выровнен по ms (средней базовой линии) с xy на пересечении двух линий:

Указание привязки текста

Возможные значения аргумента anchor с примерами выравнивания:

значения аргумента `anchor`

Создание контекста для рисования.

Синтаксис:

from PIL import ImageDraw

draw = ImageDraw.Draw(img, mode=None)

Параметры:

  • img - объект изображения для рисования, открытое (PIL.Image.open()) или созданное при помощи PIL.Image.new() или другими способами.
  • mode=None - необязательный режим. Для изображений RGB этот аргумент может быть RGB или RGBA (чтобы смешать рисунок с изображением). Для всех остальных режимов этот аргумент должен совпадать с [режимом изображения][]. Если этот параметр опущен, то по умолчанию используется режим исходного изображения.

Возвращаемое значение:

Описание:

Функция ImageDraw.Draw() модуля Pillow cоздает объект, который можно использовать для рисования на данном изображении img.

Обратите внимание, что изображение будет изменено на месте.

Атрибуты и методы контекста рисования ImageDraw.


Атрибуты объекта ImageDraw.

ImageDraw.fill: bool = False:

Свойство ImageDraw.fill определяет, следует ли использовать ImageDraw.ink в качестве цвета заливки или контура.

ImageDraw.font:

Свойство ImageDraw.font возвращает текущий шрифт по умолчанию.

Может быть установлен для каждого экземпляра ImageDraw:

from PIL import ImageDraw, ImageFont

draw = ImageDraw.Draw(image)
draw.font = ImageFont.truetype("path/to/FreeMono.ttf")

Или глобально для всех будущих экземпляров ImageDraw:

from PIL import ImageDraw, ImageFont

ImageDraw.ImageDraw.font = ImageFont.truetype("path/to/FreeMono.ttf")

ImageDraw.fontmode:

Свойство ImageDraw.fontmode текущий режим рисования шрифтом.

Возвращает/принимает значения:

  • 'L' - включает сглаживание;
  • '1' - отключает сглаживание.

ImageDraw.ink: int:

Свойство ImageDraw.ink внутреннее представление текущего цвета по умолчанию.

Методы объекта ImageDraw.

ImageDraw.getfont():

Метод ImageDraw.getfont() получает текущий шрифт по умолчанию, смотрите ImageDraw.font. Возвращает шрифт, установленный по умолчанию для изображения.

Если текущий шрифт по умолчанию - None, то его можно инициализировать с помощью функции PIL.ImageFont.load_default().

ImageDraw.arc(xy, start, end, fill=None, width=0):

Метод ImageDraw.arc() рисует дугу (часть контура круга) между начальным start и конечным end углами внутри заданной ограничивающей рамки xy.

Принимаемые аргументы:

  • xy: Две точки для определения ограничивающей рамки. Последовательность [(x0, y0), (x1, y1)] или [x0, y0, x1, y1], где x1 >= x0 and y1 >= y0.
  • start: Начальный угол, в градусах. Углы измеряются от 3 часов, увеличиваясь по часовой стрелке.
  • end: Конечный угол, в градусах.
  • fill: Цвет линии.
  • width: Толщина линии, в пикселях.

ImageDraw.bitmap(xy, bitmap, fill=None):

Метод ImageDraw.bitmap() рисует растровое изображение (маску) в заданной позиции, используя текущий цвет заливки для ненулевых частей.

Растровое изображение должно иметь допустимую маску прозрачности (режим '1') или изображение с альфа-каналом (режим 'L' или 'RGBA').

Метод эквивалентен выполнению метода Image.paste(xy, color, bitmap). Чтобы вставить данные пикселей в изображение, используйте метод Image.paste() для самого изображения.

ImageDraw.chord(xy, start, end, fill=None, outline=None, width=1):

Метод ImageDraw.chord() делает то же, что и ImageDraw.arc(), но соединяет конечные точки прямой линией.

Принимаемые аргументы:

  • xy: Две точки для определения ограничивающей рамки. Последовательность [(x0, y0), (x1, y1)] или [x0, y0, x1, y1], где x1 >= x0 and y1 >= y0.
  • start: Начальный угол, в градусах. Углы измеряются от 3 часов, увеличиваясь по часовой стрелке.
  • end: Конечный угол, в градусах.
  • fill: Цвет заливки.
  • outline: Цвет контура.
  • width: Толщина линии, в пикселях.

ImageDraw.ellipse(xy, fill=None, outline=None, width=1):

Метод ImageDraw.ellipse() рисует эллипс внутри заданной ограничивающей рамки xy.

Принимаемые аргументы:

  • xy: Две точки для определения ограничивающей рамки. Последовательность [(x0, y0), (x1, y1)] или [x0, y0, x1, y1], где x1 >= x0 and y1 >= y0.
  • outline: Цвет контура.
  • fill: Цвет заливки.
  • width: Толщина линии, в пикселях.

ImageDraw.line(xy, fill=None, width=0, joint=None):

Метод ImageDraw.line() рисует линию между координатами в списке xy.

PARAMETERS:- xy: Последовательность двойных кортежей с пиксельными координатами, таких как [(x, y), (x, y), ...] или числовые значения, такие как [x, y, x, y, ...].- fill: Цвет линии.- width: Толщина линии, в пикселях.- joint: Тип соединения между последовательностью точек (для ломаной линии). Это может быть 'curve' (закругленные края) или None.

ImageDraw.pieslice(xy, start, end, fill=None, outline=None, width=1):

Метод ImageDraw.pieslice() делает то же, что и дуга, но также рисует прямые линии между конечными точками и центром ограничивающей рамки xy.

Принимаемые аргументы:

  • xy: Две точки для определения ограничивающей рамки. Последовательность [(x0, y0), (x1, y1)] или [x0, y0, x1, y1], где x1 >= x0 and y1 >= y0.
  • start: Начальный угол, в градусах. Углы измеряются от 3 часов, увеличиваясь по часовой стрелке.
  • end: Конечный угол, в градусах.
  • fill: Цвет линии.
  • outline: Цвет контура.
  • width: Толщина линии, в пикселях.

ImageDraw.point(xy, fill=None):

Метод ImageDraw.point() рисует точки (отдельные пиксели) по заданным координатам xy.

Принимаемые аргументы:

  • xy: Последовательность двойных кортежей с пиксельными координатами, таких как [(x, y), (x, y), ...] или числовые значения, такие как [x, y, x, y, ...].
  • fill: – Цвет точки.

ImageDraw.polygon(xy, fill=None, outline=None, width=1):

Метод ImageDraw.polygon() рисует многоугольник.

Контур многоугольника состоит из прямых линий между заданными координатами и прямой линии между последней и первой координатами.

Принимаемые аргументы:

  • xy: Последовательность двойных кортежей с пиксельными координатами, таких как [(x, y), (x, y), ...] или числовые значения, такие как [x, y, x, y, ...].
  • fill: Цвет заливки.
  • outline: Цвет контура.
  • width: Толщина линии, в пикселях.

ImageDraw.regular_polygon(bounding_circle, n_sides, rotation=0, fill=None, outline=None):

Метод ImageDraw.regular_polygon() рисует правильный многоугольник, вписанный в окружность bounding_circle, с количеством сторон n_sides и произвольным вращением rotation в градусах.

Принимаемые аргументы:

  • bounding_circle: ограничивающая окружность, кортеж, определяемый точкой и радиусом. Например, (x, y, r) или ((x, y), r)). Многоугольник будет вписан в эту окружность.
  • n_sides: Количество сторон. Например, n_sides=3 для треугольника, 6 для шестиугольника).
  • rotation: применяет произвольное вращение к многоугольнику. Например, rotation=90, применяет поворот на 90 градусов.
  • fill: Цвет заливки.
  • outline: Цвет контура.

ImageDraw.rectangle(xy, fill=None, outline=None, width=1):

Метод ImageDraw.rectangle() рисует обычный прямоугольник.

Принимаемые аргументы:

  • xy: Две точки для определения ограничивающей рамки. Последовательность либо [(x0, y0), (x1, y1)] или [x0, y0, x1, y1]. Ограничительная рамка включает обе конечные точки.
  • fill: Цвет заливки.
  • outline: Цвет контура.
  • width: Толщина линии, в пикселях.

ImageDraw.rounded_rectangle(xy, radius=0, fill=None, outline=None, width=1):

Метод ImageDraw.rounded_rectangle() рисует прямоугольник со скругленными углами.

Принимаемые аргументы:

  • xy: Две точки для определения ограничивающей рамки. Последовательность либо [(x0, y0), (x1, y1)] или [x0, y0, x1, y1]. Ограничительная рамка включает обе конечные точки.
  • radius: Радиус скругления углов.
  • fill: Цвет заливки.
  • outline: Цвет контура.
  • width: Толщина линии, в пикселях.

ImageDraw.text(xy, text, fill=None, font=None, anchor=None, spacing=4, align='left', direction=None, features=None, language=None, stroke_width=0, stroke_fill=None, embedded_color=False):

Метод ImageDraw.text() рисует строку с текстом text в заданном положении xy.

Принимаемые аргументы:

  • xy: Координаты точки привязки текста.
  • text: Строка с текстом. Если он содержит какие-либо символы новой строки, то текст передается в метод ImageDraw.multiline_text().
  • fill: Цвет текста.
  • font: Экземпляр ImageFont.
  • anchor: определяет выравнивание нарисованного текста относительно параметра xy. Выравнивание по умолчанию - верхний левый угол, в частности 'la' (левый восходящий) для горизонтального текста и 'lt' (левый верхний) для вертикального текста. Этот аргумент поддерживается только шрифтами OpenType/TrueType. Другие шрифты могут игнорировать этот параметр и использовать выравнивание по умолчанию (вверху слева).
  • spacing: Если text передается в метод ImageDraw.multiline_text(), то определяет количество пикселей между строками
  • align: Если text передается в метод [ImageDraw.multiline_text()](#ImageDraw.multiline_text, то определяет относительное выравнивание линий. Принимает значения: 'слева', 'по центру' или 'справа'.
  • direction: Направление текста. Это может быть 'rtl' (справа налево), 'ltr' (слева направо) или 'ttb' (сверху вниз). Требуется системная библиотека libraqm.
  • features: Список функций шрифта OpenType, которые будут использоваться при верстке текста. Используется для включения дополнительных функций шрифта, которые не включены по умолчанию, например 'dlig' или 'ss01', но также может использоваться для отключения функций шрифта по умолчанию, например '-liga' (отключить лигатуры) или '-kern' (отключить кернинг). Требуется системная библиотека libraqm.
  • language: Язык текста. В разных языках могут использоваться разные формы глифов или лигатуры. Этот параметр сообщает шрифту, на каком языке написан текст, и о необходимости применения правильных замен, если они доступны. Требуется системная библиотека libraqm.
  • stroke_width: Ширина обводки текста.
  • stroke_fill: Цвет для обводки текста. Если не указано, по умолчанию берется из fill.
  • embedded_color: Использовать ли встроенные в шрифт глифы цвета (COLR, CBDT, SBIX).

ImageDraw.multiline_text(xy, text, fill=None, font=None, anchor=None, spacing=4, align='left', direction=None, features=None, language=None, stroke_width=0, stroke_fill=None, embedded_color=False):

Метод ImageDraw.multiline_text() рисует многострочную строку в заданной позиции xy.

Принимаемые аргументы:

  • xy: Координаты точки привязки текста.
  • text: Строка с текстом. Если он содержит какие-либо символы новой строки, то текст передается в метод ImageDraw.multiline_text().
  • fill: Цвет текста.
  • font: Экземпляр ImageFont.
  • anchor: определяет выравнивание нарисованного текста относительно параметра xy. Выравнивание по умолчанию - верхний левый угол, в частности 'la' (левый восходящий) для горизонтального текста и 'lt' (левый верхний) для вертикального текста. Этот аргумент поддерживается только шрифтами OpenType/TrueType. Другие шрифты могут игнорировать этот параметр и использовать выравнивание по умолчанию (вверху слева).
  • spacing: Определяет количество пикселей между строками.
  • align: Определяет относительное выравнивание текста. Принимает значения: 'left', 'center' или 'right'.
  • direction: Направление текста. Это может быть 'rtl' (справа налево), 'ltr' (слева направо) или 'ttb' (сверху вниз). Требуется системная библиотека libraqm.
  • features: Список функций шрифта OpenType, которые будут использоваться при верстке текста. Используется для включения дополнительных функций шрифта, которые не включены по умолчанию, например 'dlig' или 'ss01', но также может использоваться для отключения функций шрифта по умолчанию, например '-liga' (отключить лигатуры) или '-kern' (отключить кернинг). Требуется системная библиотека libraqm.
  • language: Язык текста. В разных языках могут использоваться разные формы глифов или лигатуры. Этот параметр сообщает шрифту, на каком языке написан текст, и о необходимости применения правильных замен, если они доступны. Требуется системная библиотека libraqm.
  • stroke_width: Ширина обводки текста.
  • stroke_fill: Цвет для обводки текста. Если не указано, по умолчанию берется из fill.
  • embedded_color: Использовать ли встроенные в шрифт глифы цвета (COLR, CBDT, SBIX).

ImageDraw.textsize(text, font=None, spacing=4, direction=None, features=None, language=None, stroke_width=0):

Метод ImageDraw.textsize() устарел с версии 9.2.0. Возвращает размер (width, height) (длина и высота текста) заданной строки text в пикселях.

  • Используйте ImageDraw.textlength() для определения размера (width, height) текста в пикселях с точностью 1/64 пикселя.
  • Используйте ImageDraw.textbbox(), чтобы получить точные координаты ограничивающей рамки на основе привязки.

ImageDraw.multiline_textsize(text, font=None, spacing=4, direction=None, features=None, language=None, stroke_width=0):

Метод ImageDraw.multiline_textsize() устарел с версии 9.2.0. Возвращает размер (width, height) (длина и высота текста) заданной многострочной строки text в пикселях.

Используйте ImageDraw.multiline_textbbox(), чтобы получить точные координаты ограничивающей рамки на основе привязки.

ImageDraw.textlength(text, font=None, direction=None, features=None, language=None, embedded_color=False):

Метод ImageDraw.textlength() возвращает ширина по горизонтали и высота по вертикали (в пикселях с точностью 1/64) заданного текста text при отображении шрифтом font с заданным направлением direction, функциями features и языком language.

Это величина, на которую следует смещать следующий текст. Ограничивающая рамка текста может выходить за пределы длины в некоторых шрифтах, например, при использовании курсива.

Результат возвращается как число float или как целое число int, если используется базовая раскладка.

Обратите внимание, что сумма двух длин может не равняться длине объединенной строки из-за кернинга. Если нужно настроить кернинг, то включите в передаваемую строку следующий символ и вычтите его длину.

Например, не скорректировано для кернинга:

hello = draw.textlength("Hello", font)
world = draw.textlength("World", font)
# не скорректировано для кернинга
hello_world = hello + world
assert hello_world == draw.textlength("HelloWorld", font)

Пример с поправкой на кернинг:

# с поправкой на кернинг
hello = draw.textlength("HelloW", font) - draw.textlength("W", font)
world = draw.textlength("World", font)
# скорректировано для кернинга
hello_world = hello + world
assert hello_world == draw.textlength("HelloWorld", font)

или отключить кернинг:

hello = draw.textlength("Hello", font, features=["-kern"])
world = draw.textlength("World", font, features=["-kern"])
# кернинг отключен, настраивать не нужно
hello_world = hello + world
assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"])

Принимаемые аргументы:

  • text: Текст для измерения. Недолжен содержать символы новой строки '\n'.
  • direction: Направление текста. Это может быть 'rtl' (справа налево), 'ltr' (слева направо) или 'ttb' (сверху вниз). Требуется системная библиотека libraqm.
  • features: Список функций шрифта OpenType, которые будут использоваться при верстке текста. Используется для включения дополнительных функций шрифта, которые не включены по умолчанию, например 'dlig' или 'ss01', но также может использоваться для отключения функций шрифта по умолчанию, например '-liga' (отключить лигатуры) или '-kern' (отключить кернинг). Требуется системная библиотека libraqm.
  • language: Язык текста. В разных языках могут использоваться разные формы глифов или лигатуры. Этот параметр сообщает шрифту, на каком языке написан текст, и о необходимости применения правильных замен, если они доступны. Требуется системная библиотека libraqm.
  • embedded_color: Использовать ли встроенные в шрифт глифы цвета (COLR, CBDT, SBIX).

ImageDraw.textbbox(xy, text, font=None, anchor=None, spacing=4, align='left', direction=None, features=None, language=None, stroke_width=0, embedded_color=False):

Метод ImageDraw.textbbox() возвращает ограничивающую рамку (left, top, right, bottom) (в пикселях) заданного текста text относительно заданной привязки xy при отображении шрифтом font с заданным направлением direction, функциями features и языком language. Поддерживается только для шрифтов TrueType.

Используйте ImageDraw.textlength(), чтобы получить смещение следующего текста с точностью 1/64 пикселя. Ограничительная рамка включает дополнительные поля для некоторых шрифтов, например, курсив.

Принимаемые аргументы:

  • xy: Координаты точки привязки текста.
  • text: Текст для измерения. Если он содержит какие-либо символы новой строки, текст передается методу ImageDraw.multiline_textbbox().
  • font: Экземпляр ImageFont.
  • anchor: определяет выравнивание нарисованного текста относительно параметра xy. Выравнивание по умолчанию - верхний левый угол, в частности 'la' (левый восходящий) для горизонтального текста и 'lt' (левый верхний) для вертикального текста. Этот аргумент поддерживается только шрифтами OpenType/TrueType. Другие шрифты могут игнорировать этот параметр и использовать выравнивание по умолчанию (вверху слева).
  • spacing: Если текст передается в ImageDraw.multiline_textbbox(), то определяет количество пикселей между строками.
  • align: Если текст передается в ImageDraw.multiline_textbbox(), то определяет относительное выравнивание текста. Принимает значения: 'left', 'center' или 'right'.
  • direction: Направление текста. Это может быть 'rtl' (справа налево), 'ltr' (слева направо) или 'ttb' (сверху вниз). Требуется системная библиотека libraqm.
  • features: Список функций шрифта OpenType, которые будут использоваться при верстке текста. Используется для включения дополнительных функций шрифта, которые не включены по умолчанию, например 'dlig' или 'ss01', но также может использоваться для отключения функций шрифта по умолчанию, например '-liga' (отключить лигатуры) или '-kern' (отключить кернинг). Требуется системная библиотека libraqm.
  • language: Язык текста. В разных языках могут использоваться разные формы глифов или лигатуры. Этот параметр сообщает шрифту, на каком языке написан текст, и о необходимости применения правильных замен, если они доступны. Требуется системная библиотека libraqm.
  • stroke_width: Ширина обводки текста.
  • embedded_color: Использовать ли встроенные в шрифт глифы цвета (COLR, CBDT, SBIX).

ImageDraw.multiline_textbbox(xy, text, font=None, anchor=None, spacing=4, align='left', direction=None, features=None, language=None, stroke_width=0, embedded_color=False):

Метод ImageDraw.multiline_textbbox() возвращает ограничивающую рамку (left, top, right, bottom) (в пикселях) заданного многострочного текста text относительно заданной привязки xy при отображении шрифтом font с заданным направлением direction, функциями features и языком language. Поддерживается только для шрифтов TrueType.

Возвращает ограничивающую рамку (в пикселях) заданного текста относительно заданной привязки xy при отображении шрифтом с заданным направлением, функциями и языком. Поддерживается только для шрифтов TrueType.

Используйте ImageDraw.textlength(), чтобы получить смещение следующего текста с точностью 1/64 пикселя. Ограничительная рамка включает дополнительные поля для некоторых шрифтов, например, курсив.

Принимаемые аргументы:

  • xy: Координаты точки привязки текста.
  • text: Текст для измерения. Если он содержит какие-либо символы новой строки, текст передается методу ImageDraw.multiline_textbbox().
  • font: Экземпляр ImageFont.
  • anchor: Выравнивание нарисованного текста относительно параметра xy. Выравнивание по умолчанию - верхний левый угол, в частности 'la' (левый восходящий) для горизонтального текста и 'lt' (левый верхний) для вертикального текста. Этот аргумент поддерживается только шрифтами OpenType/TrueType. Другие шрифты могут игнорировать этот параметр и использовать выравнивание по умолчанию (вверху слева).
  • spacing: Количество пикселей между строками.
  • align: Относительное выравнивание текста. Принимает значения: 'left', 'center' или 'right'.
  • direction: Направление текста. Это может быть 'rtl' (справа налево), 'ltr' (слева направо) или 'ttb' (сверху вниз). Требуется системная библиотека libraqm.
  • features: Список функций шрифта OpenType, которые будут использоваться при верстке текста. Используется для включения дополнительных функций шрифта, которые не включены по умолчанию, например 'dlig' или 'ss01', но также может использоваться для отключения функций шрифта по умолчанию, например '-liga' (отключить лигатуры) или '-kern' (отключить кернинг). Требуется системная библиотека libraqm.
  • language: Язык текста. В разных языках могут использоваться разные формы глифов или лигатуры. Этот параметр сообщает шрифту, на каком языке написан текст, и о необходимости применения правильных замен, если они доступны. Требуется системная библиотека libraqm.
  • stroke_width: Ширина обводки текста.
  • embedded_color: Использовать ли встроенные в шрифт глифы цвета (COLR, CBDT, SBIX).