Упорядоченные списки шрифтовых кандидатов rich text
Rich text может хранить явный упорядоченный список семейств и использовать этот порядок при выборе реальных подключённых шрифтовых программ для полного кластера графем Unicode
Run:= THPDFHeadlessRichTextRun.Default;
Run.Text:= 'A' + WideChar($03A9) + 'B';
Run.FontFamily:= 'Primary';
SetLength(Run.FontFamilyCandidates, 3);
Run.FontFamilyCandidates[0]:= 'Primary';
Run.FontFamilyCandidates[1]:= 'Serif';
Run.FontFamilyCandidates[2]:= 'Sans';
Options:= THPDFHeadlessTextAppearanceOptions.Default;
Options.FallbackFontFamilies:= True;
Реальные программы семейств и начертаний поставляются через существующие API именованных семейств; метки в FontFamilyCandidates не ищут и не скачивают шрифты
Выбор и сохранение
Первый затронутый авторский run задаёт список для всего кластера графем, включая стыки начертаний и диакритику; каждый настроенный кандидат должен покрыть каждую стилевую часть своей реальной программой regular, bold, italic или bold-italic
Неизвестные метки и кандидаты без нужной стилевой программы пропускаются; если ни один объявленный кандидат не покрыл кластер графем, действуют прежние правила fallback — выбранное семейство и массив подключённых шрифтов
FontFamily должен совпадать с первой настроенной меткой непустого списка кандидатов, если такая есть; пропущенный FontFamily в типизированном JSON автоматически выбирает это совпадение
Fallback меняет только подготовку внешнего вида: авторское простое значение, точные типизированные размер и цвет и исходный порядок кандидатов остаются в V и RV; резолвер никогда не переписывает run'ы вызывающей стороны
Инлайновый XHTML и обмен
Установите THPDFHeadlessRichTextDecodeOptions.PreserveFontFamilyLists в True вместе с настроенными FontFamilyNames, чтобы сохранять поддерживаемые инлайновые объявления font-family через запятую, включая наследование и приоритет important для отдельных свойств
Импорт FDF и XFDF с учётом семейств включает это сохранение, когда опции внешнего вида включают FallbackFontFamilies; строгое декодирование по умолчанию оставляет прежний выбор первого настроенного семейства
Списки содержат не более шестнадцати меток, каждая ограничена 128 кодовыми единицами UTF-16 с корректным Unicode, без управляющих символов, окружающих пробелов, кавычек, обратных слешей, запятых и точек с запятой; дубликаты и неизвестные объявленные метки сохраняют авторский порядок
Нативный JSON Linux
{"schemaVersion":1,"type":"forms.fill",
"fontFamilies":["Primary","Sans","Serif"],"fallbackFontFamilies":true,
"fields":[{"name":"Input","richTextRuns":[
{"text":"A\u03a9B","fontFamily":"Primary",
"fontFamilyCandidates":["Primary","Serif","Sans"]}
]}]}
Объявленный порядок Serif перед Sans управляет fallback, даже если операция настраивает Sans перед Serif; существующий провайдер Fontconfig поставляет реальные именованные программы под теми же агрегатными лимитами шрифтов и памяти
Типизированные массивы кандидатов run требуют настроенных fontFamilies и включённого fallbackFontFamilies; некорректные массивы или метки, отсутствие покрытия всего кластера графем, исчерпанные бюджеты и отмена завершаются транзакционным откатом до фиксации контекста
Возможность formData.richFontFamilyCandidates и maxFontFamilyCandidates=16 анонсируют эту ограниченную опцию через неизменённые callback V1 и версии экспортируемых символов
Успешные цепочки заполнения форм и эквивалентные импорты FDF/XFDF сохраняют зафиксированный документ и снимок источника; сбой callback вывода или результата сохраняет предыдущую зафиксированную ревизию
Область действия
Этот профиль покрывает подключённые метки-кандидаты и поддерживаемые инлайновые объявления; внешние таблицы стилей, произвольная CSS-вёрстка, обнаружение generic-семейств и загрузка fallback через callback в Windows остаются отдельной работой
Поведение fallback · Типизированная запись run · Опции декодирования · Нативная привязка Linux