Ini adalah editor lintas platform dan perpustakaan untuk font VGA ROM. Ini memiliki kode untuk rendering teks menggunakan font yang dimuat. Kode sumber ditulis dalam QB64-PE dan bekerja secara asli tanpa menggunakan perpustakaan pihak ketiga mana pun.




git submodule update --init --recursive untuk menginisialisasi, ambil dan checkout git submodulesF5 untuk mengkompilasi dan menjalankan ' 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 ) Apa yang bisa saya lakukan dengan ini?
fonts . Sejujurnya saya tidak tahu souce orginal dari ini dan sangat merekomendasikan Anda untuk membuat font Anda sendiri menggunakan alat ini untuk proyek Anda.Apa itu font VGA ROM?
Bagaimana karakter disimpan dalam memori?
Cukup sederhana, 0 mengkodekan latar belakang, 1 mengkodekan warna latar depan. Font VGA selalu selebar 8 bit sehingga setiap byte berisi tepat satu baris. Untuk huruf 'A' dalam font khas 8x16 itu akan (dalam biner):
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
Bitmap penuh berisi bitmap untuk setiap karakter, sehingga 256*16 byte, panjang 4096 byte (untuk font 8x16). Jika Anda ingin mendapatkan bitmap untuk karakter tertentu, Anda harus melipatgandakan kode ASCII dengan 16 (jumlah baris dalam karakter untuk font 8x16).
Apa file PSF ini?
PSFS ini (font layar PC) dibuat menggunakan alat konversi BIN2PSF dari dump VGA ROM mentah dari berbagai sumber. File -file ini sangat kecil dan cocok untuk proyek tertanam, terbatas memori atau retro. File -file tersebut hampir merupakan dump mentah dari font VGA ROM dengan hanya beberapa byte untuk 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 untuk menginisialisasi, ambil dan checkout git submodules