Jump to content

Экранный шрифт ПК

PC Screen Font (PSF) — это формат растрового шрифта, который в настоящее время используется ядром Linux для консольных шрифтов. Документацию по формату файлов PSF можно найти в исходном коде утилит Linux kbd . [1] Формат описан Университетом Эйндховена. [2]

Формат файла

[ редактировать ]

Заголовок файла

[ редактировать ]

Каждый файл PSF начинается с заголовка. Существует два типа заголовков: PSF1 и PSF2. Все многобайтовые целые числа имеют порядок младших байтов (little endian).

заголовок psf1
Длина Описание Примечания
2 Магические байты Всегда 36 04
1 Режим шрифта PSF Различные флаги шрифтов, см. режимы шрифтов.
1 Размер глифа Размер глифа в байтах, 8-битное целое число без знака. Для psf1 размер символа всегда равен высоте глифа.
заголовок psf2
Длина Описание Примечания
4 Магические байты Всегда 72 b5 4a 86
4 Версия 32-битное целое число без знака, в настоящее время всегда 0
4 Размер заголовка 32-битное целое число без знака, размер заголовка в байтах (обычно 32).
4 Флаги 32-битное целое число без знака, см. Флаги шрифтов.
4 Длина 32-битное целое число без знака, количество глифов
4 Размер глифа 32-битное целое число без знака, количество байтов на глиф
4 Высота 32-битное целое число без знака, высота каждого глифа
4 Ширина 32-битное целое число без знака, ширина каждого глифа

Все глифы psf1 имеют ширину 8 пикселей.

Режимы шрифтов

[ редактировать ]

Режим шрифта в заголовке psf1 представляет собой 8-битное целое число без знака, содержащее различные флаги шрифта.

Биты режима шрифта
Значение ( шестнадцатеричное ) Имя Значение
0x01 PSF1_MODE512 Если этот бит установлен, шрифт будет содержать 512 символов. Если он не установлен, то шрифт будет содержать всего 256 символов.
0x02 PSF1_MODEHASTAB Если этот бит установлен, шрифт будет иметь таблицу Юникода .
0x04 PSF1_MODESEQ Эквивалент PSF1_MODEHASTAB

Флаги шрифтов

[ редактировать ]

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

Биты флагов шрифта
Значение (шестнадцатеричное) Имя Значение
0x00000001 PSF2_HAS_UNICODE_TABLE Если этот бит установлен, шрифт будет иметь таблицу Юникода.

Растровые изображения файлов

[ редактировать ]

Фактические данные глифа следуют сразу за заголовком. Каждый бит в каждом глифе представляет один пиксель шрифта: 0 — ненарисованный, 1 — нарисованный. Каждая строка каждого глифа дополняется целым числом байтов. Например, шрифт 12x12 будет иметь 2 байта в строке. Буква «А» в растровом изображении PSF размером 12x12 может выглядеть следующим образом:

           padding
 Font data    |
+----------+ +--+
000001100000 0000
000011110000 0000
000110011000 0000
001100001100 0000
011000000110 0000
110000000011 0000
111111111111 0000
111111111111 0000
110000000011 0000
110000000011 0000
110000000011 0000
110000000011 0000

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

Таблица Юникода

[ редактировать ]

Если файл PSF содержит таблицу Юникода, то каждый глиф имеет запись в таблице Юникода, причем первый глиф соответствует первой записи в таблице, второй глиф — второй записи и так далее. Формат записи в таблице Юникода зависит от типа заголовка PSF.

Таблица Юникода PSF1

[ редактировать ]

Записи в таблице Юникода файла PSF1 представлены как последовательность 16-битных целых чисел без знака с прямым порядком байтов, оканчивающихся на 0xffff. Первые целые числа в записи содержат символ Юникода, представленный соответствующим глифом. Эти символы Юникода продолжаются до тех пор, пока не встретится целое число 0xFFFE. Затем, начиная со значения 0xfffe, вместо того, чтобы представлять отдельные символы Юникода, числа представляют собой серии символов Юникода, которые соответствуют глифу, начиная новую серию с каждым встречающимся 0xfffe и останавливаясь, как только встречается 0xffff. Например, следующая серия 16-битных целых чисел без знака с прямым порядком байтов будет интерпретироваться следующим образом:

0xdead
0xbeef

0xfffe
0x3141
0x5926

0xfffe
0x1234
0x5678

0xffff

Всякий раз, когда встречается U+dead, U+beef, последовательность U+3141 U+5926 или последовательность U+1234 U+5678, отобразите глиф, соответствующий этой записи таблицы Юникода.

Таблица Юникода PSF2

[ редактировать ]

Записи в таблице Юникода файла PSF2 такие же, как и в файле PSF1, за исключением того, что символы Юникода представлены в UTF-8, последовательности Юникода начинаются с однобайтовой последовательности 0xfe, а не с двухбайтовой последовательности 0xfffe, а записи Юникода заканчиваются. с однобайтовой последовательностью 0xff, а не с двухбайтовой последовательностью 0xffff.

  1. ^ Организация ядра Linux (28 января 2007 г.). "psf.h" .
  2. ^ ВТ (1999). «Формат PSF» .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d5483014a1cbaae7486d194f770187de__1707721020
URL1:https://arc.ask3.ru/arc/aa/d5/de/d5483014a1cbaae7486d194f770187de.html
Заголовок, (Title) документа по адресу, URL1:
PC Screen Font - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)