Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

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

Вт сен 21, 2021 09:16:44

А как эта программа сжимает шрифты?

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

Пт ноя 26, 2021 16:28:23

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

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

Вт мар 29, 2022 00:49:27

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

Изображение

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

Чт июн 02, 2022 16:04:02

Искал программу для создания шрифтов. Сами шрифты найти можно

Извините, а где их найти? Никак не находятся... Мне чтобы в формате С, чтобы самой переделывать под наши нужды.

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

Чт июн 02, 2022 19:58:02

Если надо переделывать под свои нужды, то надо не сами шрифты в С формате, а именно программу для их создания.
Байтовые массивы заманаетесь вручную переделывать.

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

Пт июн 03, 2022 11:00:13

Я не вручную, я прогу написала. Пока у меня два шрифта - на 127 и на 255 символов. Один для наших нужд пришлось транспонировать, второй переворачивать с ног на голову. Так что с этим проблем не будет. Вот где их найти....

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

Пт июн 03, 2022 11:07:17

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

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

Пт июн 03, 2022 15:12:39

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

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

Пт июн 03, 2022 17:28:17

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

Генераторами шрифтов тож баловался:
https://kilkennycat.ru/component/maplcdfont.html
https://kilkennycat.ru/component/zoomlcdchar.html

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

Пт июн 03, 2022 21:09:20

Вот еще вопрос, можно ли ttf растрировать....

Можно, конечно. Но на ПК, заранее. На МК это - трата ресурсов, которую надо ещё оправдать.
Сколько не рылась, найти не смогла как это можно сделать. А может и нельзя...

Вот, например: https://www.radiokot.ru/forum/viewtopic ... 1#p3506721
В стандартных библиотеках какие-то странные шрифты.

Они оптимизированные. Чтобы меньше памяти занимать. Например, зачем символ точки, буквы i и Ж хранить в одинаковых по размеру массивах 20*30 пикселей? Или зачем хранить все символы от 0x20 до 0xff, если нам нужны только цифры, латиница и наша кириллица?
Я тоже не совсем понимаю почему мы сами не можем написать (начальнику виднее) - это вообще не проблема.

Если вы ему предложили создать шрифт в том смысле, что нарисовать каждую букву вручную, то он прав. Только вот это не обязательно. Берётся готовый открытый (лицензия) шрифт и из него генерится Cишный файл. В том же генераторе, при необходимости, можно подправить отдельные буквы.
Не страдайте фигнёй.

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

Сб июн 04, 2022 02:37:58

Вот еще вопрос, можно ли ttf растрировать.... Сколько не рылась, найти не смогла как это можно сделать.
Пишете простейшее приложение под Win. Там по буковке выводите в битовую плоскость и сохраняете из неё в каком надо формате в файл. Всё просто.

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

Сб июн 04, 2022 05:28:48

Меня тоже крайне интересует тема создания шрифтов, причем желательно по своему шаблону. Пользовался IconEdit и DotFactory. Первая всем хороша, но генерит неудобный и неэкономичный массив для шрифтов разной высоты. Вторая прога генерит удобный массив, но в ней нельзя отредактировать отдельные символы.
Какие еще есть проги для генерации шрифтов?

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

Сб июн 04, 2022 07:31:48

По своему шаблону - lcd-image-converter

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

Сб июн 04, 2022 11:07:46

Спасибо. У меня есть такая прога, только я почемуто ее не использовал. Сейчас буду разбираться. Похоже это то, что нужно. Надо её обследовать детально.

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

Сб июн 04, 2022 11:19:14

Меня тоже крайне интересует тема создания шрифтов, причем желательно по своему шаблону. Пользовался IconEdit и DotFactory. Первая всем хороша, но генерит неудобный и неэкономичный массив для шрифтов разной высоты.
Шрифты - видимо для какой-то своей программы? Значит Вы - программист. Тогда в чём проблема набросать простой конвертор этого массива в любой удобный формат?

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

Сб июн 04, 2022 11:33:53

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

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

Сб июн 04, 2022 12:32:48

Да, я программист. Микроконтроллеров. Эмбеддер, если по-русски :) А вот как набросать этот ваш простой конвертОр массива вне микроконтроллера, это я не знаю. А вы можете набросать?
Конечно. Какая разница - МК или ПК? Си он одинаков везде. А написать программу под Win ещё проще, чем для МК.
Но в принципе можно конвертор и на МК сделать, если уж под Win неохота: цепляете bin-образ исходного шрифта (в исходном формате) к образу программы-конвертора на МК; в программе его конвертируете; выводите например через UART наружу например в base64- или uuencode- формате; в терминалке записываете полученный base64- или uuencode- файл и конвертируете его в bin. Всё! Теперь этот bin можно цеплять уже к рабочей программе. Хотя этот способ конечно через одно место, но позволяет даже не ставить компилятор для ПК.

И дело не в том чтобы конвертЕр массива набросать, а дело в том, чтобы прога готовила не просто массив пикселей символа шрифта, а делала именно наиболее оптимальным способом.
И что? В чём проблема? Если Вы - программист, пишущий программу на МК, то кому как не Вам лучше всего должно быть известно - как именно наиболее оптимально хранить шрифт в вашей программе. Программа то ведь Ваша! Значит Вам и знать как там лучше его хранить, чтобы удобнее было его использовать в программе.
100500 раз писал всякие конвертеры/пакователи шрифтов для своих прошивок. Потому как - каждый раз, на каждом МК есть свои особенные требования к формату шрифтов - в одной прошивке важнее минимальный размер памяти занимаемый шрифтом, в другой - скорость его вывода, в 3й - шрифт должен быть вертикальным, в 4й - горизонтальным, в 5й - символы удобнее паковать единым битовым потоком, в 6й - строки пикселей не должны пересекать границы байтов и т.п. Ни одна готовая программа не удовлетворяет всем требованиям полностью, во всех чего-то не хватает.

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

Сб июн 04, 2022 12:39:31

Словами написать на форуме конечно проще. Если умеете в коде это делать, так сделайте, плиз. Вам народ спасибо скажет. А за пустые разглагольствования общими фразами - ничего хвалебного сказать не могу.
Да и зачем делать костыли, когда есть готовые решения?

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

Сб июн 04, 2022 13:51:16

Если умеете в коде это делать, так сделайте, плиз.
Сделать что? Я же пишу: каждый раз под конкретную задачу пишу конвертор в формат, удобный для этой задачи. Пытаться писать что-то универсальное - затея бесперспективная.
Да и вы можете. Просто попробуйте. Это много быстрее, чем искать готовые, а потом пытаться ещё их как-то подстроить под свои нужды. Не такое это сложное дело - сконвертировать шрифт.

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

Сб июн 04, 2022 14:29:13

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? Даже между разными мк разница огромная и требует времени
Ответить