Нативные интервалы rich-text run-ов

Rich-appearances применяют авторские межбуквенные и межсловные интервалы при шейпинге, подгонке строк, переразбивке физических строк, выравнивании и отрисовке, используя предоставленные шрифты и существующую ограниченную раскладку rich-текста

<p style="letter-spacing:.12em;word-spacing:-1.25pt">A spaced paragraph</p>

Ограниченный профиль inline-CSS принимает normal, inherit, initial, unset, знаковые длины pt, px при 96 dpi, pc, in, cm, mm и em, а также безразмерный ноль; em вычисляется от итогового каскадного размера шрифта объявляющего элемента, а дочерние наследуют уже вычисленную длину в пунктах

Межбуквенный и межсловный интервалы имеют независимые порядок объявления и приоритет important, а font shorthand сохраняет оба компонента; неподдерживаемые или некорректные объявления следуют существующему поведению игнорирования декодера

Явный normal сбрасывает соответствующий глобальный интервал внешнего вида в ноль; опущенные нативные режимы сохраняют существующее глобальное поведение CharacterSpacing и WordSpacing, включая его концевой сдвиг символа

Когда явный межбуквенный интервал активирует абзац, видимые типографские единицы получают по половине значений соседних стилей на каждой внутренней границе после визуального переупорядочивания, а края физических строк опускают внешние половины; диакритики и невидимые управляющие символы формата не потребляют отдельный интервал

SPACE и NBSP получают по половине своего межсловного интервала с каждой стороны своего шейпленного кластера, включая разделитель, за которым следует комбинирующий знак; прочие Unicode-разделители слов вне этого ограниченного профиля

ASCII-мягкие разделители могут пересекать границы стилей или пустые run-ы, тогда как NBSP остаётся неразрывным кластером, а явные разрывы абзацев сохраняют свою отдельную обработку CRLF; см. тему внешних видов FreeText по умолчанию

Ненулевой явный tracking отключает необязательные подстановки liga, clig, dlig и hlig, сохраняя обязательные лигатуры и кернинг; соседние курсивные единицы арабского, рохингья, мандейского, монгольского, нко, пхагс-па и сирийского подавляют tracking там, где эта реализация не может безопасно растянуть соединение

Отрицательные интервалы участвуют в фактических чернильных границах глифов и подгонке префиксов, не предполагая, что каждый более длинный префикс шире; auto-fit масштабирует абсолютные интервалы в пунктах вместе с размером шрифта, а авторские em-множители остаются относительными

Типизированные run-ы сохраняют исходные значения Double, V удерживает авторский обычный текст, а RV записывает вычисленные интервалы в пунктах с точностью кругового обращения; нативные обновления только для чтения сравнивают итоговую семантику rich-значения и внешнего вида

Десятичное преобразование интервалов использует округление к ближайшему с развязкой к чётному для конечных значений Double; канонические значения RV нормализуют отрицательный ноль к нулю и не меняются повторным декодированием и сериализацией

В этом ограниченном профиле явный normal и явный ноль дают одинаковые интервалы в пунктах и канонический RV, поэтому фактически эквивалентные обновления только для чтения становятся семантическими no-op-ами; версионированные JSON-операции сохраняют исходные байты, а опущенный legacy-режим остаётся различимым, потому что наследует глобальные опции внешнего вида

Существующая нативная транзакция SaveRichTextFieldUpdatesToFile может добавить ревизию, даже когда её семантическое число обновлений равно нулю; версионированные JSON-операции сохраняют свой отдельный контракт точных байтов для no-op

Начиная с версии 2.943.1, нативный SaveRichTextFieldUpdatesToFile также публикует точные исходные байты, когда все обновления без изменений и в загруженном графе нет ожидающих правок, включая существующие зашифрованные AES состояния сессии

Пересоберите Pascal- и C++Builder-потребителей с совпадающими записями rich-run и shaped-glyph и сгенерированными заголовками; версионированные структуры C-колбэков и экспортируемые символы не меняются

Профиль следует модели интервалов из CSS 2.2 и правилам краёв строк, типографских единиц и шейпинга из CSS Text letter spacing и CSS Text word spacing с описанным выше ограниченным покрытием разделителей и курсива

Режимы интервалов · Типизированный JSON · Стилизованный шейпинг-спан

Конечная числовая математика поддерживает выражения длин calc, min, max и clamp, q, rem и явно настроенные единицы viewport; знаковые вычисленные длины питают тот же шейпинг, подгонку строк, рисование и каноническое поведение rich-значений