VGA Font Editor
v4.2.0
これは、VGA ROMフォント用のクロスプラットフォームエディターおよびライブラリです。これには、ロードされたフォントを使用してテキストをレンダリングするためのコードがあります。ソースコードはQB64-PEで記述されており、サードパーティのライブラリを使用せずにネイティブに機能します。




git submodule update --init --recursive初期化、フェッチ、チェックアウトGitサブモジュールを再編成するF5を押してコンパイルして実行します ' 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ビット幅であるため、各バイトに正確に1つの行が含まれています。典型的な8x16フォントの文字「a」については(バイナリで):
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(PCスクリーンフォント)は、さまざまなソースからの生のVGA ROMフォントダンプからのBIN2PSF変換ツールを使用して作成されました。これらのファイルは非常に小さく、組み込み、メモリ限定、またはレトロプロジェクトに適しています。ファイルは、ヘッダー用のほんの数バイトの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 firitionize、fetch、およびcheckout gitサブモジュール