Шрифтовая графика - PullRequest
       18

Шрифтовая графика

1 голос
/ 27 сентября 2008

Как вы делаете свои собственные шрифты? Я не хочу тяжелый алгоритм (freetype, TrueType, Adobe и т. Д.) И будет хорошо с предварительно отрисованных растровых шрифтов.

Я хочу сглаживания и, если возможно, хотел бы использовать пропорциональные шрифты.

Я слышал, что могу использовать Gimp для рендеринга (с некоторой последующей обработкой?)

Я разрабатываю для встроенного устройства с ЖК-дисплеем. У него 32-битный процессор, но я не хочу запускать Linux (излишнее - слишком много кода / пространства данных для слишком малой функциональности, которую я бы использовал)

C. C ++ при необходимости, но C предпочтительнее. Алгоритмы и идеи / концепции хороши на любом языке ...

-Adam

Ответы [ 4 ]

4 голосов
/ 27 сентября 2008

В мои старые демо-сцены я часто рисовал все символы шрифта в одном большом растровом изображении. В коде я сохранил координаты (X, Y) каждого символа в шрифте, а также ширину каждого символа. Высота обычно была постоянной по всему шрифту. Если пробел не является проблемой, вы можете поместить все символы в сетку, то есть - иметь постоянное расстояние между верхним левым углом каждого символа.

Рендеринг текста становится копированием по одной букве за раз в целевую позицию. В то время я обычно резервировал один цвет как «прозрачный», но вы определенно могли бы использовать альфа-канал для этого сегодня.

Более простой подход, который можно использовать для небольших ч / б шрифтов, заключается в определении символов непосредственно в коде:

LetterA  db 01111100b
         db 11000110b
         db 11000110b
         db 11111110b
         db 11000110b
         db 11000110b

Формат файла XPM на самом деле представляет собой формат файла с синтаксисом C, который можно использовать как гибридное решение для хранения символов.

1 голос
/ 09 февраля 2009

Мы используем растровые шрифты, созданные генератором растровых шрифтов anglecode # s:

http://www.angelcode.com/products/bmfont/

Это очень удобно, так как имеет вывод XML, который будет легко преобразовать в любой формат данных, который вам нужен.

bmfont от Angel Code также добавляет кернинг и улучшенную упаковку к старой альтернативе MudFont.

1 голос
/ 29 сентября 2008

Мы успешно использовали пакет SRGP для шрифтов. Мы использовали шрифты с фиксированным шагом, поэтому я не уверен, что они могут быть пропорциональными.

1 голос
/ 27 сентября 2008

Предварительно отрендеренные растровые шрифты - это, вероятно, путь. Визуализируйте ваш шрифт любым способом, расположите символы в сетке и сохраните изображение в простом несжатом формате, таком как PPM, BMP или TGA. Если вы хотите сглаживания, убедитесь, что вы используете формат, который поддерживает прозрачность (BMP и TGA делают; PPM нет).

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

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

...