Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Операции с растровыми шрифтами
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
koluna
Добрый день!

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

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

Пример:
Нажмите для просмотра прикрепленного файла
Alexey Lukin
Достаточно утолщения по горизонтали:
bold_color(x,y) = max{ color(x,y), color(x-1,y) }
Alexey Lukin
(где color — яркость штриха в точке)
koluna
Цитата(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
koluna
Еще вопрос.
Как выполнить сглаживание масштабированных символов, чтобы они были без больших углов-перепадов?
Или как масштабировать символы так, чтобы не пришлось сглаживать? sm.gif

Сейчас масштабирую очень просто: беру матрицу символа и увеличиваю число нулей и единиц в нужное количество раз.
Масштабируется, но символы при большом увеличении получаются "угластые" sad.gif
Alexey Lukin
Цитата(koluna @ Jun 18 2012, 14:06) *
Правда, межсимвольный интервал по горизонтали и вертикали наверняка пострадает sad.gif

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

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

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

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

Использовать другие матрицы, сгенерированные под нужный размер.
Использовать векторные шрифты.
Использовать алгоритмы масштабирования изображений, адаптирующиеся к направлению границ, например градиентный или NEDI.
koluna
Цитата(Alexey Lukin @ Jun 18 2012, 19:22) *
Ну естественно, при утолщении надо интервал оставлять тем же самым.


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

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


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

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


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

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

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

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


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

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


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

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

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

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

Неужели вам мало полмегабайта флеш.
Мне кажется в LPC1768 для монохромного дисплея можно впихнуть любые шрифты, тем более что сглаженные шрифты не нужны.
Как вариант можно внешнюю память навесить.
С вектором я бы не стал заморачиваться.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.