Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17

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

25.02.2023, 21:16. Показов 3588. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru