Это кроссплатформенный редактор и библиотека для VGA ROM-шрифтов. Это имеет код для рендеринга текста с использованием загруженного шрифта. Исходный код написан в QB64-PE и работает назначенным без использования каких-либо сторонних библиотек.




git submodule update --init --recursive для инициализации, извлечения и оформления подмодулей GITF5 , чтобы компилировать и запустить ' For rendering
FUNCTION PSF1_LoadFontFromMemory% % (buffer AS STRING , psf AS PSF1Type)
FUNCTION PSF1_LoadFontFromFile% % (fileName AS STRING , psf AS PSF1Type)
SUB PSF1_SetCurrentFont (psf AS PSF1Type)
FUNCTION PSF1_GetFontWidth ~%%
FUNCTION PSF1_GetFontHeight ~%%
FUNCTION PSF1_GetDrawStringWidth& (text AS STRING )
SUB PSF1_DrawCharacter (cp AS _UNSIGNED _BYTE, x AS LONG , y AS LONG )
SUB PSF1_DrawString (text AS STRING , x AS LONG , y AS LONG )
' Used by the editor
SUB PSF1_SetFontHeight (h AS _UNSIGNED _BYTE)
FUNCTION PSF1_GetFont$
FUNCTION PSF1_SetFont% % (buffer AS STRING )
FUNCTION PSF1_GetGlyphBitmap$ (cp AS _UNSIGNED _BYTE)
SUB PSF1_SetGlyphBitmap (cp AS _UNSIGNED _BYTE, bmp AS STRING )
FUNCTION PSF1_GetGlyphPixel% % (cp AS _UNSIGNED _BYTE, x AS LONG , y AS LONG )
SUB PSF1_SetGlyphPixel (cp AS _UNSIGNED _BYTE, x AS LONG , y AS LONG , b AS _BYTE)
SUB PSF1_SetGlyphDefaultBitmap (cp AS _UNSIGNED _BYTE)
FUNCTION PSF1_SaveFont% % (fileName AS STRING ) Что я могу с этим сделать?
fonts . Честно говоря, я не знаю организованных их и настоятельно рекомендую вам создать свои собственные шрифты, используя этот инструмент для ваших проектов.Что такое шрифт VGA ROM?
Как персонаж хранится в памяти?
Это довольно просто, 0 кодирует фон, 1 кодирует цвет переднего плана. VGA шрифты всегда имеют ширину 8 бит, так что каждый байт содержит ровно один ряд. Для письма «A» в типичном шрифте 8x16 это было бы (в двоичном):
00000000b byte 0
00000000b byte 1
00000000b byte 2
00010000b byte 3
00111000b byte 4
01101100b byte 5
11000110b byte 6
11000110b byte 7
11111110b byte 8
11000110b byte 9
11000110b byte 10
11000110b byte 11
11000110b byte 12
00000000b byte 13
00000000b byte 14
00000000b byte 15
Полная растровая карта содержит растровые изображения для каждого символа, таким образом, это 256*16 байтов, длиной 4096 байтов (для шрифтов 8x16). Если вы хотите получить растровое изображение для определенного символа, вы должны умножить код ASCII на 16 (количество строк в символе для шрифтов 8x16).
Что это за файлы PSF?
Эти PSF (шрифт экрана ПК) были созданы с использованием инструмента преобразования BIN2PSF из необработанных дамп шрифтов VGA ROM из различных источников. Эти файлы очень малы и подходят для встроенных, ограниченных или ретро -проектов. Файлы - это почти необработанный дамп шрифта VGA ROM с несколькими байтами для заголовка.
+--------------------------------------------+
| PSF1_MAGIC0 0x36 (1 byte) |
+--------------------------------------------+
| PSF1_MAGIC1 0x04 (1 byte) |
+--------------------------------------------+
| MODE (1 byte; set to 0) |
+--------------------------------------------+
| FONT HEIGHT (1 byte) |
+--------------------------------------------+
| CHAR 1 SCAN LINE 1 (1 byte) |
| CHAR 1 SCAN LINE 2 (1 byte) |
| CHAR 1 SCAN LINE 3 (1 byte) |
| CHAR 1 SCAN LINE 4 (1 byte) |
| CHAR 1 SCAN LINE 5 (1 byte) |
| .. |
| .. |
| .. |
| CHAR 1 SCAN LINE <FONT HEIGHT> (1 byte) |
+--------------------------------------------+
| CHAR 2 SCAN LINE 1 (1 byte) |
| CHAR 2 SCAN LINE 2 (1 byte) |
| CHAR 2 SCAN LINE 3 (1 byte) |
| CHAR 2 SCAN LINE 4 (1 byte) |
| CHAR 2 SCAN LINE 5 (1 byte) |
| .. |
| .. |
| .. |
| CHAR 2 SCAN LINE <FONT HEIGHT> (1 byte) |
+--------------------------------------------+
| .. |
| .. |
| .. |
+--------------------------------------------+
| .. |
| .. |
| .. |
+--------------------------------------------+
| .. |
| .. |
| .. |
+--------------------------------------------+
| CHAR 256 SCAN LINE 1 (1 byte) |
| CHAR 256 SCAN LINE 2 (1 byte) |
| CHAR 256 SCAN LINE 3 (1 byte) |
| CHAR 256 SCAN LINE 4 (1 byte) |
| CHAR 256 SCAN LINE 5 (1 byte) |
| .. |
| .. |
| .. |
| CHAR 256 SCAN LINE <FONT HEIGHT> (1 byte) |
+--------------------------------------------+
git submodule update --init --recursive для инициализации, извлечения и оформления заказа git подмодулей