Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Растеризация векторных шрифтов на ARM
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Danis
Привет коллеги по цеху!

Решил поработать с векторными шрифтами в своем проекте с TFT. Там у меня STM32F103ZET6 стоит (привожу для оценки ресурса). В настоящее время используются растровые шрифты, записанные во внешнюю NOR flash. Как Вы понимаете это большие расходы на драгоценную память, особенно при желании иметь разные размеры и заливки шрифта. Как думаете, или знаете, «покатит» ли растеризация векторных шрифтов на такой машине, возможно предложите быстрые алгоритмы растеризации, ссылки на полезные источники, приму с благодарностью. Будет полезна любая критика, давайте пообсуждаем, кто, что применяет.
AlexandrY
Цитата(Danis @ Jul 13 2011, 10:04) *
Будет полезна любая критика, давайте пообсуждаем, кто, что применяет.


Вывод TrueType шрифтов на дисплей с помощью STM32
aaarrr
Цитата(Danis @ Jul 13 2011, 11:04) *
В настоящее время используются растровые шрифты, записанные во внешнюю NOR flash. Как Вы понимаете это большие расходы на драгоценную память, особенно при желании иметь разные размеры и заливки шрифта.

ИМХО, лучше компрессировать растровые, ибо быстрее и проще - 4bpp растровый шрифт утаптывается примерно в 15 раз.

Цитата(AlexandrY @ Jul 13 2011, 11:44) *

Любопытно. А какая получилась скорость вывода?
AlexandrY
Цитата(aaarrr @ Jul 13 2011, 15:59) *
Любопытно. А какая получилась скорость вывода?


Скорость не замерял, но видимых на глаз задержек прорисовки заметно не было.
И как эту скорость в GUI замерить который работает по принципу прорисовки лентами из-за отсутствия полного буфера экрана?

Кстати файлы ttf шрифтов тоже не сильно большие. Например arial с русскими, английскими и спец.символами всего 19 килобайт.
Danis
Походу тема мало знакомая для большинства, но ничего и это сделаем. Давно хотел написать свой растеризатор для векторных объектов, еще со времен освоения OpenGL. Кривые Безье тоже представляют интерес для ознакомления. Кстати как-то пробовал запускать алгоритм интерполяции-Логранжа на STM32, по 3-м и более точкам строил 2D кривую. Время расчетов меня приятно удивило. Думаю, сначала все под ПК написать, потом перенесу код на «железку».
AlexandrY
Цитата(Danis @ Jul 13 2011, 22:32) *
Походу тема мало знакомая для большинства, но ничего и это сделаем. Давно хотел написать свой растеризатор для векторных объектов, еще со времен освоения OpenGL. Кривые Безье тоже представляют интерес для ознакомления. Кстати как-то пробовал запускать алгоритм интерполяции-Логранжа на STM32, по 3-м и более точкам строил 2D кривую. Время расчетов меня приятно удивило. Думаю, сначала все под ПК написать, потом перенесу код на «железку».


А, что вы еще собираетесь сделать? biggrin.gif
Конечно, доставляет неописуемое удовольствие что вы осваивали OpenGL.
Но неприятно, что вы создаете темы в виде опросов сами не имея ничего сказать.

Зачем сообщать что вы собрались изобретать велосипед?
В файле raster.c в библиотеке freetype все это уже сделано причем в целочисленной арифметике.
Посмотрев исходники могу 100% утверждать, что у вас никаких шансов это сделать с нуля или как-то сильно по другому нет.
Danis
Цитата(AlexandrY @ Jul 14 2011, 08:10) *
А, что вы еще собираетесь сделать? biggrin.gif


Свой растеризатор, разве это не понятно?

Цитата(AlexandrY @ Jul 14 2011, 08:10) *
Но неприятно, что вы создаете темы в виде опросов сами не имея ничего сказать.

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

Цитата(AlexandrY @ Jul 14 2011, 09:10) *
Посмотрев исходники могу 100% утверждать, что у вас никаких шансов это сделать с нуля или как-то сильно по другому нет.


Поживем, увидим. На 100% утверждать..., как то наивно.

P.S. Как уже писал в первом посте – критика будет полезна. За Вашу ссылку, спасибо!
sergeeff
Цитата
Свой растеризатор, разве это не понятно?


Сколько я такого слышал за последние годы: свой DOS, Windows, C, C++. Где оно все? Хоть что-то доведено до логического конца? Продается?

Вот и вы туда же. Посмотрели бы для, начала, сколько ушло времени на доведение до ума проекта freetype. Нечем в жизни заняться?
Danis
.
AlexandrY
Цитата(Danis @ Jul 14 2011, 08:47) *
Поживем, увидим. На 100% утверждать..., как то наивно.

P.S. Как уже писал в первом посте – критика будет полезна. За Вашу ссылку, спасибо!


Ладно не 100%. Хотя это был прогноз скорее на текущий год. biggrin.gif
Связываться с векторными шрифтами имеет смысл только потому что их создано уже.
А придумывать собственный формат не имея шрифтов эт извините..., надо сильно аргументировать.
Danis
Цитата(AlexandrY @ Jul 14 2011, 09:51) *
А придумывать собственный формат не имея шрифтов эт извините..., надо сильно аргументировать.


Я писал о растеризации векторных объектов, в том числе таковых шрифтов. Придумывать их и в мыслях не было. "не имея шрифтов" - откуда такое утверждение? Скорее вы меня не поняли,
возможно, из-за неоднозначного толкования, что есть растеризация. По мне так - это перевод векторного изображения, в пиксели, для вывода на дисплей.

Сейчас приглядываюсь к SVG - язык разметки масштабируемой векторной графики.
ar__systems
Цитата(Danis @ Jul 13 2011, 03:04) *
Привет коллеги по цеху!

Решил поработать с векторными шрифтами в своем проекте с TFT. Там у меня STM32F103ZET6 стоит (привожу для оценки ресурса). В настоящее время используются растровые шрифты, записанные во внешнюю NOR flash. Как Вы понимаете это большие расходы на драгоценную память, особенно при желании иметь разные размеры и заливки шрифта. Как думаете, или знаете, «покатит» ли растеризация векторных шрифтов на такой машине, возможно предложите быстрые алгоритмы растеризации, ссылки на полезные источники, приму с благодарностью. Будет полезна любая критика, давайте пообсуждаем, кто, что применяет.

Что делаем: примитивно растеризуем на этапе компиляции в шрифты фиксированного размера, с помощью imageMagick. Затем превращаем в массив на С и линкуем к проекту.

Растеризация в run-time - извращение.

Цитата(aaarrr @ Jul 13 2011, 08:59) *
ИМХО, лучше компрессировать растровые, ибо быстрее и проще - 4bpp растровый шрифт утаптывается примерно в 15 раз.

Долго эксперементировал с bpp -- выше 3bpp визальное улучшение шрифтов практически незаметно.
sergeeff
Цитата(ar__systems @ Jul 18 2011, 01:30) *
Растеризация в run-time - извращение.


Что-то вы больно строго. Не приходилось еще с китайскими шрифтами работать? Или когда по техническому заданию надо иметь 48 разных размеров?

Не все советы покрывают собой возможные практические случаи.
ar__systems
Цитата(sergeeff @ Jul 18 2011, 01:59) *
Что-то вы больно строго. Не приходилось еще с китайскими шрифтами работать? Или когда по техническому заданию надо иметь 48 разных размеров?

Не все советы покрывают собой возможные практические случаи.

Может и есть крайние случаи, для которых может пригодиться растеризация в run-time. Но их еще надо поискать sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.