1

私は Java で gui PC プログラムを作成しており、Java Swing を使用しています。問題は、特定のフォント、特定のサイズとスタイル、特定の文字列について、あるマシンでバウンディング ボックス (ピクセル単位) を計算することです。他のマシンでは、まったく同じフォントとまったく同じ文字列に対して、計算された境界ボックスが異なる可能性がありますか?

可能であれば(プログラムで得た結果によるとそうであるように思われます)、特定の文字列に対して、可能なすべてのマシンでまったく同じ境界ボックスを返すフォントをどのように定義できますか?

4

2 に答える 2

2

レンダリングはいくつかの要因に依存するため、できません。

  1. フォント自体: コンピューターによっては、要求したフォントがない場合や、フォントの名前が同じでも内容が異なる場合があります。これは、デプロイ可能なパッケージにカスタム フォントを埋め込むことで回避できます。
  2. 画面解像度: DPI の画面解像度に応じてフォントがレンダリングされます。密度の高い画面では、フォントが (ピクセル サイズで) 大きくなります。たとえば、通常の画面の解像度が 72dpi であるのに対し、Apple の Retina ディスプレイの解像度は 400dpi に近いと考えてください。高さ 72px の文字列は、通常の画面では 1 インチで十分に読めますが、0.18 インチしか占有せず、ほとんど読めません。
  3. ユーザーは自分のフォントのサイズをカスタマイズする権利を持っています。私が老眼の場合は、フォント サイズを大きくしたいと思います。

編集

または、事前にレンダリングされた文字列 (ラスター グラフィックスとして、または SVG パスとして保存されたもの) を使用してシステムを騙すこともできますが、私が提示した問題に注意してください。

于 2013-08-25T08:42:04.733 に答える
1

これは交差点で、設定:

  1. ネイティブOS、

    • アクセス可能な、インストールされたフォント (ネイティブ OS は異なるフォント、サイズ、太字を使用します....)

    • ネイティブ OS のテーマ

    • テーマに使用されるフォント (そのプロパティ)

    • 各種ユーザー設定、カスタムテーマ

    • アプリケーションの設定ではなく、ネイティブ OS のグローバル プロパティを変更できるばかげたカスタム アプリケーション

  2. ルック アンド フィール

    • L&F は独自のフォントを使用し、異なる

    • デフォルトでは、ネイティブ OS と同じオプション

    • i**** ネイティブ OS でグローバル プロパティを変更できるカスタム アプリケーション.....

  3. 画面の比率 (ピクセル単位) に基づいてフォントを変更するのは非常に異なり、非常に難しい作業です。

  4. すべての変更は UIManager で繰り返され、FontUIResources のすべてのキーを変更しようとしています。

于 2013-08-25T08:44:24.940 に答える