fix(mxl-compile): не класть в палитру шрифт, на который никто не ссылается

Мы всегда заводили шрифт Arial 10 по умолчанию, даже когда его никто не
использует. Платформа так не делает: у макета без оформления элемента <font>
нет вовсе. Неиспользуемые шрифты теперь отбрасываются, ссылки перенумеровываются
(индексы шрифтов позиционные).

Проверено на контролируемом стенде: после правки простейший макет расходится
с платформенным ровно одной строкой — объявлением языков в шапке.

Кейс font-fractional-size дополнен: стиль, задающий ТОЛЬКО шрифт по умолчанию,
равнозначен отсутствию оформления (ячейка получает <f>0</f>), поэтому шрифт
остаётся неиспользованным. Чтобы кейс продолжал проверять целый размер, стилю
добавлено второе свойство.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-11 19:40:39 +03:00
co-authored by Claude Opus 5
parent 3f80f936ae
commit f72dd544dd
18 changed files with 115 additions and 31 deletions
@@ -1,21 +1,57 @@
{
"name": "Дробный размер шрифта сохраняется",
"input": {
"columns": 2,
"columns": 3,
"fonts": {
"default": { "face": "Arial", "size": 10 },
"мелкий": { "face": "Arial", "size": 8.3 },
"крупный": { "face": "Arial", "size": 11.3, "bold": true }
"default": {
"face": "Arial",
"size": 10
},
"мелкий": {
"face": "Arial",
"size": 8.3
},
"крупный": {
"face": "Arial",
"size": 11.3,
"bold": true
}
},
"styles": {
"мелкий": { "font": "мелкий" },
"крупный": { "font": "крупный" }
"мелкий": {
"font": "мелкий"
},
"крупный": {
"font": "крупный"
},
"обычный": {
"font": "default",
"horizontalAlignment": "Center"
}
},
"areas": [
{
"name": "Шапка",
"rows": [
{ "cells": [{ "col": 1, "style": "крупный", "text": "Заголовок" }, { "col": 2, "style": "мелкий", "text": "сноска" }] }
{
"cells": [
{
"col": 1,
"style": "крупный",
"text": "Заголовок"
},
{
"col": 2,
"style": "мелкий",
"text": "сноска"
},
{
"col": 3,
"style": "обычный",
"text": "обычный"
}
]
}
]
}
]
@@ -25,10 +61,16 @@
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"],
"files": [
"Template.xml"
],
"fileContains": {
"file": "Template.xml",
"text": ["height=\"8.3\"", "height=\"11.3\"", "height=\"10\""]
"text": [
"height=\"8.3\"",
"height=\"11.3\"",
"height=\"10\""
]
}
}
}
}
@@ -10,7 +10,7 @@
</languageInfo>
</languageSettings>
<columns>
<size>2</size>
<size>3</size>
</columns>
<rowsItem>
<index>0</index>
@@ -37,10 +37,21 @@
</tl>
</c>
</c>
<c>
<c>
<f>3</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>обычный</v8:content>
</v8:item>
</tl>
</c>
</c>
</row>
</rowsItem>
<templateMode>true</templateMode>
<defaultFormatIndex>3</defaultFormatIndex>
<defaultFormatIndex>4</defaultFormatIndex>
<height>1</height>
<vgRows>1</vgRows>
<namedItem xsi:type="NamedItemCells">
@@ -62,6 +73,10 @@
<format>
<font>1</font>
</format>
<format>
<font>0</font>
<horizontalAlignment>Center</horizontalAlignment>
</format>
<format>
<width>10</width>
</format>
@@ -42,7 +42,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -169,7 +169,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -64,7 +64,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -42,7 +42,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -42,7 +42,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -64,7 +64,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -280,7 +280,6 @@
</line>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font faceName="Arial" height="10" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font faceName="Arial" height="10" bold="false" italic="true" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font faceName="Times New Roman" height="14" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font faceName="Arial" height="8" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font faceName="Arial" height="10" bold="false" italic="false" underline="true" strikeout="false" kind="Absolute" scale="100"/>
@@ -288,7 +287,7 @@
<height>25</height>
</format>
<format>
<font>3</font>
<font>2</font>
<horizontalAlignment>Center</horizontalAlignment>
</format>
<format>
@@ -296,7 +295,7 @@
<bottomBorder>0</bottomBorder>
</format>
<format>
<font>5</font>
<font>4</font>
<fillType>Parameter</fillType>
</format>
<format>
@@ -340,7 +339,7 @@
<fillType>Parameter</fillType>
</format>
<format>
<font>4</font>
<font>3</font>
<horizontalAlignment>Center</horizontalAlignment>
</format>
<format>
@@ -61,7 +61,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -53,7 +53,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -1 +1 @@
{ "columns": 2, "defaultWidth": 10, "fonts": { "default": { "face": "Arial", "size": 10 } }, "styles": {}, "areas": [{ "name": "Test", "rows": [["A", "B"]] }] }
{ "columns": 2, "defaultWidth": 10, "fonts": {}, "styles": {}, "areas": [{ "name": "Test", "rows": [["A", "B"]] }] }
@@ -61,7 +61,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -64,7 +64,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -64,7 +64,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>
@@ -64,7 +64,6 @@
<endColumn>-1</endColumn>
</area>
</namedItem>
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>10</width>
</format>