Резервні шрифти та вертикальний текст
HotPDF може обирати резервні гарнітури за сценарієм Unicode, повідомляти про кодові точки, що залишилися нерозв'язаними, та писати текст CJK через справжній вертикальний режим письма CID
Ланцюги резервних шрифтів на рівні документа
THotPDF.SetFontFallbackChain зберігає впорядкований список гарнітур для однієї категорії THPDFFontScript
THPDFPage.TextOutWithFallback розв'язує кожен Unicode-скаляр проти обраної гарнітури, її ланцюга сценаріїв та загального ланцюга, а потім видає суміжні скаляри з однаковою гарнітурою як один текстовий прохід
- Ланцюги резервних шрифтів є налаштуваннями документа та залишаються доступними на всіх сторінках
- Дублікати та порожні імена гарнітур видаляються, тоді як порядок виклику зберігається
- Зондування встановлених гарнітур відхиляє тиху підміну GDI перед прийняттям покриття
- Скаляри додаткової площини декодуються з сурогатних пар UTF-16 перед класифікацією
- Кожен резервний прохід використовує наявний вбудований шрифт Type0, субсетинг,
ToUnicodeта спільний між сторінками шлях шрифту - Резервне компонування перевіряє встановлені родини шрифтів із запитаним жирним чи курсивним накресленням, зберігає всі налаштування стилю шрифту, кодування, розміру та напрямку письма між проходами, а після завершення відновлює шрифт викликача
Придатна до дій діагностика
AnalyzeUnresolvedGlyphs виконує аудит покриття лише для читання, тоді як TextOutWithFallback записує нерозв'язані скаляри, виявлені під час виводу
Кожен THPDFUnresolvedGlyphInfo містить скалярну кодову точку, основну гарнітуру, класифікований сценарій та розділений крапкою з комою список пропозицій резервних шрифтів
GetUnresolvedGlyphs повертає поточний звіт документа, а ClearUnresolvedGlyphs починає новий інтервал звітування
Перевантаження з явним стилем THotPDF.ResolveFontForCodePoint та THotPDF.AnalyzeUnresolvedGlyphs приймають TFontStyles, тож попередня перевірка може інспектувати ту саму гарнітуру, що використано для виводу; початкові перевантаження як і раніше інспектують звичайні накреслення
Текстові блоки, вбудований текст SVG і вигляди завантаженого тексту зберігають стилізовані родини шрифтів під час резервного компонування, замість того щоб вважати внутрішні назви шрифтів PDF системними родинами чи перемикати кожен прохід на звичайне накреслення
Вертикальне письмо CJK
THPDFPage.TextOutVertical обирає вертикальний варіант поточної гарнітури та видає один текстовий прохід Identity-V замість позиціювання кожного символу вручну
- Нащадковий шрифт CID містить стандарти
/DW2та записи/W2для конкретних гліфів - За наявності OpenType
vheaтаvmtxнадають вертикальні просування, аVORG— вертикальні початкиVORG - Шрифти без вертикальних таблиць використовують налаштовувані стандарти просування 1000 одиниць та початку 880 одиниць
- З
sfVerticalAlternatesповний GSUB-прохід зі збереженням довжини використовуєvrt2, коли він оголошений, інакше повертається доvert, зберігаючи активний вибір сценарію та мови - Коли шрифт не має заміни для пунктуації, але відображає Unicode-форми вертикального подання, коми, крапки, дужки, тире, багатокрапки та споріднена пунктуація використовують ці гліфи, тоді як
ToUnicodeзберігає вихідний текст - Вертикальні функції GPOS
vkrnіvpalзалишаються доступними черезShapingFeatures GetVerticalTextAdvanceповертає просування у просторі користувача, потрібне для позиціювання наступного вертикального проходу
Приклад
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;