2

私は Python ローグライクの進歩を続け、このチュートリアルにさらに飛び込みました: http://roguebasin.roguelikedevelopment.org/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod . このゲームで使用する独自のフォントも作成しましたが、その方法がわかりません。これは、私が現在使用しているフォント イメージへのリンクです: http://i.imgur.com/j6FdNky.png。Python コードでは、カスタム フォントをそのフォント イメージである「arial10x10.png」に設定します。自作フォントで画像を作ってみたのですが、かなり歪んでしまいました。

自分のフォントを実装する方法を知っている人はいますか? また、libtcod を使用しており、.ttf 形式の独自のフォントしかありません。ありがとう。

4

1 に答える 1

4

libtcod が期待する方法で TrueType フォントをビットマップにレンダリングするには、別のライブラリを使用する必要があります。フォントのレンダリングは驚くほど複雑な作業です。FreeType は、フォント レンダリング用の非常に人気のあるオープン ソース ライブラリです。Python インターフェイスはhttp://code.google.com/p/freetype-py/にあります。実際のゲームではなく、ローグライクを開発するときに使用するツールでのみ FreeType を使用する必要があります。

まず、ローグライクで使用するキャラクターを決定します。これらの文字をフォント シートに配置する方法を決定します。投稿した画像と同じレイアウトを使用することもできます。これは、スペース文字 (文字 32) で始まる 32 列のシートです。

フォント レンダリング ライブラリを使用して、各文字を目的のサイズで単独でレンダリングします。それぞれに生成されるサイズに注意してください。たとえば、「.」同じフォント サイズでも、「w」は小さくなり、「w」は大きくなります。高さを計算するだけでなく、ベースラインより上の高さとベースラインより下の高さを計算する必要があります。(例: 'A' と 'g' が両方とも 16 ピクセルの高さの場合、ベースライン間で両方を正確に整列させるには 16 ピクセルよりも高い長方形が必要になる可能性があります。) 最小の長方形を見つけます。これらすべてのサイズに対応できるサイズ -- これは、フォント シートの各セルが必要とする大きさです。

シートの大きさがわかったら、必要なすべての文字をもう一度通過させてビットマップを作成し、各文字をセルに入れます。y 位置に関する限り、すべてのベースラインを揃える必要があります。一部の文字が他の文字よりも幅が広い場合は、各文字をセル内で中央揃えにするか左揃えにするかを選択できます。(これらにはそれぞれ独自の奇妙さがあります。ローグライクには固定幅フォントが本当に必要になります。)

その他のヒント:

  • アンチエイリアシングを使用します。これにより、純粋なモノクロよりも見やすいフォントになります。
  • 色を使用せず、フォントをグレースケールでレンダリングします。libtcod には、グレースケールのフォントシートから色付きのテキストを生成する機能があります。
  • 正方形のフォントが必要かどうかを検討してください。正方形フォントの利点は、ローグライク世界の「円」が画面上で円のように見えることです。短所は、一般に正方形のフォントは「醜く」、読みにくいことです。
于 2013-03-10T17:00:43.300 に答える