Генератор фонтов для дисплеев CX Font Generator

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение parovoZZ »

А как эта программа сжимает шрифты?
Nunga
Родился
Сообщения: 3
Зарегистрирован: Пт ноя 26, 2021 16:01:57

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Nunga »

Скажите пожалуйста, как в настройках программы задать кодирование колонками байт, (по страницам, удобно для OLED экрана SSD1306). Так, как сделано в The Dot Factory ? В ней эта настройка называется "Bit Layout" -> "ColumnMajor" (Расположение бит -> По столбцам).
Nunga
Родился
Сообщения: 3
Зарегистрирован: Пт ноя 26, 2021 16:01:57

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Nunga »

Программа - must have, как говорится! Автору - большое спасибо за мегаполезный инструмент в нашем микроконтроллерном хобби!

Изображение
Лакшми
Родился
Сообщения: 3
Зарегистрирован: Чт июн 02, 2022 15:54:46

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Лакшми »

[uquote="FantasyDD",url="/forum/viewtopic.php?p=3631945#p3631945"]Искал программу для создания шрифтов. Сами шрифты найти можно[/uquote]
Извините, а где их найти? Никак не находятся... Мне чтобы в формате С, чтобы самой переделывать под наши нужды.
Etamin
Родился
Сообщения: 8
Зарегистрирован: Пн дек 30, 2019 11:41:56

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Etamin »

Если надо переделывать под свои нужды, то надо не сами шрифты в С формате, а именно программу для их создания.
Байтовые массивы заманаетесь вручную переделывать.
Лакшми
Родился
Сообщения: 3
Зарегистрирован: Чт июн 02, 2022 15:54:46

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Лакшми »

Я не вручную, я прогу написала. Пока у меня два шрифта - на 127 и на 255 символов. Один для наших нужд пришлось транспонировать, второй переворачивать с ног на голову. Так что с этим проблем не будет. Вот где их найти....
Etamin
Родился
Сообщения: 8
Зарегистрирован: Пн дек 30, 2019 11:41:56

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Etamin »

Ужс...
Создать, вестимо! Берёте генератор и в путь. Вам помочь?
А ищется всё на гитхабе. Под ту графическую библиотеку, которую используете. Проекты на них обычно выкладывают вместе со шрифтами.
Или вопрос о шрифтах для операционной системы, ttf, otf?
Лакшми
Родился
Сообщения: 3
Зарегистрирован: Чт июн 02, 2022 15:54:46

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Лакшми »

Мы не используем библиотеки, пишем все сами, ручками. Поэтому и шрифты у нас выводятся так, как нам удобно. Мне нужны адекватные шрифты, а уж к нашему формату я сама все приведу. Я тоже не совсем понимаю почему мы сами не можем написать (начальнику виднее) - это вообще не проблема. Этих генераторов полно.
Вот еще вопрос, можно ли ttf растрировать.... Сколько не рылась, найти не смогла как это можно сделать. А может и нельзя...
В стандартных библиотеках какие-то странные шрифты. Обычно шрифт выглядит гораздо проще. Вот, например, я нашла отличный шрифт https://pastebin.com/J9Ya3a68. Ничего лишнего, все предельно понятно. А в готовых библиотеках вообще не понятно по какому принципу шрифты формируют.
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Martian »

Лакшми писал(а):Вот еще вопрос, можно ли ttf растрировать
а почему нет?
Если имеется ввиду перевод в растр фиксированного размера, а не использование прям на мк. Вроде бы, программа ТС именно это делает?
Если на мк, то на ARM это тоже было, например в Segger emWin

Генераторами шрифтов тож баловался:
https://kilkennycat.ru/component/maplcdfont.html
https://kilkennycat.ru/component/zoomlcdchar.html
Etamin
Родился
Сообщения: 8
Зарегистрирован: Пн дек 30, 2019 11:41:56

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Etamin »

Вот еще вопрос, можно ли ttf растрировать....
Можно, конечно. Но на ПК, заранее. На МК это - трата ресурсов, которую надо ещё оправдать.
Сколько не рылась, найти не смогла как это можно сделать. А может и нельзя...
Вот, например: https://www.radiokot.ru/forum/viewtopic ... 1#p3506721
В стандартных библиотеках какие-то странные шрифты.
Они оптимизированные. Чтобы меньше памяти занимать. Например, зачем символ точки, буквы i и Ж хранить в одинаковых по размеру массивах 20*30 пикселей? Или зачем хранить все символы от 0x20 до 0xff, если нам нужны только цифры, латиница и наша кириллица?
Я тоже не совсем понимаю почему мы сами не можем написать (начальнику виднее) - это вообще не проблема.
Если вы ему предложили создать шрифт в том смысле, что нарисовать каждую букву вручную, то он прав. Только вот это не обязательно. Берётся готовый открытый (лицензия) шрифт и из него генерится Cишный файл. В том же генераторе, при необходимости, можно подправить отдельные буквы.
Не страдайте фигнёй.
jcxz
Мудрый кот
Сообщения: 1717
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение jcxz »

[uquote="Лакшми",url="/forum/viewtopic.php?p=4240728#p4240728"]Вот еще вопрос, можно ли ttf растрировать.... Сколько не рылась, найти не смогла как это можно сделать.[/uquote]Пишете простейшее приложение под Win. Там по буковке выводите в битовую плоскость и сохраняете из неё в каком надо формате в файл. Всё просто.
Up2805
Встал на лапы
Сообщения: 148
Зарегистрирован: Сб июн 04, 2022 05:21:07

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Up2805 »

Меня тоже крайне интересует тема создания шрифтов, причем желательно по своему шаблону. Пользовался IconEdit и DotFactory. Первая всем хороша, но генерит неудобный и неэкономичный массив для шрифтов разной высоты. Вторая прога генерит удобный массив, но в ней нельзя отредактировать отдельные символы.
Какие еще есть проги для генерации шрифтов?
Etamin
Родился
Сообщения: 8
Зарегистрирован: Пн дек 30, 2019 11:41:56

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Etamin »

По своему шаблону - lcd-image-converter
Up2805
Встал на лапы
Сообщения: 148
Зарегистрирован: Сб июн 04, 2022 05:21:07

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Up2805 »

Спасибо. У меня есть такая прога, только я почемуто ее не использовал. Сейчас буду разбираться. Похоже это то, что нужно. Надо её обследовать детально.
jcxz
Мудрый кот
Сообщения: 1717
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение jcxz »

[uquote="Up2805",url="/forum/viewtopic.php?p=4241006#p4241006"]Меня тоже крайне интересует тема создания шрифтов, причем желательно по своему шаблону. Пользовался IconEdit и DotFactory. Первая всем хороша, но генерит неудобный и неэкономичный массив для шрифтов разной высоты.[/uquote]Шрифты - видимо для какой-то своей программы? Значит Вы - программист. Тогда в чём проблема набросать простой конвертор этого массива в любой удобный формат?
Up2805
Встал на лапы
Сообщения: 148
Зарегистрирован: Сб июн 04, 2022 05:21:07

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Up2805 »

Да, я программист. Микроконтроллеров. Эмбеддер, если по-русски :) А вот как набросать этот ваш простой конвертОр массива вне микроконтроллера, это я не знаю. А вы можете набросать?
И дело не в том чтобы конвертЕр массива набросать, а дело в том, чтобы прога готовила не просто массив пикселей символа шрифта, а делала именно наиболее оптимальным способом.
Например, DotFactory умеет герерить таблицу символов с параметрами символа, а так же общее описание параметров шрифта и карты включенных в шрифт символов. Эта особенность позволяет компактно уместить в память несколько шрифтов разных размеров и разного состава символов и выводить их через единый интерфейс, не парясь отдельным указанием всех параметров символа.
Но в DotFactory нет возможности отредактировать попиксельно символ или нарисовать его. В IconEdit такая возможность есть, но генерируемый формат данных не подходит для компактного хранения шрифтов разных размеров.
Поэтому и ищу прогу, удовлетворяющую моим требованиям. Возможно, это будет lcd-image-converter
jcxz
Мудрый кот
Сообщения: 1717
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение jcxz »

[uquote="Up2805",url="/forum/viewtopic.php?p=4241104#p4241104"]Да, я программист. Микроконтроллеров. Эмбеддер, если по-русски :) А вот как набросать этот ваш простой конвертОр массива вне микроконтроллера, это я не знаю. А вы можете набросать?[/uquote]Конечно. Какая разница - МК или ПК? Си он одинаков везде. А написать программу под Win ещё проще, чем для МК.
Но в принципе можно конвертор и на МК сделать, если уж под Win неохота: цепляете bin-образ исходного шрифта (в исходном формате) к образу программы-конвертора на МК; в программе его конвертируете; выводите например через UART наружу например в base64- или uuencode- формате; в терминалке записываете полученный base64- или uuencode- файл и конвертируете его в bin. Всё! Теперь этот bin можно цеплять уже к рабочей программе. Хотя этот способ конечно через одно место, но позволяет даже не ставить компилятор для ПК.

[uquote="Up2805",url="/forum/viewtopic.php?p=4241104#p4241104"]И дело не в том чтобы конвертЕр массива набросать, а дело в том, чтобы прога готовила не просто массив пикселей символа шрифта, а делала именно наиболее оптимальным способом.[/uquote]И что? В чём проблема? Если Вы - программист, пишущий программу на МК, то кому как не Вам лучше всего должно быть известно - как именно наиболее оптимально хранить шрифт в вашей программе. Программа то ведь Ваша! Значит Вам и знать как там лучше его хранить, чтобы удобнее было его использовать в программе.
100500 раз писал всякие конвертеры/пакователи шрифтов для своих прошивок. Потому как - каждый раз, на каждом МК есть свои особенные требования к формату шрифтов - в одной прошивке важнее минимальный размер памяти занимаемый шрифтом, в другой - скорость его вывода, в 3й - шрифт должен быть вертикальным, в 4й - горизонтальным, в 5й - символы удобнее паковать единым битовым потоком, в 6й - строки пикселей не должны пересекать границы байтов и т.п. Ни одна готовая программа не удовлетворяет всем требованиям полностью, во всех чего-то не хватает.
Up2805
Встал на лапы
Сообщения: 148
Зарегистрирован: Сб июн 04, 2022 05:21:07

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Up2805 »

Словами написать на форуме конечно проще. Если умеете в коде это делать, так сделайте, плиз. Вам народ спасибо скажет. А за пустые разглагольствования общими фразами - ничего хвалебного сказать не могу.
Да и зачем делать костыли, когда есть готовые решения?
jcxz
Мудрый кот
Сообщения: 1717
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение jcxz »

[uquote="Up2805",url="/forum/viewtopic.php?p=4241131#p4241131"]Если умеете в коде это делать, так сделайте, плиз.[/uquote]Сделать что? Я же пишу: каждый раз под конкретную задачу пишу конвертор в формат, удобный для этой задачи. Пытаться писать что-то универсальное - затея бесперспективная.
Да и вы можете. Просто попробуйте. Это много быстрее, чем искать готовые, а потом пытаться ещё их как-то подстроить под свои нужды. Не такое это сложное дело - сконвертировать шрифт.
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Генератор фонтов для дисплеев CX Font Generator

Сообщение Martian »

jcxz писал(а): Какая разница - МК или ПК?
Очень огромная.

Код: Выделить всё

 public partial class LedsEDA : UserControl
    {
       // [TypeConverter(typeof(LedsEDAsettings))]
        public LedsEDAsettings Settings { get; set; } = new();
        [TypeConverter(typeof(Graticule))]
        public Graticule Graticule { get; set; } = new();

        public LedsEDA()
        {
            InitializeComponent();
            SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
        }

        private void LedsEDA_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            e.Graphics.TranslateTransform(0, Height);
            e.Graphics.ScaleTransform(1, -1);
            e.Graphics.Clear(Settings.backcolor);

            Graticule?.DrawGrid(e.Graphics, Width, Height);
        
        }
    }
Представьте, что Вы от и до знаете работу с графикой с STM32, а теперь Вам сказали написать что-то для Win GDI и требуется вышеприведённый код. Много тут от знаний в STM32? Даже между разными мк разница огромная и требует времени
Ответить

Вернуться в «Периферия»