| |
икатор шрифта — это будет
цифра, большая 5, потому что пять первых номеров зарезервированы как встроенные.
Формат файла — бинарный, а потому зависит от архитектуры машины. Это значит,
что файл со шрифтами должен быть сгенерирован по крайней мере на машине с про-
цессором такой же архитектуры, как и у той, на котором вы собираетесь
использовать
PHP. Вот формат этого файла (табл. 23.1). Левая колонка задает смещение начала
данных внутри файла, а группами цифр, записанных через дефис, определяется, до
какого адреса продолжаются данные.
Таблица 23.1. Формат файла со шрифтом
Смещение Тип Описание
Byte 0-3 long Число символов в шрифте (nchars)
byte 4-7 long Индекс первого символа шрифта (обычно 32 — пробел)
Таблица 23.1 (окончание)
Смещение Тип Описание
byte 8-11 long Ширина (в пикселах) каждого знака (width)
byte 12-15 long Высота (в пикселах) каждого знака (height)
byte 16-... array Массив с информацией о начертании каждого символа, по
одному байту на пиксел. На один символ, таким образом,
приходится width*height байтов, а на все —
width*height*nchars байтов. 0 означает отсутствие точки в
данной позиции, все остальное — ее присутствие
Глава 23. Работа с изображениями 327
Параметры шрифта
После того как шрифт загружен, его можно использовать (встроенные шрифты, ко-
нечно же, загружать не требуется).
int imageFontHeight(int $font)
Возвращает высоту в пикселах каждого символа в заданном шрифте.
int imageFontWidth(int $font)
Возвращает ширину в пикселах каждого символа в заданном шрифте.
Вывод строки
int imageString(int $im, int $font, int $x, int $y, string $s, int $col)
Выводит строку $s в изображение $im, используя шрифт $font и цвет $col. Коор-
динаты ($x,$y) будут координатами левого верхнего угла прямоугольника, в
который
вписана строка.
int imageStringUp(int $im, int $font, int $x, int $y, string $s, int $c)
Эта функция также выводит строку текста, но не в горизонтальном, а в
вертикальном
направлении. Верхний левый угол, по-прежнему, задается координатами ($x,$y).
Работа со шрифтами TrueType
Библиотека GD поддерживает также работу со шрифтами PostScript и TrueType. Мы с
вами рассмотрим только последние, т. к., во-первых, их существует великое
множе-
ство (благодаря платформе Windows), а во-вторых, с ними проще всего работать в
PHP.
Для того чтобы заработали приведенные ниже функции, PHP должен быть от-
компилирован и установлен вместе с библиотекой FreeType, доступной по ад-
ресу http://www.freetype.org. В Windows-версии PHP она установлена по
умолчанию.
Всего существует две функции для работы со шрифтами TrueType. Одна из них вы-
водит строку в изображение, а вторая — определяет, какое положение эта строка
бы
заняла при выводе.
Вывод строки
list imageTTFText(int $im, int $size, int $angle, int $x, int $y,
int $col, string $fontfile, string $text)
Часть IV. Стандартные функции PHP 328
Эта функция помещает строку $text в изображение $im цветом $col. Как обычно,
$col должен представлять собой допустимый идентификатор цвета. Параметр
$angle задает угол наклона в градусах выводимой строки, отсчитываемый от гори-
зонтали против часовой стрелки. Координаты ($x,$y) указывают положение так на-
зываемой базовой точки строки (обычно это ее левый нижний угол). Параметр
$size задает размер шрифта, который будет использоваться при выводе строки. На-
конец, $fontfile должен содержать имя TTF-файла, в котором, собственно, и хра-
нится шрифт.
Хотя в официальной документации об этом ничего не сказано, я рискну взять
на себя ответственность и заявить, что параметр $fontfile должен всегда
задавать абсолютный путь (от корня файловой системы) к требуемому файлу
шрифтов. Что самое интересное, в PHP версии 3 функции все же работают с
относительными именами. Но в любом случае лучше подстелить соломку —
абсолютные пути еще никому не вредили, не правда ли?..
Функция возвращает список из 8 элементов. Первая их пара задает координаты (x,
y)
верхнего левого угла прямоугольника, описанного вокруг строки текста в
изображе-
нии, вторая пара — координаты верхнего правого угла,
и т. д. Т
|
|