реклама на сайте
подробности

 
 
> Операции с растровыми шрифтами
koluna
сообщение Jun 6 2012, 07:57
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Добрый день!

Имеется растровый шрифт (каждый символ в виде массива, допустим, 20х12 точек).
Необходимо сделать из простого шрифта (тонкого) выделенный (жирный).
Как это лучше сделать?
Есть ли какие-либо стандартные алгоритмы/пути решения?


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
MrYuran
сообщение Jun 6 2012, 08:13
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Подвигать каждый символ вправо, влево, вверх, вниз.
Потом все сложить.
Если слишком жирно, ограничиться одним сдвигом по горизонтали и вертикали.
Если недостаточно, GOTO 10.

// PS:
Если где совсем некрасиво, доработать по месту напильником sm.gif

Пример:
Прикрепленное изображение


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jun 6 2012, 15:41
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Достаточно утолщения по горизонтали:
bold_color(x,y) = max{ color(x,y), color(x-1,y) }
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jun 6 2012, 19:30
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



(где color — яркость штриха в точке)
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 18 2012, 10:06
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(MrYuran @ Jun 6 2012, 12:13) *
Подвигать каждый символ вправо, влево, вверх, вниз.
Потом все сложить.
Если слишком жирно, ограничиться одним сдвигом по горизонтали и вертикали.


Спасибо, попробуем.
Правда, межсимвольный интервал по горизонтали и вертикали наверняка пострадает sad.gif
Кстати, есть какие-нибудь правила оформления растровых шрифтов?

Цитата(Alexey Lukin @ Jun 6 2012, 19:41) *
Достаточно утолщения по горизонтали:
bold_color(x,y) = max{ color(x,y), color(x-1,y) }


А почему достаточно только утолщения по горизонтали?

P.S.: что-то уведомления с форума не приходят sad.gif


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 18 2012, 13:27
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Еще вопрос.
Как выполнить сглаживание масштабированных символов, чтобы они были без больших углов-перепадов?
Или как масштабировать символы так, чтобы не пришлось сглаживать? sm.gif

Сейчас масштабирую очень просто: беру матрицу символа и увеличиваю число нулей и единиц в нужное количество раз.
Масштабируется, но символы при большом увеличении получаются "угластые" sad.gif


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jun 18 2012, 15:22
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Цитата(koluna @ Jun 18 2012, 14:06) *
Правда, межсимвольный интервал по горизонтали и вертикали наверняка пострадает sad.gif

Ну естественно, при утолщении надо интервал оставлять тем же самым.

Цитата(koluna @ Jun 18 2012, 14:06) *
А почему достаточно только утолщения по горизонтали?

Иначе получится слишком жирно с вашими матрицами. Но это ещё зависит от шрифта. Попробуйте и так, и так.

Цитата(koluna @ Jun 18 2012, 17:27) *
Как выполнить сглаживание масштабированных символов, чтобы они были без больших углов-перепадов?

Использовать другие матрицы, сгенерированные под нужный размер.
Использовать векторные шрифты.
Использовать алгоритмы масштабирования изображений, адаптирующиеся к направлению границ, например градиентный или NEDI.
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 21 2012, 07:46
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(Alexey Lukin @ Jun 18 2012, 19:22) *
Ну естественно, при утолщении надо интервал оставлять тем же самым.


Кстати, как обычно регулируются зазоры между символами шрифта (лево, право, верх, низ)?
С помощью пустых точек (полей) внутри каждого символа (допустим, шрифт 10х12, а символ располагается в середине матрицы и имеет размер 8х10 - зазор по одной точке с каждой стороны) или другим способом?

Цитата
Использовать другие матрицы, сгенерированные под нужный размер.


Т. е, под каждый размер каждого шрифта иметь свой набор символов? Затратно с точки зрения памяти (допоустим, 4 шрифта, увеличение до 8 раз каждого)...

Цитата
Использовать векторные шрифты.


В микроконтроллере? sm.gif

Можете порекомендовать какой-нибудь софт для рисования растровых шрифтов (желательно бесплатный)?


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
skripach
сообщение Jun 21 2012, 10:11
Сообщение #9


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
В микроконтроллере? sm.gif

Микроконтролёры разные бывают, у когото пик, а у когото омап4. sm.gif
Цитата
Можете порекомендовать какой-нибудь софт для рисования растровых шрифтов (желательно бесплатный)?

Вот например.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 21 2012, 13:32
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(skripach @ Jun 21 2012, 14:11) *
Микроконтролёры разные бывают, у когото пик, а у когото омап4. sm.gif


LPC1768.
Монохромная печать.
Вот думаю, стоит связываться с векторными шрифтами или не стоит..

Цитата
Вот например.


Спасибо.
Кстати, что там для растеризации используется, интересно...


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
koluna
сообщение Jun 22 2012, 12:12
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Кстати, в каком виде обычно поставляются готовые шрифты (растровые)?
Обычный, жирный, курсив и т. д. отрисовываются отдельно или всегда поставляется только один обычный шрифт, а из него с помощью всяких манипуляций делают то, что нужно?


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
i-mir
сообщение Jun 27 2012, 09:33
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 17-06-10
Из: Киев
Пользователь №: 57 986



Шрифт это своего рода самодостаточная "сущность", которая не может быть получена
манипуляциями на плоскости из уже имеющихся.

Сделать конечно можно - но выйдет не шрифт.
Кстати такой подход часто используют в наружных рекламах - вид ужасный.

Обычно загружают оба шрифта в память или вектора.

Go to the top of the page
 
+Quote Post
skripach
сообщение Jun 27 2012, 19:07
Сообщение #13


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
LPC1768
Монохромная печать.

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


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01456 секунд с 7
ELECTRONIX ©2004-2016