回答:
これを行うには、3つの一般的な方法があります。アーティファクトを完全に排除することではなく、無制限のメモリまたはプロセッサ時間がない限り不可能ですが、既存のコードおよびターゲットプラットフォームに適合するようにアーティファクトを最小限に抑える方法です。
まず、フォントラスタライザ(通常はFreeType)を使用して、拡大するときに必要なサイズでフォントをラスタライズします。これはスクリーンショットでは見栄えがよくなりますが、非常に遅くなります。サイズをキャッシュすることで速度の低下を解決できますが、その場合、メモリが非常に消費されます。また、静的な表示でグリフを適切に表示するには、グリフを不均一にスケーリングする必要があるため、動きがあまりよくありません。それでも、十分なメモリを備えたプラットフォーム(PCなど)を使用していて、スケールが10pxから30pxなどの小さな範囲に制限されている場合はオプションです。この方法は、それだけで多くのキャンディーを受け入れることもできません。
次に、テキストをメッシュとして保存できます。GLTTのように、これを行うためにいくつかのライブラリが存在しますが、独自に作成することもできます。これでピクセルアーティファクトはなくなりましたが、3Dゲームの他のメッシュと同じように、非常に近くでズームインすると、ポリゴンアーティファクトが生じます。頂点シェーダーを適用したり、メッシュを他の世界の描画とインターリーブしたりできるため、メッシュテキストは目の保養になります。メモリとCPUがかなり軽量で、標準のメッシュであるため、コストを簡単に測定できます。通常のスプライトベースの2Dレンダリングパイプラインに統合するのは面倒です。
3番目に、距離フィールドをピクセルシェーダーと組み合わせて使用できます。これは現在人気のある比較的新しい手法で、シンプルなシェーダーを使用して既製のテクスチャをサンプリングし、ビデオカードの「無料」バイリニアフィルタリングを使用してグリフをきれいに拡大します。それは他の方法と比較してほとんど、そして簡単に予測できるメモリを使用します-フォントごとの文字セットごとに0.5MBから1MBのテクスチャ。スプライトベースであるため、スプライトベースのレンダリングパイプラインにうまく適合します。各グリフはテクスチャ化されたクワッドです。ピクセルアーティファクトは生成されますが、テクスチャをスケーリングする他の方法と比較するとごくわずかです。ピクセルシェーダーが利用できない場合の固定機能のフォールバックもありますが、テキストは非常にエイリアス化されます。サンプリングはピクセルシェーダーで行われるため、アウトラインやシャドーイングなど、安くて見栄えがします。
曲線と線の組み合わせからフォント文字を作成する必要があります。次に、実行時に適切な詳細レベルでジオメトリに変換します。
幸い、ほとんどのフォントはすでにベジエ曲線から作成されています。曲線データを取得するには、標準のWindows GetGlyphOutline()関数を使用してそれらを抽出するだけです。
PInvokeなしでC#からその曲線データを取得できるかどうかはわかりません。
あなたはfreetypeを見てみたいかもしれません。あなたのプラットフォームで利用できるのか、ライセンスが適用できるのかはわかりませんが、True-Typeやその他のベクターフォントをレンダリングするためのかなり優れたオープンソースライブラリです。私は、フォントを美的に楽しい方法でレンダリングするために、巧妙な弁護士のコードをかわす必要があったと思います。真のタイプの方法は、標準の単純なアンチエイリアスを使用する場合のように重要なフォント機能(垂直やセリフなど)がぼやけないように、レンダラーにヒントを提供するために曲線上のバイトコードを含みます。その技術は特許を持っているので、フリータイプの人々は仕事をする何か他のものを考え出さなければならなかった、そしてアップルの恐ろしい弁護士獣(私は思う)を呼び出さなかった。とにかく、法的なことはさておき、フリータイプを調べてみてくださいhttp://freetype.sourceforge.net/index2.html