Вариативные и цветные шрифты OpenType
HotPDF умеет осматривать оси fvar и именованные инстансы, валидировать выбранные координаты и получать статический инстанс перед обычной установкой шрифта, сабсеттингом и персистентным кэшированием
Рабочий процесс с вариативным шрифтом
PDF.InspectVariableFont(FontPath, Axes, Instances);
PDF.SetVariableFontAxis('wght', 650);
PDF.RegisterUnicodeTTF(FontPath);
Шрифты CFF2 OpenType инстанцируются внутри на дефолтных или выбранных координатах, включая fvar, отображения avar 1.0 и 2.0, состояние vsindex на словарь шрифта, вычисление blend, рекурсивные локальные и глобальные сабрутины и метрические дельты HVAR, VVAR и MVAR
Вариативные шрифты TrueType с контурами glyf инстанцируются внутри для недефолтных координат. Конвейер вычисляет общие и приватные кортежи gvar, применяет интерполяцию IUP, обновляет простые контуры и смещения композитов, разрешает горизонтальные и вертикальные метрики phantom points, вшивает MVAR, пересобирает компактные данные глифов и loca, а затем удаляет таблицы вариаций из статического sfnt с корректными контрольными суммами
OnVariableFontInstance опционален для вариативных шрифтов CFF2 и TrueType. Он может переопределить недефолтный внутренний инстанс, вернув валидный статический sfnt без таблицы fvar
Итоговые координаты остаются доступны через GetRegisteredVariableFontAxes и становятся частью установленного и закэшированного содержимого шрифта
Низкоуровневое инстанцирование, сабсеттинг и безопасность
HPDFIsCFF2Font, HPDFInstantiateCFF2Font, HPDFSubsetCFF2Font, HPDFIsTrueTypeVariableFont и HPDFInstantiateTrueTypeVariableFont открывают сценарии работы с байтовыми массивами для тех, кто уже управляет контейнерами шрифтов самостоятельно
Статический вывод сохраняет ID глифов и hint-программы при пересборке таблиц и контрольных сумм sfnt. Путь CFF2 также сохраняет приватные данные на словарь шрифта и шрифтовые матрицы
Битые смещения, некорректные структуры вариаций, избыточная глубина сабрутин, лимиты операций и лимиты развёрнутого CharString приводят к отказу целиком, а не к возврату частично инстанцированного шрифта
Рабочий процесс с цветными глифами
GetRegisteredColorGlyphInfo обнаруживает слои COLR и CPAL, SVG-документы глифов, strikes CBDT/CBLC и strikes sbix для зарегистрированного шрифта
DrawRegisteredColorGlyph нативно рисует слои COLR v0, ограниченные paint-графы COLR v1, ограниченные безопасные SVG-документы, PNG-изображения CBDT и PNG- или JPEG-изображения sbix
COLR v1 поддерживает послойное отсечение глифов, сплошные и многостоповые линейные заливки, радиальные и sweep-заливки, аффинные преобразования, повторно используемые цветные глифы, упорядочение source и destination и композиты PDF blend
Нативный SVG-профиль поддерживает path, прямоугольники, окружности, эллипсы, линии, полигоны, полилинии, наследуемые сплошные заливки и обводки, аффинные преобразования и gzip-сжатые SVG-документы
THPDFColorGlyphRasterizeEvent остаётся fallback для неподдерживаемых возможностей SVG, неподдерживаемых режимов Porter-Duff, прозрачности, градиентов и собственного растрового вывода приложения
THPDFOpenTypeColorGlyphInfo.COLRv1Paints отдаёт валидированный плоский DAG через записи THPDFCOLRv1Paint, THPDFCOLRv1ColorStop и THPDFCOLRv1Transform для осмотра без повторного разбора байтов шрифта
Вызывающий код выбирает палитру и целевой размер в пикселях, чтобы выбор strike и растровый вывод оставались детерминированными