Il s'agit d'un éditeur et d'une bibliothèque multiplateforme pour les polices ROM VGA. Cet code de rendu de texte à l'aide d'une police chargée. Le code source est écrit dans QB64-PE et fonctionne nativement sans utiliser de bibliothèques tierces.




git submodule update --init --recursive pour initialiser, récupérer et vérifier les sous-modules GitF5 pour compiler et exécuter ' 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 ) Que puis-je faire avec ça?
fonts . Honnêtement, je ne connais pas les soulages originaux de ceux-ci et vous recommande vivement de créer vos propres polices en utilisant cet outil pour vos projets.Qu'est-ce qu'une police ROM VGA?
Comment un personnage est-il stocké en mémoire?
C'est assez simple, 0 encode en arrière-plan, 1 code pour la couleur de premier plan. Les polices VGA ont toujours 8 bits de large pour que chaque octet contienne exactement une ligne. Pour la lettre «A» dans la police 8x16 typique, ce serait (en binaire):
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
Le bitmap complet contient des bitmaps pour chaque personnage, donc il est de 256 * 16 octets, 4096 octets de long (pour les polices 8x16). Si vous souhaitez obtenir le bitmap pour un caractère spécifique, vous devez multiplier le code ASCII par 16 (nombre de lignes dans un caractère pour les polices 8x16).
Quels sont ces fichiers PSF?
Ces PSF (PC Screen Font) ont été créées à l'aide de l'outil de conversion BIN2PSF à partir de vidages de police ROM VGA bruts à partir de diverses sources. Ces fichiers sont largement petits et adaptés aux projets intégrés, limités à mémoire ou rétro. Les fichiers sont presque un vidage brut de la police ROM VGA avec seulement quelques octets pour l'en-tête.
+--------------------------------------------+
| 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 pour initialiser, récupérer et vérifier les sous-modules Git