Резервные шрифты и вертикальный текст

HotPDF может выбирать резервные начертания по скрипту Unicode, сообщать о кодовых точках, оставшихся неразрешёнными, и выводить CJK-текст через настоящий режим вертикального CID-письма

Цепочки резерва на уровне документа

THotPDF.SetFontFallbackChain сохраняет упорядоченный список начертаний для одной категории THPDFFontScript

THPDFPage.TextOutWithFallback разрешает каждый скаляр Unicode относительно выбранного начертания, его цепочки по скрипту и общей цепочки, а затем выводит смежные скаляры с тем же начертанием как один текстовый проход

Практичная диагностика

AnalyzeUnresolvedGlyphs выполняет проверку покрытия только для чтения, тогда как TextOutWithFallback записывает неразрешённые скаляры, встреченные при выводе

Каждая запись THPDFUnresolvedGlyphInfo содержит кодовую точку скаляра, основное начертание, классифицированный скрипт и разделённый точками с запятой список предложений резерва

GetUnresolvedGlyphs возвращает текущий отчёт документа, а ClearUnresolvedGlyphs начинает новый интервал отчёта

Перегрузки с явным стилем THotPDF.ResolveFontForCodePoint и THotPDF.AnalyzeUnresolvedGlyphs принимают TFontStyles, так что preflight может проверить то же начертание, что используется при выводе; их исходные перегрузки по-прежнему проверяют regular-начертания

Текстовые блоки, встроенный SVG-текст и appearance загруженного текста сохраняют стилизованные семейства шрифтов при резервной вёрстке, а не трактуют внутренние имена PDF-шрифтов как системные семейства и не переключают все проходы на regular-начертание

Вертикальное CJK-письмо

THPDFPage.TextOutVertical выбирает вертикальный вариант текущего начертания и выводит один текстовый проход Identity-V вместо позиционирования каждого знака вручную

Пример

PDF.SetFontFallbackChain(hfsCJK,
  ['Microsoft YaHei UI', 'Yu Gothic UI', 'Malgun Gothic']);
PDF.SetFontFallbackChain(hfsEmoji, ['Segoe UI Emoji']);

PDF.CurrentPage.SetFont('Arial', [], 12);
PDF.CurrentPage.TextOutWithFallback(72, 72, 0, Text);

PDF.CurrentPage.SetFont('Yu Gothic UI', [], 14);
PDF.CurrentPage.TextOutVertical(420, 72, VerticalText);

Missing := PDF.GetUnresolvedGlyphs;

Связанные API