Инструменты пользователя

Инструменты сайта


subjects:programming:fnt:start

FNT (old)

page59

Решил сохранить (2024-08-10) на будущее, т.к. похоже, что оригинал утрачен. Речь тут идёт о старой версии шрифта. Это очень простой формат, который использовался ещё во времена MS-DOS.

Русские растровые шрифты с кодировкой WIN1251 размеры 8x8 и 8x16

Как устроен растровый шрифт?

Растровый шрифт, это такой шрифт в котором каждый бит байта шрифта определяет какая точка должна быть закрашена а какая пуста, соответственно бит =1 точка закрашена, а бит =0 точка пуста.

Поясню на примере, как устроен растровый шрифт. Скажем мы имеем байт со значением 126, в шестнадцатеричке это 7E, а в бинарке: 01111110 Теперь представим что байт это линия на экране и там, где биты установлены в 1 там точки, а где 0 там фон. А теперь ход конём! Представим, что у нас 8 байт и тот самый (с значением 126) в серединке:

00000000
00111110
01000010
01000010
01111110
01000010
01000010
00000000

Для наглядности заменю 1 на символ «@» а нули на символ «_»:

________
__@@@@@_
_@____@_
_@____@_
_@@@@@@_
_@____@_
_@____@_
________

Вот так, байт за байтом и составлены символы в растровом шрифте из отдельных пикселей.

Естественно есть 2 варианта растровых шрифтов:

  • горизонтальные (у которых байт определяет точки в одной горизонтальной линии);
  • вертикальные (у которых байт определяет точки в одной вертикальной линии).

Например, в MS-DOS шрифты горизонтальные, а для некоторых (если не для большинства) термопринтеров шрифты вертикальные. Растровые шрифты моноширные (ширина всех символов одинаковая), с одной стороны это плюс - легко вычислить где окажется тот или иной символ в выводе и можно даже картинки рисовать символами, а с другой минус - даже ради точки «.» приходится тратить поле 8х8 точек на устройстве вывода (на бумаге или дисплее).

Плюсы и минусы растровых шрифтов.

  • + Для вывода текста растровым шрифтом требуется минимум вычислительной мощности.
  • - Растровый шрифт не масштабируется.

Есть и другие плюсы и минусы, но они проявляются в конкрытных задачах по разному.

Так или иначе, в ряде случаев, например при работе с дисплеем от Nokia 3310 из микроконтроллера ATmega8 или при создании драйвера для не русифицированного китайского чекового принтера на который невозможно найти документацию, лучше всего подходит именно применение растрового шрифта.

Русские растровые шрифты 8x8 и 8x16 с кодировкой WIN1251

Русские растровые шрифты 8×8 и 8×16 с кодировкой WIN1251

Исходный код примера на C (си) для работы с растровым шрифтом

unsigned char MyFont[]; // сюда прежде нужно положить бинарные данные из шрифта 8x8
 
void OutputStringToBufferType8x8(){
unsigned char MyString[]="Алилуя!";
unsigned char OuBuffer[7*8]; // "Алилуя!" - 7 символов, шрифт 8 байт (горизонтальных линий) на символ
unsigned char n, m, offs, symb;
unsigned char posou=0;
for (n=0; n<250; n++){
	symb=MyString[n];
	if (symb == 0){n=250;}else{
		offs=symb*8; // позиция откуда взять байты шрифта из которых будет сформирован символ
		for(m=0; m<8; m++){
			OuBuffer[posou]=MyFont[offs]; posou=posou+1; offs=offs+1;
		} // копируем 8 байт шрифта со смещения соответствующего коду символа в буфер вывода
	}
}
/*
здесь можно уже выводить готовую строку нарисованную нашим шрифтом
на устройство вывода.
Для китайского термопринтера это было просто:
нужно было лишь сунуть в COM порт команду "печатай графическую строку"
и загнять далее побайтно то, что надо напечатать в этой строке,
то есть просто перегнать байты из OuBuffer в COM порт.
Кстати, там шрифт был нужен перевёрнутый, то есть вертикальный,
а в zip архиве я выкладываю горизонтальные.
Перевернуть шрифт на 90 градусов просто, нужно лишь сделать процедуру:
первый бит первого байта шрифта кладём в первый бит первого байта перевёртыша,
второй бит первого байта шрифта кладём в первый бит второго байта перевёртыша,
третий бит первого байта шрифта кладём в первый бит третьего байта перевёртыша,
и так 8 раз, пока не заполним в перевертыше 8 байт,
затем следующий символ 8x8 ...
Естественно не надо переворачивать каждый раз при выводе символа,
просто 1 раз перевернуть если надо и потом точно так же выводить
текст перевертышем.
*/
}

Это весьма простой пример исходника, лишь показывающий что надо делать для вывода текста растровым шрифтом на дисплеи, принтеры и даже в bmp картинки.

Источники

  • Оригинал: electronics-and-mechanics.azm.su/page59.html © Русские растровые шрифты с кодировкой WIN1251 размеры 8×8 и 8×16. на Электроника и механика (записки от AZM) от AZM
  • Копия 1 файла: md5: 3bd4658b3e59d6e97e73be7c755f0ce3
subjects/programming/fnt/start.txt · Последние изменения: 2025/07/04 20:03 —

На главную страницу Обучение Wikipedia Тестирование Контакты Нашли ошибку? Справка

Записаться на занятия

Ошибка Записаться на занятия к репетитору

Телефоны:

  • +7 (910) 874 73 73
  • +7 (905) 194 91 19
  • +7 (831) 247 47 55

Skype: eduVdom.com

закрыть[X]
Наши контакты