Перейти к содержанию
    

Редактор BGI (CHR) шрифта от starter48

3 часа назад, ViKo сказал:

Пиксели менять не обязательно, а вот сетку сделать с разными шагами по X и Y - можно.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет. Если сетку по X рисовать на экране сжатой, то потом ничего пересчитывать не придется. Но тогда нужно сразу предупредить, что сетка изображена для Ментор-шрифта. 

Можно сделать упрощенное сжатие, 1:2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, ViKo сказал:

Хорошо бы дать пользователю возможность тянуть раздел между отображением и вводом.

Выложил v1.5.1.0:

  • добавлен сплиттер над панелью управления окна Test the Font;
  • окно Test the Font теперь уничтожается при закрытии, а не прячется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 часов назад, starter48 сказал:

окно Test the Font теперь уничтожается при закрытии, а не прячется.

А сам тестовый текст не теряется? А то я туда всю таблицу символов загоняю. Не хотел бы по новой его хранить - копировать - вставлять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

54 минуты назад, ViKo сказал:

А сам тестовый текст не теряется? А то я туда всю таблицу символов загоняю. Не хотел бы по новой его хранить - копировать - вставлять.

Настройки редактора сохраняются в ветке реестра HKEY_CURRENT_USER\Software\FE_win32\

При закрытии окна теста, текст сохраняется в этой ветке, как строковое значение TestText

Изменено пользователем starter48

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрел код библиотеки pcbRenderer.dll, которая реализует загрузку шрифтов из *.fnt. Ключевые слова идентифицируются по первой букве в прописном регистре (большие буквы), остальные буквы игнорируются. Поддерживаются следующие ключевые слова:

'T' - TERM
'I' - INIT
'C' - CHAR
'B' - BASE
'H' - HEIG
'P' - PROP
'D' - DISABLE_CHECKS

FIXW - не поддерживается.

Судя по всему общее ограничение на число символов 0x3FF, допустимые коды от 0 до 255.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, makc сказал:

Посмотрел код библиотеки pcbRenderer.dll,

Твою бы энергию, да в мирное русло.

Я ещё в пятницу опубликовал описание формата шрифта из std-proportional.fnt и вчера сделал поддержку в своём редакторе.

Можно ещё добавить, что координаты ограничены значением signed char (на самом деле [-127, +127]), но команда DISABLE_CHECKS 1 позволяет это преодолеть.

 

Изменено пользователем starter48
Поправка: DISABLE_CHECKS 1 действует только на INIT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, starter48 сказал:

Твою бы энергию, да в мирное русло.

Web-технологии это не мой профиль, увы.

Только что, starter48 сказал:

Я ещё в пятницу опубликовал описание формата шрифта из std-proportional.fnt и вчера сделал поддержку в своём редакторе.

Я видел эти сообщения, но оставался открытым вопрос все ли возможности (ключевые слова) есть в представленных примерах шрифтов. Теперь ясно, что все. И попутно стало понятно где смотреть реализацию функций, отвечающих за интерпретацию шрифтов в самом ПО, что немаловажно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 минут назад, starter48 сказал:

Можно ещё добавить, что координаты ограничены значением signed char

Для символа достаточно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, ViKo сказал:

Для символа достаточно.

Это нормальным людям достаточно. А у Ментора в vf_plot.fnt макс. значение X=153 - без DISABLE_CHECKS 1 не грузится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поисследовал эмпирически масштабирование и соотношение координат в Менторе.

Всё оказалось сложнее, чем я думал: соотношение масштабирования по X и Y не является константой, а зависит от значения высоты шрифта в команде HEIG.

Т.е. масштабирование работает как-то так (при Aspect ratio=1 в настройках текста в Менторе):

X = (x \ 3) * 0.02 * Height
Y = y * Height / HEIG

X и Y - вещественные координаты на изображении чертежа в Менторе;
x и y - целочисленные координаты из файла шрифта;
Height - высота текста из окна Properties в Менторе;
HEIG - высота символов из команды HEIG в файле шрифта;
\ - операция целочисленного деления (на самом деле там более хитрая функция).

 

Т.о. в редакторе для отображения шрифта в нормальных (как в Менторе) пропорциях, надо чтобы шаг по X (т.е. ширина пикселей) был пропорционален высоте шрифта (Top - Base).

 

  

18.04.2021 в 23:50, ViKo сказал:

Если сетку по X рисовать на экране сжатой, то потом ничего пересчитывать не придется. Но тогда нужно сразу предупредить, что сетка изображена для Ментор-шрифта. 

Можно сделать упрощенное сжатие, 1:2.

Лайфхак, следующий из формул: если в редакторе сделать высоту HEIG=155 (магическое число ~3/0.02), то пиксели этого шрифта будут квадратными.

Для чего следует в редакторе установить:

  • Top=+127
  • Baseline=-28
  • Bottom - без разницы
  • Inter-char spacing (PROP)>0

После чего рисовать шрифт относительно Baseline и в пределах координат [-127, +127], без учёта Inter-char spacing.

Т.о. шрифт и в редакторе, и в Менторе, будет выглядеть с нормальными пропорциями!

 

Выложен редактор v1.5.2.1:

  • добавлено отображение зоны координат Ментора [-127, +127];
  • исправлен баг с наложением Top, Baseline, Bottom;
  • игнорировалась галочка Also shift Width of Chars.

 

 

Изменено пользователем starter48
Добавлен лайфхак, позволяющий форсировать квадратные пиксели в Менторе

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16.04.2021 в 16:04, ViKo сказал:

У меня Pads Pro VX2.8, русские буквы отображаются нормально в схеме. Про платы сейчас ничего не скажу.
Стоит делать, а то! Добавить экспорт в этот формат.

Зацени, увеличил твой шрифт ViSt в 7 раз, установил границы/интервал как надо, и экспортировал в Ментор.

Ужаты по ширине эти символы (чтобы их ширина поместилась в допустимые координаты +127):

  • #64 @
  • #137 ‰
  • #153 ™
  • #169 ©
  • #174 ®
  • #212 Ф
  • #217 Щ

Короче, внимательно проверь и исправь, если надо.

Думаю, надо в редактор добавить ещё одну границу - Font Left, чтобы можно было использовать и отрицательные координаты по X, т.о. отпадёт необходимость сжимать вышеперечисленные символы...

 

Изменено пользователем starter48
Шрифт исправлен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотреть попробую в ближайший свободный вечер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 часов назад, ViKo сказал:

Посмотреть попробую в ближайший свободный вечер.

Выложил новую версию шрифта vf_fist.fnt и vf_vist.xchr (ссылка на G-Drive т.к. там я могу обновлять файлы) - без модификаций вышеупомянутых символов. Этого удалось достичь путём установки левой границы символов левее нуля (т.е. символы сдвинуты в область отрицательных координат).

Также выложил новую версию редактора v1.6.0.0 beta: добавлена левая граница (Left Bound) символов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К редактору хорошо бы краткую помощь - последовательность действий. 
Если символы сдвинуты в сетке, они же рисоваться будут сдвинутыми? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...