Este es un editor y biblioteca multiplataforma para las fuentes ROM VGA. Esto tiene código para representar texto usando una fuente cargada. El código fuente está escrito en QB64-PE y funciona de forma nativa sin usar bibliotecas de terceros.




git submodule update --init --recursive para inicializar, obtener y pagar los submódulos GitF5 para compilar y ejecutar ' 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 ) ¿Qué puedo hacer con esto?
fonts . Sinceramente, no conozco los Souces Orginales de estos y le recomiendo que cree sus propias fuentes utilizando esta herramienta para sus proyectos.¿Qué es una fuente de ROM VGA?
¿Cómo se almacena un personaje en la memoria?
Es bastante simple, 0 codifica fondo, 1 codifica el color de primer plano. Las fuentes VGA siempre tienen 8 bits de ancho para que cada byte contenga exactamente una fila. Para la letra 'A' en la típica fuente 8x16 sería (en binario):
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
El mapa de bits completo contiene mapas de bits para cada personaje, por lo que son 256*16 bytes, 4096 bytes de largo (para 8x16 fuentes). Si desea obtener el mapa de bits para un carácter específico, debe multiplicar el código ASCII por 16 (número de filas en un carácter para 8x16 fuentes).
¿Cuáles son estos archivos PSF?
Estos PSF (fuente de pantalla de PC) se crearon utilizando la herramienta de conversión Bin2PSF de los vertederos de fuentes ROM ROM RAW de varias fuentes. Estos archivos son ampliamente pequeños y adecuados para proyectos integrados, de memoria limitados o retro. Los archivos son casi un volcado en bruto de la fuente de ROM VGA con solo unos pocos bytes para el encabezado.
+--------------------------------------------+
| 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 para inicializar, obtener y pagar los submódulos Git