PHP: использование преимуществ символов Unicode и таблиц кернинга шрифтов Open Type (otf) напрямую для создания PDF в качестве ответа сервера
Я работаю с базой документов, содержание от 5 до 20 страниц текстовых данных каждая.
У меня три задачи:
- Сделать многоязычный вывод в виде PDF документа. Тексты в UTF8 и могут содержать контент на английском, французском, немецком, русском и т. Д., А также комбинации, такие как переводы.
- Добавить автоматическую типографику в PDF, что означает кернинг и замену комбинации букв на символы Юникода.
- У меня есть шрифт MinionPro-xxx.otf (10 лигатур) для моей работы.
Я попытался использовать библиотеку PHP Cphf от Уэйна Мунро (pdf@ros.co.nz), и я добавил к ней много регулярных выражений. Я добавил много операторов форматирования текста PDF, как Ts, TL, T*, Tc, Tw, Tz
и я почти закончил, но я не могу достать глифы символов за пределами таблицы символов типа 1, и я не знаю, как получить таблицы 'kern' и 'hmtx' из файла шрифтов? Как встроить глифы?
Полагаю, я могу сделать кернинг с помощью текстовой директивы PDF с матричным преобразованием:
[ (A) 120 (W) 120 (A) 95 (Y again) ] TJ
UPD # 1: у шрифта MinionPro нет таблицы 'kern'. У него есть "GPOS" (Таблица позиционирования Glyph), и я довольно близок к решению проблемы. Кстати, ходить по бинарному файлу по PHP - это кошмар ((
1 ответ
Использование ручного кернинга в небольших текстовых строках шрифта - совершенно неверная стратегия. Microsoft Excel PDF экспортеры текста делают то же самое, и результат не является приемлемым.