imagettftext

(PHP 4, PHP 5, PHP 7, PHP 8)

imagettftext Рисует текст на изображении шрифтом TrueType

Описание

imagettftext(
    GdImage $image,
    float $size,
    float $angle,
    int $x,
    int $y,
    int $color,
    string $font_filename,
    string $text,
    array $options = []
): array|false

Функция наносит текст text поверх изображения шрифтом TrueType.

Замечание:

До PHP 8.0.0 функция imagefttext() была расширенной версией функции imagettftext(), которая дополнительно поддерживала параметр extrainfo. Начиная с 8.0.0 функция imagettftext() стала псевдонимом функции imagefttext().

Список параметров

image

Объект GdImage, который возвращает одна из функций, создающих изображения, например, imagecreatetruecolor().

size

Размер шрифта в типографских пунктах.

angle

Угол в градусах, 0 градусов обозначает расположение текста слева направо. Положительные значения означают поворот текста против часовой стрелки. Например, текст, который повернули на 90 градусов, потребуется читать снизу вверх.

x

Координаты x и y определяют отправную точку первого символа текста — приблизительно левый нижний угол символа. Определение базовой точки этой функцией отличается от функции imagestring(), в которой координаты x и y определяют верхний левый угол первого символа. Например, «верхнюю левую» точку определяют координаты 0, 0.

y

y-координата. Это позиция базовой линии шрифта, в общем случае она не совпадает с низшей точкой в символе.

color

Индекс цвета. Отрицательный индекс цвета отключает сглаживание. Смотрите описание функции imagecolorallocate().

fontfile

Путь к шрифту TrueType, который вы хотите использовать.

В зависимости от того, какая библиотека GD загружена в PHP, если параметр fontfile не начинается с символа /, то к имени файла будет добавлено расширение .ttf и библиотека будет пытаться искать это имя файла по определённому библиотекой пути шрифтов.

При работе с версиями библиотеки GD ниже 2.0.18 как «разделитель путей» для отдельных файлов шрифтов использовался символ пробела, а не точка с запятой. Непреднамеренное использование этой особенности приведёт к предупреждению: Warning: Could not find/open font. Единственное решение для этих версий библиотек — переместить файлы шрифтов в директорию, имя которой не содержит пробелов.

Часто, когда шрифт лежит в том же каталоге, что и скрипт PHP, который работает с этим шрифтом, помогает следующий трюк.

<?php
// Установка переменной окружения для GD
putenv('GDFONTPATH=' . realpath('.'));

// Имя шрифта для использования (обратите внимание, что расширение .ttf не указывается)
$font = 'SomeFont';
?>

Замечание:

Обратите внимание, что open_basedir не применяется к fontfile.

text

Текстовая строка в кодировке UTF-8.

Для доступа к символам шрифта за пределом 127-й позиции в аргумент включают ссылки на десятичные цифровые символы в форме &#8364;. Параметр поддерживает шестнадцатеричный формат наподобие &#xA9;. Строки в кодировке UTF-8 разрешается передавать напрямую.

Именованные сущности наподобие &copy; не поддерживаются. Такие именованные сущности декодируют в строку в кодировке UTF-8 функцией html_entity_decode().

Функция нарисует незакрашенный прямоугольник вместо символа, если шрифт не поддерживает символ в строке.

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

Функция возвращает массив из 8 элементов, которые представляют координаты четырёх точек — вершин рамки обрамления текста. Массив представляет точки в следующем порядке: нижний левый, нижний правый, верхний правый, верхний левый угол. Точки относятся к тексту независимо от угла, поэтому «верхний левый» обозначает верхний левый угол, если смотреть на текст горизонтально. Функция возвращает false, если возникла ошибка.

Список изменений

Версия Описание
8.0.0 Добавили параметр options.

Примеры

Пример #1 Пример отрисовки текста функцией imagettftext()

Пример создаст изображение в формате PNG с белым фоном размером 400x30 пикселей и надписью "Тест..." черным цветом (с серой тенью) шрифтом Arial.

<?php

// Тип содержимого
header('Content-Type: image/png');

// Создание изображения
$im = imagecreatetruecolor(400, 30);

// Создание цветов
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// Текст надписи
$text = 'Тест...';

// Замена пути к шрифту на пользовательский
$font = 'arial.ttf';

// Тень
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Текст
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

imagepng($im);

?>

Вывод приведённого примера будет похож на:

Вывод примера: imagettftext()

Примечания

Замечание: Эта функция доступна только в случае, если PHP был скомпилирован с поддержкой freetype (--with-freetype-dir=DIR)

Смотрите также

  • imagettfbbox() - Определяет границы прямоугольного обрамления для текста, который библиотека freetype2 выводит на экран путём рендеринга шрифта
  • imagefttext() - Наносит текст на изображение путём рендеринга шрифта библиотекой FreeType 2