API-контракт
00 / consumes → providesCONSUMES
PROVIDES
DOES NOT OWN
Длина пути ≠ пространственный охват
01 / two independent descriptorsPath length
Сколько реального пути проходит stroke. Для curve/polyline может быть значительно больше прямого chord.
Spatial span
Какую долю поля path реально охватывает. Не растёт только потому, что линия делает петли внутри маленькой области.
pathLengthClass, spatialSpanClass и roleLengthFit. Старое поле spanClass удалено как неоднозначное.Канонические нормализации
02 / explicit semanticsДлина stroke/path.
Межформатное сравнение длины пути.
Охват поля.
Функциональный охват конкретного owner/region.
Lnorm. В каждом API явно указано, измеряем мы длину пути, spatial extent или coverage относительно владельца.Два набора классов
03 / path vs fieldpathLengthClass
Используется для detour, ink amount, траекторий и curve/polyline.
spatialSpanClass
Используется для структурного охвата поля, axis/divider/accent.
Роль определяет смысл длины
04 / role profiles| Role | Что считается правильной длиной | Как рассчитывать target | Статус |
|---|---|---|---|
accent | локальная, явно короче структурных линий | диапазон spatialSpanClass из StylePreset / стартовый профиль S–M | STYLE |
axis | покрывает объект/группу и имеет контролируемый overhang | target = ownerSpan + 2×overhang | DERIVED + STYLE |
divider | реально разделяет выбранную область | coverageRatio = length / regionSpan | CONTEXT |
baseline | связана с шириной/границей текстового владельца | получает target от typography module | DEFERRED |
connector | достаточна, чтобы соединить anchors; лишняя длина = detour | detourRatio = pathLength / directAnchorDistance | DERIVED |
annotation | соединяет объект и label без бессмысленного хвоста | anchor → text attachment distance | CONTEXT |
trajectory | pathLength подчинён маршруту; spatialSpan описывает охват поля | path coverage + eye-flow позже | DEFERRED |
rhythm | важна не одна длина, а распределение длин в серии | передать в Compo 2.17 | DEFERRED |
texture | контролируется плотностью и повтором | StylePreset + texture system | STYLE |
Role-length fit
05 / local scoringДля интервального target
Плато внутри допустимого диапазона не заставляет solver искать одну «магическую» длину.
Для reference-span target
Так оцениваются axis/divider, если известна конкретная область работы.
Укоротить или удлинить
06 / corrective proposalsKEEP
HEURISTIC стартовый keepThreshold=0.82.
SHORTEN
Способ зависит от роли и закреплённости endpoints.
EXTEND
После изменения endpoints Compo 2.01 обязан пересчитать геометрию.