1

独自のフォントはどのように作成しますか? 重いアルゴリズム (freetype、truetype、adobe など) は必要なく、事前にレンダリングされたビットマップ フォントで問題ありません。

アンチエイリアシングが必要で、可能であればプロポーショナル フォントが必要です。

Gimp を使用してレンダリングを行うことができると聞いたことがあります (いくつかの後処理が必要ですか?)

LCDを搭載した組み込みデバイス向けに開発しています。32 ビット プロセッサを搭載していますが、Linux を実行したくありません (やり過ぎ - 使用する機能が少なすぎるため、コード/データ スペースが多すぎます)。

C. 必要に応じて C++。ただし、C が推奨されます。アルゴリズムとアイデア/コンセプトは、どの言語でも問題ありません...

-アダム

4

4 に答える 4

4

以前のデモシーンでは、フォント内のすべての文字を1つの大きなビットマップイメージに描画することがよくありました。コードには、各文字の(X、Y)座標と、各文字の幅をフォントに格納しました。高さは通常、フォント全体で一定でした。スペースが問題にならない場合は、すべての文字をグリッドに配置できます。つまり、各文字の左上隅の距離を一定にします。

テキストのレンダリングは、一度に1文字ずつコピー先の位置にコピーするだけの問題になります。当時、私は通常、1つの色を「透明な」色として予約していましたが、今日は間違いなくアルファチャネルを使用できます。

小さい白黒フォントに使用できるより簡単なアプローチは、コードで文字を直接定義することです。

LetterA  db 01111100b
         db 11000110b
         db 11000110b
         db 11111110b
         db 11000110b
         db 11000110b

XPMファイル形式は、実際には、文字を格納するためのハイブリッドソリューションとして使用できるC構文のファイル形式です。

于 2008-09-27T15:25:54.880 に答える
1

事前にレンダリングされたビットマップフォントは、おそらく行く方法です。何でも使用してフォントをレンダリングし、文字をグリッドに配置し、PPM、BMP、TGAなどの単純な非圧縮形式で画像を保存します。アンチエイリアスが必要な場合は、透明性をサポートする形式を使用してください(BMPとTGAはサポートしますが、PPMはサポートしません)。

比例幅をサポートするには、グリッドから各文字の幅を抽出する必要があります。これを行う簡単な方法はありません。グリッドを生成する方法によって異なります。おそらく、各文字を分析して最小のバウンディングボックスを見つけるための短い小さなプログラムを書くことができます。幅のデータを取得したら、それを各文字の座標とサイズを含む補助ファイルに入れます。

最後に、文字列をレンダリングするには、各文字を検索し、その長方形をフォントビットマップからフレームバッファにビットブリットして、文字の幅だけラスター位置を進めます。

于 2008-09-27T15:41:10.567 に答える
1

anglecode#sビットマップフォントジェネレーターによって生成されたビットマップフォントを使用しています:

http://www.angelcode.com/products/bmfont/

必要なデータ形式に簡単に変換できるXML出力があるため、これは非常に便利です。

Angel Codeのbmfontは、MudFontであった古い代替手段にカーニングとより良いパッキングも追加します。

于 2009-02-09T13:17:05.103 に答える
1

SRGP パッケージをフォントに使用することに成功しました。固定ピッチ フォントを使用したので、プロポーショナル フォントが使用できるかどうかはわかりません。

于 2008-09-29T15:16:00.470 に答える