Отговори на тема  [ 27 мнения ]  Отиди на страница Предишна  1, 2
Генериране на шрифтове за графичен дисплей 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Генериране на шрифтове за графичен дисплей
TheHungry написа:
Туй http://www.iseasoft.com/bfc.htm не върши ли работа ?

Върши, страхотно е, ама е скъпо и не го намерих без вируси.

Днес половин ден си играх да пиша собствен тул, щото ми трябват 2-3 шрифта.
За сега си направих един шрифт - слагам го тук.
Когато направя тула да се избира шрифта, ще сложа и самия тул (сега шрифтът и размерът са хардкодирани).

ПП: Слагам и тула, ако на някой му се занимава със сорсовете, ще сложа и тях (C#).
За сега има недостатъци при шрифтове около и под 12 пиксела (картинката).


Прикачени файлове:
Коментар на файл: Недостъатъците, за дребни шрифтове
Shashma.jpg
Shashma.jpg [ 63.19 KiB | Прегледано 2693 пъти ]
Коментар на файл: Тул - изпълним файл за Windows, 14KB (изисква dotnet 4.5)
FontToRaster.rar [6.54 KiB]
166 пъти
Коментар на файл: Lucida
font_24x32 - Copy.c [497.57 KiB]
199 пъти
Коментар на файл: Демо
24x32_min.jpg
24x32_min.jpg [ 14.73 KiB | Прегледано 2701 пъти ]
Пон Сеп 22, 2014 5:50 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Генериране на шрифтове за графичен дисплей
Едно време (т.е. 199х) бях писал подобно нещо да конвертва на виндовс битмап шрифтовете - трябваше ми непропорционален шрифт ... ама пусти ПЦ-та - още преди години ми умря диска с архивите, и едва ли някъде е останало нещо :(
Но доколкото помня беше доста лесно да се крадват, а там малките резолюции са пипнати, няма смисъл човек да си играе да ги рисува на ръка ... та, сигурно в МСДН може все още да се изкопа формата.

_________________
Мразя да мразя ...


Пон Сеп 22, 2014 8:19 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: Генериране на шрифтове за графичен дисплей
Малко off, има една компания Bitstream , която има някакъв много потаен подход при рендирането на шрифтове с много голяма скорост, в сравнение с по-разпрострените системи. Доколкото си спомням става дума за целочислена , вместо плаващо-точкова математика... Нищо друго не съм срещал , което поне за размисли да послужи... Някой да знае нещо повече?


Пон Сеп 22, 2014 8:43 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Генериране на шрифтове за графичен дисплей
Ами те векторните шрифтове обикновенно са описани с разни сплайни + малко скрипт с хинтове за малки размери. Целочислени алгоритми за сплайни и запълнени полигони има, виж като трябва да се прави анти алиасинг и под пикселно рендиране става по сложно, но пак едва ли е чак такъв сериозен проблем.

Едит: http://pomax.github.io/bezierinfo/ Много математика, ама има и достатъчно картинки за по лесно смилане ... те това е основата ...

_________________
Мразя да мразя ...


Пон Сеп 22, 2014 10:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: Генериране на шрифтове за графичен дисплей
Ползвам "Fony" за четене на готови, генериране, едитване. После записвам например в BMP. После си го прочитам с 1 програмен ред в мое .NET програмче като картинка, и от там - каквото ми трябва. Последно, от кво да е BMP с шрифт, директно в h файл за C. Fony чете повечето популярни битмап шрифтове. В нета има доста, в най-различен размер. За по-едри неща (например, последния път 32x48 пиксела цифри + 1-2 символа) - генерирам от някой TrueType, който ми харесва, отново записвам в BMP, и по каналния ред - в h файл.


Вто Сеп 23, 2014 12:34 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Генериране на шрифтове за графичен дисплей
sparkybg написа:
Ползвам "Fony" за четене на готови, генериране, едитване. После записвам например в BMP. После си го прочитам с 1 програмен ред в мое .NET програмче като картинка, и от там.....

Ами и това програмче, което писах вчера, прави същото - с един бутон се избира шрифта, рисува го буква по буква (една след друга) в един label и от там го взема като пискели и го слага във файл.
Недостатъкът идва от определянето на цвета на пикселите при фонтове с малко пискели.
Ако ми се занимава да прехвърлям и цвета няма да има проблеми (сега са еднобитови пиксели).


Вто Сеп 23, 2014 4:31 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: Генериране на шрифтове за графичен дисплей
NikB написа:
Недостатъкът идва от определянето на цвета на пикселите при фонтове с малко пискели.


Нещо не схващам. Пискелите са бели, върху черен фон, например. Зареждаш BMP-то в .NET с един програмен ред, и после можеш да четеш пиксел по пиксел какво има в BMP-то. Недостатъци поне аз не виждам, освен че трябва да си напишеш програмче, което да гледа пикселите и да ги записва в удобен за теб формат. Цялото писане е 20-30 реда на C# или VB.NET.


Вто Сеп 23, 2014 4:52 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Генериране на шрифтове за графичен дисплей
Абе теоретично е така, но може би аз или Win, или заедно :), сме оптимизирали настройките на видимостта на мониторите - например на "ш" в малкия шрифт е 6 колонки:
1 първата вертикална линия е широка един пиксел
2 между първата и втората вертикални черти - един пиксел разстояние
3-4 следват две линии за средната черта:
- една вертикална линия широка един пиксел в кафеникаво
- една вертикална линия широка един пиксел в синкаво
5 между втората и третата вертикални черти - един пиксел разстояние
6 третата вертикална линия - широка един пиксел

Ако символът е по-сложен (примерно ж :)) става още по-зле


Вто Сеп 23, 2014 7:44 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: Генериране на шрифтове за графичен дисплей
NikB написа:
Абе теоретично е така, но може би аз или Win, или заедно :), сме оптимизирали настройките на видимостта на мониторите - например на "ш" в малкия шрифт е 6 колонки:
1 първата вертикална линия е широка един пиксел
2 между първата и втората вертикални черти - един пиксел разстояние
3-4 следват две линии за средната черта:
- една вертикална линия широка един пиксел в кафеникаво
- една вертикална линия широка един пиксел в синкаво
5 между втората и третата вертикални черти - един пиксел разстояние
6 третата вертикална линия - широка един пиксел

Ако символът е по-сложен (примерно ж :)) става още по-зле


Tи си оптимизирай квото искаш на монитора. Fony-то го изключва, докато рендерва. Получава се черно-бял текст, без ClearType и прочие мониторни благинки. Сега, друг е върпоса ако искаш и на твойто графично LCD да излизат същите опримизации, ама според мен за малки неща (в мисъл, като процесорна мощ) е безпредметно.

Fony-то, както споменах, поддържа и популярните формати за bitmap шрифтове, а от тях в интернет можеш да намериш доста. Става и за редактиране. Изобщо - единственото безплатно програмче, което ми свърши работа когато посления път търсих с кво. Гепил съм и шрифтовете на няколко кирилизатора - например в BDS имаш 9x16, 8x14, 8x8 и май още няколко размера. Четат се директно от com/exe файла, само трябва да нацелиш офсета. Лесно е.

Ето ти рендернат 8pt Arial narrow:
Прикачени файлове:
fony.png
fony.png [ 70.24 KiB | Прегледано 2585 пъти ]


За съжаление TrueType шрифтовете рядко изглеждат добре при по-малко от 8 пункта височина. Рядко 6. За малки шрифтове без ClearType си трябват BitMap шрифтове, пипнати на ръка. Иначе не става.


Вто Сеп 23, 2014 8:06 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Фев 06, 2013 10:25 am
Мнения: 197
Мнение Re: Генериране на шрифтове за графичен дисплей
Не разбрах, защо не ти хареса GLCD ?
Според мен е супер удобна програмка.
Изображение

Символите се описват от горе на долу и от ляво на дясно.
Всички символи имат като първи байт ширината си.
Направих си едно приложение на C, което да ми направи бин файл от масива, който изкарва програмката. От там на СД карта и така на дисплея.


Прикачени файлове:
text.h [879 Байта]
218 пъти
text.c [1.65 KiB]
217 пъти
Нед Сеп 28, 2014 4:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Фев 13, 2013 3:35 pm
Мнения: 1803
Мнение Re: Генериране на шрифтове за графичен дисплей
Как се записват като байтова последователност?
Трябва ми четим 16 пиксела височина?


Нед Сеп 28, 2014 5:01 pm
Профил WWW
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Фев 06, 2013 10:25 am
Мнения: 197
Мнение Re: Генериране на шрифтове за графичен дисплей
Първият байт е ширината на символа.
След това следват данните за символа.
Нека началото на координатната система е горе в ляво.

първи байт: пиксели x=0, y[0..7]
втори байт: пиксели x=0, y[8..15]
трети байт: пиксели x=1, y[0..7]
и т.н.

Ако височината на символа не е кратна на 8, няма проблем.
например нека е 9. всеки втори байт, ще носи инфо само за един пиксел от най-долния ред.


Нед Сеп 28, 2014 5:24 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 27 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни