Skip to content

ReNothingg/OpenHand

Repository files navigation

OpenHand logo

OpenHand

Приложение для подготовки рукописных конспектов и отправки на перьевой плоттер

Open app GitHub stars React Vite License

Интерфейс и встроенные шрифты работают локально.


Что такое OpenHand

OpenHand — это студия рукописных документов и полноценное рабочее место для перьевого плоттера. Вы пишете привычный Markdown или LaTeX, настраиваете характер почерка, раскладываете материал по страницам и сразу видите результат.

Когда макет готов, его можно распечатать, сохранить в PDF, преобразовать в G-code или отправить на совместимый плоттер прямо из приложения. Для действительно персонального результата в проект встроена студия однолинейных .gfont‑шрифтов: символы можно нарисовать вручную или импортировать с фотографии заполненного бланка.

OpenHand моделирует варианты глифов, связность букв, наклон, ритм, давление, дрейф строк, редкие исправления и даже постепенную усталость почерка.

Возможности

Область Что умеет OpenHand
Редактор Markdown и LaTeX, панель форматирования, формулы, таблицы, списки, цитаты, код, изображения и SVG
Живой предпросмотр Автоматическая пагинация, масштабирование, одиночные страницы и развороты
Форматы листа A4, A5, Letter и тетрадный разворот; книжная и альбомная ориентация
Почерк Десятки локальных экранных шрифтов, кириллица, смешивание шрифтов и воспроизводимая случайность
Натурализация Варианты букв, соединения, давление, наклон, ритм, неровность строки, исправления и усталость
Ручная вёрстка Перетаскивание и размещение блоков непосредственно на странице
Свои шрифты Рисование символов, импорт .gfont, создание почерка по фотографии и экспорт готового шрифта
Плоттер Однолинейные шрифты, расчёт траектории, оптимизация холостого хода и G-code
Управление устройством Web Serial, GRBL, Marlin и EBB; jog, установка нуля, управление пером, пауза и аварийная остановка
Надёжность Автосохранение в браузере и безопасное продолжение прерванного задания с контрольной точки
Экспорт Печать/PDF, исходный документ, настройки, .gfont и .gcode
Desktop Нативные оболочки для Windows и macOS, прямой доступ к плоттеру и отдельный просмотрщик G-code

Видео

OpenHand — полный обзор

Как создать рукописный документ

  1. Выберите режим MD или TeX в верхней части редактора.
  2. Введите или импортируйте исходный текст.
  3. Выберите экранный рукописный шрифт либо однолинейный шрифт плоттера.
  4. Настройте размер листа, поля, кегль и межстрочное расстояние.
  5. Подберите профиль автора и интенсивность естественных вариаций.
  6. Проверьте страницы в предпросмотре; при необходимости включите ручную раскладку.
  7. Распечатайте результат, сохраните его в PDF или подготовьте задание для плоттера.

Почему почерк выглядит живым

OpenHand применяет вариации детерминированно: одинаковый текст с одинаковым seed даёт одинаковый результат. Макет не «прыгает» при каждом обновлении, но его можно осознанно перегенерировать.

Доступны:

  • профили характера почерка;
  • авторский наклон и ширина букв;
  • вариативность формы повторяющихся глифов;
  • контекстные соединения соседних букв;
  • живой ритм и отклонение базовой линии;
  • изменение давления пера;
  • случайный наклон слов и межбуквенный интервал;
  • нерегулярные отступы и дрейф строк;
  • редкие естественные зачёркивания;
  • эффект усталости на длинных документах;
  • смешивание нескольких совместимых шрифтов;
  • отчёт о натуральности и автоматическая коррекция настроек.

Страницы и ручная вёрстка

OpenHand рассчитывает страницы автоматически с учётом:

  • формата и ориентации бумаги;
  • верхнего, нижнего и боковых полей;
  • отдельного поля для чётных страниц;
  • ширины текстовой колонки;
  • размера шрифта и высоты строки;
  • книжной пагинации и тетрадных разворотов.

Если автоматического потока недостаточно, блоки можно разместить вручную на странице. Позиции сохраняются вместе с локальным состоянием документа.

Студия собственного почерка

Три способа создать шрифт

  1. Нарисовать на экране. Выберите символ и проведите его штрихи на холсте.
  2. Импортировать отдельную фотографию. Сфотографируйте символ — OpenHand очистит изображение и превратит линию в траекторию.
  3. Заполнить печатный бланк. Скачайте SVG‑шаблон, заполните символы от руки, сфотографируйте лист и импортируйте его целиком.

Студия содержит группы кириллицы, латиницы, цифр и знаков, показывает прогресс заполнения, хранит черновик в localStorage, поддерживает отмену и живой предпросмотр. Результат экспортируется в компактный однолинейный формат .gfont.

Работа с плоттером

Поддерживаемые профили контроллера

Профиль Типичные устройства Особенности
GRBL CNC/XY‑плоттеры на GRBL Стандартные координаты, realtime pause/resume и аварийный reset
Marlin 3D‑принтеры и самодельные плоттеры Управление пером через servo или ось Z
EBB EiBotBoard / AxiDraw‑подобные устройства Команды EBB и конфигурация в шагах

Подключение

  1. Подключите устройство по USB.
  2. Выберите профиль прошивки и скорость порта.
  3. Нажмите «Выбрать USB‑порт» и подтвердите устройство в системном диалоге.
  4. Маленьким шагом проверьте перемещение по X/Y.
  5. Настройте безопасные позиции поднятого и опущенного пера.
  6. Установите начало координат.
  7. Проверьте траекторию и отсутствующие глифы.
  8. Только после проверки запустите задание.

Caution

Первый тест выполняйте с поднятым пером, на минимальной скорости и с малым шагом перемещения. Держите питание устройства и аварийную остановку в пределах досягаемости. Неверные пределы осей, координата Z или угол сервопривода могут повредить механику.

Что предусмотрено для безопасной работы

  • явное подключение выбранного пользователем USB‑порта;
  • ручная проверка осей и пера;
  • пауза, продолжение и остановка;
  • журнал входящих и исходящих команд;
  • ожидание подтверждения контроллера после каждой команды;
  • таймаут ответа устройства;
  • сохранение безопасных точек восстановления;
  • отказ от восстановления, если текст, настройки или профиль изменились;
  • отчёт об отсутствующих в шрифте символах;
  • обнаружение объектов, выходящих за границы листа;
  • опциональная оптимизация холостой траектории.

Поток данных

flowchart LR
    A["Markdown / LaTeX"] --> B["Безопасный рендер"]
    B --> C["Пагинация"]
    C --> D["Экранный предпросмотр"]
    C --> E["Однолинейная раскладка"]
    F["Встроенный или свой .gfont"] --> E
    E --> G["Траектория штрихов"]
    G --> H["G-code"]
    H --> I["Web Serial / Native Bridge"]
    I --> J["GRBL / Marlin / EBB"]
Loading

Команды разработки

Команда Назначение
npm run dev Запустить Vite dev server на всех интерфейсах
npm run build Собрать production‑версию в docs/
npm run preview Локально проверить production‑сборку
npm run macos:sync Собрать web и перенести ресурсы в macOS‑проект
npm run windows:build Собрать автономный Windows x64 release и ZIP в windows/build/
npm run windows:build:arm64 Собрать автономный Windows ARM64 release и ZIP

Windows

Windows-порт находится в windows/ и использует WinForms, WebView2 и нативный мост к последовательному порту. Он поддерживает те же скорости и сигналы управления, что macOS-оболочка, системное сохранение экспортов, перетаскивание и открытие .gcode, .nc и .tap.

Для разработки нужен .NET 8 SDK. Готовая self-contained сборка не требует отдельной установки .NET, но использует системный Microsoft Edge WebView2 Runtime, который входит в актуальные Windows 10 и Windows 11.

Частые вопросы

Текст отправляется на сервер?

Основной редактор, рендеринг, шрифты и расчёт траектории работают локально. Черновики сохраняются в хранилище браузера. При использовании размещённой версии сервер, конечно, отдаёт статические файлы приложения, но содержимое документа не требуется отправлять backend OpenHand.

Почему браузер не показывает USB‑порт?

Web Serial поддерживается в Chromium‑браузерах на desktop и требует безопасного контекста: HTTPS или localhost. Используйте актуальный Chrome/Edge, проверьте кабель и убедитесь, что порт не занят другой программой.

Почему часть букв отсутствует на траектории?

У выбранного .gfont нет нужных глифов. Проверьте список пропущенных символов, выберите более полный встроенный шрифт либо дополните собственный в Студии шрифтов.

Можно ли получить PDF?

Да. Откройте печать из приложения и выберите системный принтер «Сохранить как PDF». Специальные стили печати уберут элементы интерфейса и оставят страницы документа.

Можно ли пользоваться без плоттера?

Да. Редактор рукописных страниц, LaTeX, формулы, пагинация, PDF и Студия шрифтов работают независимо от физического устройства.

Почему результат меняется при смене seed?

Seed управляет воспроизводимой псевдослучайностью почерка. Одинаковые исходник, настройки и seed дают одинаковую раскладку; новое значение создаёт другой естественный вариант.

Ахтунг!

OpenHand — проприетарное программное обеспечение. Все права защищены.

Исходный код опубликован исключительно для ознакомления, оценки и прозрачности. Без предварительного письменного разрешения правообладателя запрещены:

  • копирование и распространение;
  • изменение и создание производных работ;
  • самостоятельная сборка, установка и размещение;
  • продажа, аренда и иная монетизация;
  • коммерческое и производственное использование;
  • предоставление программы как сервиса;
  • включение кода в другие продукты, проекты, датасеты или обучающие наборы;
  • использование названия, логотипа и фирменного оформления.

Разрешены просмотр исходников в ознакомительных целях и использование неизменённой официальной версии, предоставленной правообладателем. Полные юридические условия находятся в файле LICENSE.

Отдельные сторонние шрифты, библиотеки и исходные материалы сохраняют собственные лицензии. Лицензия OpenHand применяется только к правам, принадлежащим автору проекта.

Открыть OpenHand · Сообщить о проблеме · Предложить идею

Если проект оказался полезен, поставьте ⭐

About

Приложение для подготовки рукописных конспектов и отправки на перьевой плоттер

Resources

Stars

Watchers

Forks

Used by

Contributors

Languages