Упорядоченные списки шрифтовых кандидатов 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