Нативные внешние виды FreeText по умолчанию
Нативный fallback FreeText применяет ограниченное состояние внешнего вида по умолчанию к сгенерированному тексту, раскладке, автоматической подгонке и украшениям
Предоставленный normal-внешний вид имеет приоритет над генерацией из внешнего вида FreeText по умолчанию и rich-текста
Операторы внешнего вида по умолчанию
| Операторы | Поведение fallback |
|---|---|
Tf | Выбирает исходный ресурс шрифта и размер текста; нулевой размер запрашивает ограниченный автоматический подбор |
g rg k | Инициализирует цвет заливки текста в серый, RGB или CMYK |
Tc Tw Tz | Применяет межсимвольный и межсловный интервал и горизонтальный масштаб текста к измерениям рисования и раскладки |
Ts TL | Применяет подъём текста и явное разделение базовой линии, включая нулевой или отрицательный интерлиньяж |
Tm | Принимает не более одной матрицы; её линейная часть преобразует сгенерированный текст, а раскладка аннотации определяет размещение |
Tr | Выбирает режимы рисования глифов и отсечения текста от нуля до семи |
G RG K w J j M d | Инициализирует цвет, ширину, окончания, соединения, предел mitre и состояние штрихов для текста и сгенерированных украшений |
Операнды переноса матрицы проверяются, но не заменяют размещение FreeText внутри его прямоугольника аннотации
Горизонтальный масштаб может быть нулевым или отрицательным; подъём, интервалы и линейная матрица участвуют в преобразованной геометрии глифов, advance-ов и украшений
Это ограниченный профиль внешнего вида по умолчанию, а не общий интерпретатор потоков содержимого PDF; неподдерживаемые операторы, неверное число операндов, malformed значения и повторные текстовые матрицы дают ошибку рендеринга
Компоненты цвета обводки должны лежать в диапазоне от нуля до единицы, значения окончаний и соединений должны быть целыми от нуля до двух, ширина должна быть неотрицательной, а предел mitre — не менее единицы
Массив штрихов может содержать не более 256 неотрицательных конечных значений, а непустой массив должен содержать положительное значение; пустой массив выбирает сплошные штрихи, нечётный массив повторяется, а фаза должна быть неотрицательной
Раскладка, перенос и размещение
Выравнивание FreeText использует видимые advance-ы для размещения слева, по центру или справа; закодированные конечные пробелы и их исходные отображения остаются, когда сгенерированный поток сохраняет эти фрагменты
Перенос по границам слов и жёсткие разрывы абзацев обрабатываются отдельно; неразрывный пробел не становится обычным мягким ASCII-разделителем
Исходный путь raw-font сохраняет свои ограниченные правила переноса по пробелу и дефису; этот набор приёмки не устанавливает все случаи переноса строк Unicode, двунаправленности или сложного шейпинга
Физический прямоугольник аннотации, границы корневого Form и внутренний clip остаются фиксированными; временные границы дочерних Form-ов учитывают полную цепочку предков и размещения
Рисование глифов и отсечение текста
Tr | Рисование глифов | Вклад в отсечение |
|---|---|---|
| 0 | Заливка | Нет |
| 1 | Обводка | Нет |
| 2 | Заливка и обводка | Нет |
| 3 | Без рисования глифов | Нет |
| 4 | Заливка | Контуры глифов |
| 5 | Обводка | Контуры глифов |
| 6 | Заливка и обводка | Контуры глифов |
| 7 | Без рисования глифов | Контуры глифов |
Режимы с четвёртого по седьмой накапливают контуры глифов по сгенерированным run-ам в одном текстовом объекте; накопленное текстовое отсечение применяется после этого текстового объекта к последующим сгенерированным украшениям подчёркивания и зачёркивания
Отсечение использует контуры глифов, а не расширенный силуэт обводки; состояние рисования остаётся специфичным для каждого run, а охватывающая область графического состояния ограничивает время жизни отсечения
Начальное состояние обводки DA применяется и в корневой области украшений, и в текстовых областях; переопределения на run и сохранение/восстановление графического состояния сохраняют смысл
Четыре положительных случая отсечения — отдельные ворота приёмки с рукописными внешними видами из двух run, положительными отсечёнными украшениями и белыми образцами вне объединения глифов
Эти ворота также используют свидетельство заливки прямоугольника явного внешнего вида для проверки отсечения текста бэкендом; свидетельство не утверждает, что генерация с отсутствующим внешним видом выдаёт заливку прямоугольника
Независимая проверка чтения положительных Tr4–Tr7 прошла четыре конечных случая двух run с официальными MuPDF 1.28.5 и Poppler, включая обе внутренности глифов, отсечённые украшения и белые образцы вне объединения глифов
Отдельная тестовая ревизия только с отсечением использует Scale4 для выбора полных пиксельных ячеек из неизменённых точек-свидетелей в пространстве страницы; она сохраняет исходные пороги цвета и оставляет normal45-рендеринг в Scale1
У MuPDF 1.28.2 есть проблема совместимости границ отсечения, когда смена цвета сбрасывает один run перед более поздним run в том же текстовом объекте; более ранний run может быть исключён из накопленных границ отсечения
Официальный CLI MuPDF 1.28.5 и независимо закреплённый Poppler приняли эти неизменённые внешние виды; версии читалок и конечные положительные управления отличаются от гарантии для любого конвейера рендеринга
Автоматическая подгонка
Нулевой размер шрифта DA запускает ограниченный поиск сжатия и уточнения от начальной сгенерированной раскладки, используя преобразованные пути глифов, advance-ы и украшения, а не только непреобразованную высоту строки
Расширение обводки включает консервативную преобразованную поддержку пунктирных углов с квадратными окончаниями и mitre-соединений
Поиск сохраняет устоявшееся квантование путей Cairo и FreeType; он не обещает математически наибольший идеальный размер шрифта или одинаковый хинтинг у разных читалок
Если ни одна проба не подходит до достижения ограниченным поиском минимальной пробы, физическое отсечение всё равно ограничивает публикацию; очень длинное содержимое не гарантирует полной видимости
Исходные шрифты и пределы ресурсов
Исходный fallback встроенных Type1C, CIDFontType0C и bare Type1 уже поддерживается; полные пути внешних видов OpenType CFF и CFF2 экземпляра по умолчанию сохраняют свои документированные правила отображения и встраивания
Автономные raw-потоки CFF2 и выбор координат вариаций, отличных от умолчальных, остаются вне выпущенного пути CFF2
Пределы токенов, объектов, рабочей памяти, операций, декодированных данных и вывода применяются к разбору, временным ресурсам, подгонке и публикации; отмена опрашивается во время ограниченной работы
Сбой сохраняет исходный граф и допускает восстановление того же документа; достижение предела не превращает частично сгенерированный внешний вид в успешный результат
Воспроизводимая приёмка и оставшиеся границы
Публичный набор — это Tests/Linux/AnnotationDefaultAppearance/RunAnnotationDefaultAppearance.py, распространяемый со своими ресурсами и полным манифестом архива
Его normal-режим выполняет 45 пар кандидат/рукописный-AP при максимальной разнице каналов два, семь групп исходных пределов и независимую непрерывную геометрию исходных-AP с эпсилоном 1e-6
Положительные рендеры чтения исходных-AP и известные наблюдения вертикальных пиксельных ячеек регистрируются отдельно от непрерывной геометрии; ни равенство пар, ни эти конечные наблюдения не доказывают произвольную геометрию сгенерированных кандидатов или произвольные преобразованные растровые огибающие
Режим конечных AP проверяет шесть сохранённых аффинных и штриховых управлений явного внешнего вида; он не заменяет обычную приёмку, проверки сгенерированных кандидатов или тесты пределов
Сохранённые 45 сгенерированных внешних видов прошли независимую непрерывную геометрию с эпсилоном 1e-6; их 90 закреплённых читальных изображений MuPDF и Poppler также прошли независимую модель полного изображения по всем 3,168,000 пиксельных ячеек с максимальной разницей каналов ноль, без пропущенных изображений и исключённых ячеек
Эта конечная модель выводит ожидаемые глифы, преобразования, отсечение, штрихи и композицию из исходных рукописных внешних видов и контуров шрифтов, используя закреплённое ядро FreeType каждой читалки; она не учит ожидаемые пиксели из наблюдаемых изображений
Исходная максимальная разница каналов остаётся два, а порог чернил — 245; эти прохождения покрывают сохранённый корпус и закреплённые конвейеры, а не произвольные шрифты, все сборки рендереров или доказательство математически наибольшего подобранного размера
Цели FPC Linux и Windows требуют FPC 3.3.1 или новее; Windows FPC использует отдельно проверенную частную сборку зависимостей NoGUI и не запускает настольные читалки
Смежные темы: fallback аннотаций, украшения аннотаций, интервалы rich-run-ов, исходные внешние виды raw-font и внешние виды экземпляра по умолчанию OpenType CFF2