簡単です。フォントは解像度に合わせる必要はありません。ピクセル密度に合わせる必要があります。
ピクセル密度は、1インチあたりのピクセル数(PPI)、または1センチあたりのピクセル数として測定されます。密度非依存ピクセル(DP)と呼ばれる測定単位もあります。画面1dp
上で1ピクセルのサイズであると定義されてい160 PPI
ます。
フォントに戻って、このテストを試してください。ラップトップを720pで実行します。フォントのサイズを見てみましょう。次に、デスクトップの1080p 42インチモニターに差し込みます。モニターがそのサイズに関する正しい情報を出力する場合、フォントは720p画面とまったく同じサイズである必要があります。テキストがラップトップとデスクトップモニターのテキストのサイズは異なりましたが、解像度が大きいほどフォントの詳細がわかり、画面が大きいほど表示されるコンテンツが多くなります。
同じことがテキストエディタでも見られます。72pt
フォントは、画面上の紙に印刷するとき、それは同じだろうになります。
これは、すべてのディスプレイサイズで同じサイズを希望することを意味します(一部の例外を除きます)。どこかに拠点を置きたい場合、Webサイトは通常12pt
フォントを使用し、MS Windowsはフォントを使用11pt
し12pt
ます。
このグラフ(回答の下部にも含まれています)は12pt
、CSSでの値がCSSでの値とほぼ等しいことを示してい16px
ます(これで十分に混乱しなかったかのように、CSSのpxは他のすべての場所のdpと同じです)。16dp
LibGDXでフォントを作成します。
ゲームでは、FreeTypeFontGenerator
を使用して動的にフォントを生成します。これにより、フォントを作成するときに画面密度を考慮することができます。
BitmapFont createFont(FreeTypeFontGenerator ftfg, float dp)
{
return ftfg.generateFont((int)(dp * Gdx.graphics.getDensity()));
}
//On Init
BitmapFont buttonFont = createFont(arial, 16); //16dp == 12pt
これは、Gdx.graphics.getDensity()
と等しいためYourScreenDensity/160
、160ppi画面でのサイズに合わせるための「スケール係数」であるため機能します。
前に述べた例外について:ロゴやプロモーションなどの場合は、画面サイズに応じてフォントのサイズを変更する必要があります。ただし、PhotoshopやGimpなどのグラフィックエディターでこれらを作成するほうがよいことに注意してください。とにかく。
もう1つの例外は、小さな画面上のテキストです。4.5"または小さな携帯電話の画面は、ウェアラブル。通常、あなたがコンテンツをスクロールさせるための時間を持っていない、またはあなただけの、その画面上でそんなにコンテンツを置く余裕することができません。あなたは、フォントの拡大縮小しよう1dp
として、ダウンをリーダーはおそらく電話を顔に非常に近づけますが、読むのに問題はないでしょう。
TL; DR:
- 物理的なサイズは、画面のサイズや解像度で直接変化することはありませんが、両方の組み合わせで
screenSize/resolution
有名です(有名なPPI)
- ptとdpについて考えてください。最終結果を描画する必要があるまで、画面のピクセルを忘れてください。
- 実行時に適切なサイズでフォントを作成します。
- dpをスクリーンピクセルに変換する:
pixels = dp * Gdx.graphics.getDensity();
- あなたがいないあなたがコンバータ与えないエンジンを使用している場合は、DP LibGDXのように
Gdx.graphics.getDensity()
、あなたが試すことができますdensityFactor = Screen.getPixelsPerInch() / 160.0f
、その後、pixels = dp * densityFactor
編集:
2014年6月25日、Google IOでMatiasがAndroid向けの新しいスタイルガイドラインを発表しました。これには、新しいRobotoフォントとタイポグラフィガイドラインが含まれています。次の表を参考にしてください。
EDIT2:
リンクが壊れた場合に備えて含まれているCSSフォントサイズ表: