# Требования к SVG для импорта в PM Font Converter

## Где лежат файлы
- `font_app/svg/en.svg` — латиница и спецсимволы/пунктуация (рекомендуется).
- `font_app/svg/ru.svg` — кириллица.
- Пути настраиваются в `font_app/config.json` (`svg_en`, `svg_ru`).

## Приоритет файлов (важно)
- Парсер читает сначала `en.svg`, потом `ru.svg`.
- Если один и тот же символ есть в обоих файлах, берется версия из `en.svg` (первое вхождение).
- Поэтому спецсимволы лучше хранить только в одном файле, обычно в `en.svg`, чтобы не было путаницы.

## Имена глифов (id у `<path>`)
- Один символ на один `<path id="...">`.
- Для букв/цифр/знаков лучше всего использовать сам символ как `id`:
  - примеры: `a`, `б`, `.`, `,`, `(`, `)`, `-`, `?`.
- Допустимы спец-имена Illustrator вида `_x2E_`, `_x2C_` (конвертируются в `.` и `,`).
- Если символ неудобно назвать напрямую, можно использовать алиасы (ниже).
- Дубликаты символов не рекомендуются. Если есть дубликат в двух SVG, победит символ из `en.svg`.

## Алиасы id для спецсимволов (поддерживаются кодом)
- Пробел: `space`
- Точка/запятая: `period`, `comma`
- Двоеточие/точка с запятой: `colon`, `semicolon`
- Воскл/вопрос: `exclam`, `question`
- Кавычки: `quote`, `apostrophe`, `backtick`
- Дефис/минус: `hyphen`, `dash`, `minus`
- Подчеркивание/плюс/равно: `underscore`, `plus`, `equals`
- Скобки: `lparen`, `rparen`, `lbracket`, `rbracket`, `lbrace`, `rbrace`
- Слэши: `slash`, `backslash`, `pipe`
- Угловые: `lt`, `gt`, `less`, `greater`
- Прочее: `amp`, `at`, `hash`, `dollar`, `percent`, `caret`, `asterisk`, `tilde`, `ellipsis`

Пример: если слой называется `lparen`, программа поймет это как символ `(`.

## Геометрия
- Поддерживаются команды пути: `M/L/H/V/C/S/Q/Z`.
- Рекомендуется хранить в кривых (без штрихов и эффектов).
- Арки `A/a` лучше заранее конвертировать в кривые.
- Каждый символ должен иметь ненулевой bbox (не пустой контур).

## Базовые рекомендации по экспорту из Illustrator/Figma
- Конвертируйте текст в outlines.
- Сделайте `Expand/Outline Stroke`, чтобы не было stroke-only контуров.
- Экспортируйте в обычный SVG (без минификации, если возможно).
- Проверяйте, что `id` у path сохранены и читаемы.

## Строки и baseline
- Можно хранить глифы в 1-2 строках в одном SVG.
- Baseline определяется автоматически по нижним точкам глифов.
- Тонкая корректировка каждой буквы делается в UI (X/Y/Scale для выбранного глифа).

## Форматы выхода
- Генерируются `OTF`, `TTF`, `WOFF2`.
- Для `WOFF2` нужна python-библиотека `brotli` (ставится через `run.command`).
