質問

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

アンチエイリアスが必要です。可能な場合はプロポーショナルフォントが必要です。

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

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

C。必要に応じてC ++が使用されますが、Cが推奨されます。アルゴリズムとアイデア/概念はどの言語でも問題ありません...

-アダム

役に立ちましたか?

解決

昔のデモシーンでは、フォント内のすべての文字を1つの大きなビットマップ画像に描くことがよくありました。コードでは、フォントの各文字の(X、Y)座標と各文字の幅を保存しました。通常、高さはフォント全体で一定でした。スペースが問題にならない場合は、すべての文字をグリッドに入れることができます。つまり、各文字の左上隅の間隔を一定にすることができます。

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

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

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

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

他のヒント

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

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

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

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

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top