Однолинейный векторный текст для технической графики, гравировки, CNC и плоттеров
uSymbol преобразует обычный текст в центральные траектории штрихов. Каждый знак строится программно из прямых отрезков — без TrueType/OpenType/WOFF, растровых изображений, заливок, кривых Безье и дуг.
Проект ориентирован на физически измеримый результат: размеры задаются в миллиметрах, а готовая геометрия экспортируется непосредственно в SVG или векторный PDF.
- 207 проверенных глифов: цифры, латиница, кириллица и специальные символы;
- прописные и строчные буквы с отдельной геометрией, включая
Ёиё; - круглый технический знак диаметра
⌀, визуально отличимый от цифры0; - высота и ширина символа, толщина линии, кернинг и интерлиньяж в миллиметрах;
- округление координат с шагом
0.001,0.01,0.1или1мм; - автоматический либо заданный пользователем формат документа;
- выравнивание влево, по центру и вправо;
- сетка, узлы и порядок штрихов в предпросмотре;
- прямой экспорт SVG и PDF без браузерной печати;
- PDF в DeviceCMYK
C0 M0 Y0 K100или DeviceGray 100%; - полностью локальная работа в браузере без установки зависимостей и отправки текста на сервер.
| Свойство | uSymbol |
|---|---|
| Геометрия | Центральные штрихи только из прямых отрезков |
| Алфавиты | Латиница и кириллица, включая регистр и Ё/ё |
| Единицы | Физические размеры в миллиметрах |
| Экспорт | SVG и самостоятельно сформированный PDF 1.4 |
| Печатный цвет | DeviceCMYK K100 или DeviceGray |
| Зависимости | Текущий веб-прототип работает как один локальный HTML-файл |
Существуют зрелые инструменты на базе Hershey/SVG fonts, редакторы stroke fonts и библиотеки для плоттеров. Их обзор и границы сравнения собраны в docs/similar-projects.md. По изученной выборке uSymbol занимает отдельную нишу технического генератора, а не ещё одного шрифтового файла или расширения графического редактора.
Откройте sunpole.github.io/uSymbol. Приложение исполняется в браузере; введённый текст никуда не отправляется.
- Скачайте или клонируйте репозиторий.
- Откройте
web/index.htmlв современном браузере.
Локальный сервер, сборка и установка пакетов не требуются.
| Группа | Количество |
|---|---|
Цифры 0–9 |
10 |
Латиница A–Z, a–z |
52 |
Кириллица А–Я, а–я, Ё/ё |
66 |
| ASCII-пунктуация и служебные знаки | 32 |
| Дополнительные технические, математические и валютные знаки | 47 |
| Всего глифов | 207 |
Пробел и перенос строки обрабатываются компоновщиком и не входят в число глифов. Точный утверждённый набор приведён в спецификации.
- SVG не должен содержать
text, шрифты, изображения, кривые или дуги; - PDF не должен содержать шрифты и изображения;
- SVG и PDF используют одинаковые окончания и соединения линий;
- размеры сохраняются в миллиметрах без преждевременного округления;
- знак
⌀проверяется отдельно на круглую форму и отличие от0.
Запуск текущей автоматической проверки:
node tests/verify-prototype.mjsТест проверяет точный набор из 207 Unicode-глифов, отсутствие дубликатов, структуру координат, JavaScript, режимы экспорта и геометрию ⌀.
Сейчас это рабочий автономный веб-прототип, а не завершённый производственный пакет.
- геометрия пока встроена в JavaScript и ещё не перенесена в общий
symbols.json; - Python-генератор и автоматическая сверка двух движков ещё не реализованы;
- многостраничная компоновка находится в плане;
- ICC-профиль и PDF/X не входят в текущий прототип;
- соответствие ГОСТ для обозначений шероховатости, сварки, баз и геометрических допусков не заявляется — для них нужен отдельный модуль.
- Цифры и базовая геометрия
- Специальные символы
- Латиница и кириллица
- Исправленный знак диаметра
⌀ - Прямой SVG/PDF-экспорт и CMYK K100
- Автоматическая проверка 207 глифов
- Единый источник геометрии
symbols.json - Общий модуль компоновки
- Локальный Python-генератор для Windows
- Многостраничный SVG/PDF
- Эталонные тесты совпадения веб- и Python-координат
- Отдельный модуль технических графических обозначений
uSymbol/
├── index.html # переход к опубликованному веб-прототипу
├── web/index.html # текущая основная версия
├── prototype/digits.html # ранний прототип цифр
├── tests/ # автоматические проверки
├── docs/ # спецификация, аудит и история решений
├── generator/ # место для будущего Python-генератора
├── shared/ # место для будущих общих данных
├── uSymbol_* # сохранённые этапы v2–v5.1 и образцы
└── 0001.txt … 0009.txt # исходная история разработки
Сообщения об ошибках и предложения можно создавать через GitHub Issues. Перед изменением геометрии прочитайте CONTRIBUTING.md, AGENTS.md и docs/specification.md.
Лицензия проекта пока не выбрана. До появления файла LICENSE стандартное авторское право сохраняется за владельцем репозитория; публичная доступность исходников сама по себе не разрешает их повторное распространение. Перед приёмом значимых внешних вкладов следует выбрать подходящую лицензию отдельно.