Dies ist ein plattformübergreifender Editor und eine Bibliothek für VGA ROM-Schriftarten. Dies enthält Code zum Rendern von Text mit einer geladenen Schriftart. Der Quellcode ist in QB64-PE geschrieben und funktioniert nativ, ohne Bibliotheken Dritter zu verwenden.




git submodule update --init --recursive aus, um Git -Submodules zu initialisieren, abzurufen und zu überprüfenF5 , um zu kompilieren und zu laufen ' 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 ) Was kann ich damit machen?
fonts . Ich kenne ehrlich gesagt nicht die orginalen Souces dieser und empfehle Ihnen dringend, Ihre eigenen Schriftarten mit diesem Tool für Ihre Projekte zu erstellen.Was ist eine VGA -Rom -Schriftart?
Wie wird ein Charakter im Gedächtnis gespeichert?
Es ist ganz einfach, 0 codiert Hintergrund, 1 codiert die Vordergrundfarbe. VGA -Schriftarten sind immer 8 Bit, so dass jedes Byte genau eine Reihe enthält. Für Buchstaben 'a' in der typischen 8x16 -Schriftart wäre es (in binär):
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
Die vollständige Bitmap enthält Bitmaps für jeden Charakter, daher sind es 256*16 Bytes, 4096 Bytes lang (für 8x16 -Schriftarten). Wenn Sie die Bitmap für ein bestimmtes Zeichen erhalten möchten, müssen Sie den ASCII -Code mit 16 (Anzahl der Zeilen in einem Zeichen für 8x16 -Schriftarten) multiplizieren.
Was sind diese PSF -Dateien?
Diese PSFs (PC -Screen -Schriftart) wurden mit dem Bin2psf -Konvertierungswerkzeug aus RAW VGA ROM -Schriftartausleger aus verschiedenen Quellen erstellt. Diese Dateien sind äußerst klein und für eingebettete, maßgeschneiderte oder retro -Projekte geeignet. Die Dateien sind fast eine rohe Müllkippe der VGA ROM -Schriftart mit nur wenigen Bytes für den Header.
+--------------------------------------------+
| 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 verwenden, um Git -Submodules zu initialisieren, abzurufen und zu überprüfen