75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17

Никто не писал редактор шрифтов на Lazarus ?

25.02.2023, 21:16. Показов 3623. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никто не делал сабж ?

нужна какая нить заготовка для редактора шрифтов с импортом из шрифтов винды, писать с нуля не очень хочется (не люблю интерфейсы), но нужна выгрузка шрифта в определенном формате для LCD - это я сам готов написать....

гарантирую автору сохранение копирайтов, могу перевести на пиво...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2023, 21:16
Ответы с готовыми решениями:

Никто Плагинов Для Клиента Не Писал?
Как добраться до текущего, открытого в UI, view? Не научите случайно?

Стили шрифтов в Lazarus
К стилю шрифтов дается следующее описание: published property TFont.Style:TFontStyles = set of TFontStyle = ...

Редактор шрифтов
Всем привет. Гуру нужна ваша помощь. Нужен простейший редактор шрифтов. например я беру готовый шрифт 8 bit выглядит он примерно так но...

28
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 380
14.03.2023, 17:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ВитГо Посмотреть сообщение
битбандингом вычитывать состояние бит символа..
я как то отошёл от понятий знакоместо и т.п. тупо поле вывода. Символ же всё равно льётся по принципу изображения.
Вот когда начал пробовать tft, то старые шрифты под него перестраивал, куча кода со сменой адресов, а потом нее.. всё просто.
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17
14.03.2023, 17:47  [ТС]
Цитата Сообщение от shonty Посмотреть сообщение
Символ же всё равно льётся по принципу изображения.
тут да.. идея прикольная...
кстати, получается и массив знакогенератора можно рассчитывать вообще без пропусков бит символов..
банально:
ra=код символа * ширина символа * высота символа *4 +BitBanding адрес начала массива.. :-)

и потом просто вычитывать данные
ldr rd, [ra], 4 (с постинкрементом) с одним счетчиком общего числа пикселов символа :-)
0
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 380
14.03.2023, 18:10
Цитата Сообщение от ВитГо Посмотреть сообщение
можно рассчитывать вообще без пропусков бит символов..
Задаю строку. По Y: верхний левый угол текста и высоту символа (вниз), по X: начало строки символа и 319 (последний column дисплея). О конечной координате строки вообще нет смысла думать, вывод же сам останговится. Тем более если символы переменной ширины.
Строка символов выводится на одном дыхании. В конце вывода каждого символа проливается несколько столбцов бакгроунда, это как продолжение кода.
На 16, 20MHz авр-ках получается даже очень не плохо.
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17
14.03.2023, 18:34  [ТС]
Цитата Сообщение от shonty Посмотреть сообщение
Задаю строку. По Y: верхний левый угол текста и высоту символа (вниз), по X: начало строки символа и 319 (последний column дисплея). О конечной координате строки вообще нет смысла думать, вывод же сам останговится.
вы опять про позиционирование на экране..

ладно, не важно... вашу идею я либо понял, либо уже развил в свою :-)
надо бы посмотреть как нить исходники указанного выше редактора шрифта чтобы генерить такой битовый поток :-)
имхо ничего сложного там нет (исходники автор афигенно понятно группировал и все достаточно просто читается и правится)
0
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 380
17.03.2023, 19:39
Цитата Сообщение от shonty Посмотреть сообщение
Например: требуются символы высотой 25px. Известные мне программы будут выдавать по 4 байта на столбец, и часть битов будут печататься фоном.
Сорри) Как раз сейчас этим занимаюсь) Просто объясню наглядно какие требования к программе и почему)

На фото шрифт 13х20px.
В верхней строке как он выгляит на экране.
Строки 2 и 3 с подсветкой background-а
Строка 2 - это как выдают данный шрифт редакторы шрифтов. Высота поля 3 байта (24 бита).
Строка 3 (массивы правлены в ручную) Высота поля 2,5 байта (20 бит).

Экономия памяти 6 байт на символ.
Экономия времени вывода на дспл. (2 байта на RGB565 пиксель) * 6 = 12 байт на символ.. + межзнаковый промежуток.

На этих символах не так заметна экономия, но если таблица символов полная, то очень ощутимо бывает. Там даже буквы составные делаю, например массив для "Ю" вписываю перед "O". Из массива "Щ" выборку делаю, по сути три буквы получается "Щ", "Ш" и "Ц". Аналогично с Ы, Ъ, Ь - выборка из массива Ъl. Но это полные ASCII таблицы с высотой поля вывода в 40px и шрифтом переменной ширины. По тому и заморочился с собственной программой.

Как то так ))
Миниатюры
Никто не писал редактор шрифтов на Lazarus ?  
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
17.03.2023, 20:45
shonty, А скажите, чем вам "идеология" adafruit например не нравится?
Когда у вас есть таблица "строк" и ссылки на ее элементы для каждого символа?
Я в свое время под нее даже билдер из TTF шрифтов делал.
0
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 380
17.03.2023, 21:20
Цитата Сообщение от Azathtot Посмотреть сообщение
Когда у вас есть таблица "строк" и ссылки на ее элементы для каждого символа?
Не совсем понял..
Сначала в "таблицу индекса" идём, там получаем адрес массива символа и количество байт, потом на вывод символа.
У меня так. Если вы это имели в виду.

Как раз ссылки, что бы похожие знаки латиницы/кириллицы по 2 раза не переписывать. Ну и выборки делать из одного знака 3, как выше написал. Таблица индексов, адресов или ссылок. как угодно можно назвать.

Добавлено через 6 минут
Assembler
1
2
    .db     0x16,0x4C,110,  0x16,0xBA,95    ; Ц Ч
    .db     0x17,0x1A,125,  0x17,0x1A,140   ; Ш Щ
Вот. У Ш и Щ адреса одинаковые 0x171A, но количество выводимых байт разное 125 и 140

Добавлено через 2 минуты
Экономия соответственно в данном случае 125 байт.
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
18.03.2023, 09:34
shonty,
Все примерно так же.
C++
1
2
3
4
5
6
7
8
9
10
11
const uint8_t FreeSerifBold9pt7bBitmaps[] PROGMEM = {
    0xFF, 0xF4, 0x92, 0x1F, 0xF0, 0xCF, 0x3C, 0xE3, 0x88, 0x13, 0x09, 0x84,
.....
 
const GFXglyph FreeSerifBold9pt7bGlyphs[] PROGMEM = {
    {0, 0, 0, 5, 0, 1},        // 0x20 ' '
    {0, 3, 12, 6, 1, -11},     // 0x21 '!'
    {5, 6, 5, 10, 2, -11},     // 0x22 '"'
    {9, 9, 13, 9, 0, -12},     // 0x23 '#'
    {24, 8, 14, 9, 1, -12},    // 0x24 '$'
...
где GFXglyph
C++
1
2
3
4
5
6
7
8
typedef struct {
  uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap
  uint8_t width;         ///< Bitmap dimensions in pixels
  uint8_t height;        ///< Bitmap dimensions in pixels
  uint8_t xAdvance;      ///< Distance to advance cursor (x axis)
  int8_t xOffset;        ///< X dist from cursor pos to UL corner
  int8_t yOffset;        ///< Y dist from cursor pos to UL corner
} GFXglyph;
0
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 380
09.05.2025, 17:16
Подниму тему..
Вот, сначала просто создал в гимпе непрерывную последовательность цифр (36x56 px), а потом в проге по перекодированию изображений всё это изображение преобразовал в массив.
Ну а потом просто программно выбираю нужный кусок из массива.
Повторюсь, что "шрифты" для дисплеев это не "шрифты" как в обычном понимании для компьютера, а изображения..


Так же и буквенные делаю, и переменной ширины так же..
То есть спецпрограмма и не нужна вовсе..


Всех с праздником
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.05.2025, 17:16

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

Люди! Подскажите приятный редактор True Type шрифтов...
Пишу заказной сайт, нужен строго свой шрифт, а то что видел... руки опускаются...

Текстовый редактор в Lazarus
создал блокноик в Lazaruse, точнее преобразовал из Delphi(в Delphi работает прекрасно). Работает вск кроме Открыть, Созраить, Созранить...

Графический редактор на Lazarus'е
нужно сделать графический редактор. желательно через paintbox. не могли бы вы подсказать, как можно сделать чтобы рисовал только левой...

Текстовый редактор в Lazarus
Создаю текстовый редактор, наподобие блокнота в windows. Есть одна загвоздка: Как написать процедуру для кнопки меню ВЫХОД?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru