FOnline Engine
Current master GitHub
Документация Docs/ru/reference/font-format/layout.md

Контракт компоновки текста

Сгенерированный справочник. Не редактируйте его напрямую. Обновите BuildTools/FontFormatInterface.json, затем выполните python BuildTools/docs_font_format.py --write.

Индекс Форматы FOFNT BMFont Привязка Компоновка Отрисовка Проверка Канонический JSON Руководство

Значения FontFlag

Имя Значение Поведение исходного кода
None 0x0000 Не применяет дополнительные флаги компоновки текста или отрисовки глифов.
NoWrap 0x0001 Обрезает оставшийся текст при переполнении ширины прямоугольника вместо переноса.
TruncateLine 0x0002 Пропускает вышедшие за границу глифы до следующего перевода строки вместо переноса текущей строки.
CenterX 0x0004 Горизонтально центрирует каждую отрисованную строку в целевом прямоугольнике.
CenterY 0x0008 Вертикально центрирует весь текстовый блок в целевом прямоугольнике.
AlignRight 0x0010 Выравнивает каждую отрисованную строку по правому краю целевого прямоугольника.
AlignBottom 0x0020 Выравнивает текстовый блок по нижнему краю и заставляет SkipLines считать от последних строк.
KeepTail 0x0040 Отрисовывает конец текстового блока, высота которого превышает целевой прямоугольник.
NoColorize 0x0080 Удаляет встроенные цветовые теги, сохраняя заданный базовый цвет текста.
Justify 0x0100 Распределяет дополнительные интервалы между словами, чтобы заполнить целевую ширину строки.
Bordered 0x0200 Использует для отрисовки глифов вариант текстуры шрифта с рамкой или контуром.

Правила компоновки

Стабильный ID Правило Требование Причина Источник
font-format.layout.text-format Значение TextFormat Передавайте слот Font, битовую маску FontFlag и неотрицательное число SkipLines в TextFormat. Экспортируемый тип имеет фиксированную 12-байтную раскладку, используемую измерением и отрисовкой. Source/Client/FontManager.h
font-format.layout.wrap-overflow Переполнение ширины и перенос При конечной ширине обычная компоновка переносит по последнему пробелу или табуляции и вставляет разрыв перед слишком длинным токеном, когда точки разрыва нет. Компоновка изменяет свою кэшированную копию текста, задавая границы строк, но не меняет исходную строку вызывающего кода. Source/Client/FontManager.cpp
font-format.layout.no-wrap-and-truncate NoWrap и TruncateLine NoWrap завершает отрисовку при первом переполнении; TruncateLine удаляет переполняющие глифы до следующего авторского перевода строки. Эти флаги намеренно выбирают разное поведение потери текста и не являются синонимами. Source/Client/FontManager.cpp
font-format.layout.horizontal-alignment Горизонтальное выравнивание CenterX и AlignRight независимо размещают каждую строку в прямоугольнике; не сочетайте противоречащие флаги выравнивания. Начальная и каждая следующая после перевода строки координата X пересчитывается по измеренной ширине этой строки. Source/Client/FontManager.cpp
font-format.layout.vertical-alignment Вертикальное выравнивание CenterY центрирует видимый блок, а AlignBottom размещает его у низа прямоугольника с учётом LineHeight и YAdvance. Вертикальное положение зависит от числа помещающихся строк, а не от длины исходной строки в байтах. Source/Client/FontManager.cpp
font-format.layout.skip-lines-and-tail SkipLines и KeepTail SkipLines обычно удаляет начальные строки, а с AlignBottom конечные; KeepTail отбрасывает начальное переполнение, сохраняя новые видимые строки. Механизмы обслуживают постраничный вывод и хвост журнала, но используют разные счётчики и условия переполнения. Source/Client/FontManager.cpp
font-format.layout.justification Выравнивание по ширине Justify распределяет остаток конечной ширины по доступным для разрыва пробелам перенесённых и не пропущенных строк. Табуляции фиксированы на четырёх SpaceWidth и не участвуют в выравнивании по ширине. Source/Client/FontManager.cpp
font-format.layout.utf8-and-missing-glyphs UTF-8 и отсутствующие глифы Добавляйте каждую требуемую кодовую точку Unicode; некорректный UTF-8 и отсутствующие глифы не занимают ширину и не отображают запасной символ. Компоновка сопоставляет некорректные последовательности с кодовой точкой ноль, а неизвестные точки с нулевым продвижением; отрисовка пропускает отсутствующие записи. Source/Client/FontManager.cpp
font-format.layout.measurement Измерение соответствует компоновке Используйте Game.GetTextInfo и функции строк с тем же прямоугольником и TextFormat, что и при отрисовке, но не выводите обрезку NoWrap только для отрисовки из измерений. Измерение и отрисовка используют GetOrFormat, пропуски, метрики строк и масштаб привязки; обрезка NoWrap намеренно включена только в режиме Draw. Source/Client/FontManager.cpp, Source/Scripting/ClientGlobalScriptMethods.cpp
Введите запрос.