50

ポイントサイズの意味を正確に理解するのに苦労していUIFontます。これはピクセルではなく、1/72 インチに関連する点の標準的な定義ではないようです。

さまざまなサイズのフォントを使用してピクセルサイズを-[NSString sizeWithFont:]計算し、次の結果を得ました。

| Point Size | Pixel Size |
| ---------- | ---------- |
| 10.0       | 13.0       |
| 20.0       | 24.0       |
| 30.0       | 36.0       |
| 40.0       | 47.0       |
| 50.0       | 59.0       |
| 72.0       | 84.0       |
| 99.0       | 115.0      |
| 100.0      | 116.0      |

(やった[@"A" sizeWithFont:[UIFont systemFontOfSize:theSize]])

ポイント サイズを見ると、72.0これは DPI が 163 のデバイス上にあるため 1 インチではなく、1 インチは 163.0 ピクセルになりますよね?

UIFontでは、用語の「ポイント」とは何かを説明できる人はいますか? つまり、上記の私の方法は間違っています。実際に何か他のものを使用した場合、フォントについて何かが表示され、72 ポイントで 163 ピクセルになりますか? それとも純粋に点が何か他のものから定義されているのでしょうか?

4

5 に答える 5

13

フォントには内部座標系があります。これを単位正方形と考えてください。その中で、グリフのベクトル座標は、フォント内のすべてのグリフを収容できる任意のサイズ + - フォント デザイナーが選択した余白の量で指定されます。

72.0 ポイントでは、フォントの単位正方形は 1 インチです。フォントyのグリフxは、このインチ平方に対して任意のサイズを持ちます。したがって、フォント デザイナーは、他のフォントに比べて大きくまたは小さく見えるフォントを作成できます。これはフォントの「文字」の一部です。

したがって、72 ポイントで「A」を描画すると、同じフォントで 36 ポイントで描画された「A」の 2 倍の高さになることがわかります。実際のビットマップ サイズについては、他には何もありません。

つまり、特定のフォントの場合、ポイント サイズとピクセルの関係を判断する唯一の方法は、それを測定することです。

于 2012-08-02T19:55:23.763 に答える
6

-[NSString sizeWithFont:]高さの測り方がわかりません。線の高さまたはベジエのピーク間の差を使用していますか? どのテキストを使用しましたか?

-[UIFont lineHeight]高さを測ったほうがいいと思います。

編集: また、どの測定方法もサイズをピクセル単位で返さないことに注意してください。サイズを で返しますpoints。結果に を掛ける必要があり[UIScreen mainScreen].scaleます。

typographic pointsフォントの構築時に使用されるものとpointsiOS から使用されるものとの違いに注意してくださいdefault logical coordinate space。残念ながら、ドキュメントでは違いが明確に説明されていません。

于 2012-08-02T12:05:23.610 に答える
4

これは非常に紛らわしいことに同意します。物事を明確にするために、ここでいくつかの基本的な説明を提供しようとしています。

まず、DPI (ドット パー インチ) は物理的な紙への印刷に由来します。フォントも同様です。単位ポイントは、通常の文字サイズに対してインチが大きすぎるという理由だけで、文字の物理的な印刷サイズを表すために考案されました。その後、人々は、文字サイズを簡単に説明するために、ポイント、つまり 1/72 インチの長さ (実際には歴史の中で進化) を発明しました。そうです、印刷用に Word やその他のワード プロセッシング ソフトウェアで文書を作成している場合、72pt フォントを使用すると、絶対に 1 インチの高さのテキストが得られます。

第 2 に、理論上のテキストの高さは通常、実際に目で確認できるレンダリングされたストロークとは異なります。元のテキストの高さのアイデアは、印刷に使用される実際のグリフに由来しています。すべての文字は、同じ高さ (フォント ポイントの高さと一致) を共有するグリフ ブロックに刻印されます。ただし、文字やフォントのデザインによっては、テキストの実際の表示部分が理論上の高さよりも少し短くなる場合があります。Helvetica Neueは実際には非常に標準的です。文字「k」の上部から文字「p」の下部までを測定すると、フォントの高さと一致します。

第三に、コンピューターのディスプレイが DPI を台無しにし、同時にポイントの定義も台無しにしました。コンピュータ ディスプレイの解像度は、1024 x 768 や 1920 x 1080 などのネイティブ ピクセルで表されます。実際、ソフトウェアはモニタの物理的なサイズを気にしません。紙に印刷するように画面の内容を拡大縮小すると、すべてが非常にぼやけてしまうからです。 —物理的な解像度だけでは、すべてをスムーズかつ合法的にするには十分に高くありません. ソフトウェアは非常に単純で死んだ方法を使用します。使用するモニターの DPI を固定します。Windows の場合は 96DPI です。Mac の場合は 72DPI です。つまり、モニター上で 1 インチが何ピクセルであっても、ソフトウェアはそれを無視します。オペレーティング システムがテキストを 72pt でレンダリングする場合、Windows では常に高さ 96 ピクセル、Mac では高さ 72 ピクセルになります。(それか'

最後に、iOS でも非常に似ています。iPhone、iPod touch、iPad、Apple Watch のいずれであっても、iOS は非 Retina スクリーンに固定の 72DPI、@2x Retina ディスプレイに 144DPI、iPhone 6 で使用される @3x Retina ディスプレイに 216DPI を使用します。プラス。

実際のインチは忘れてください。表示用ではなく、実際の印刷時にのみ存在します。画面にテキストを表示するソフトウェアの場合、これは物理的なピクセルに対する人為的な比率にすぎません。

于 2015-05-14T19:14:33.507 に答える
3

[CSS ピクセルは「インチ」あたり 96 で定義される][1] 一方、UI レイアウト ポイントは「インチ」あたり 72 で定義される方法と関係があるのではないかと最初に考えました。(もちろん、「インチ」は物理的なインチとは何の関係もありません。) なぜ Web 標準が UIKit ビジネスに組み込まれるのでしょうか? デバッガーでスタック トレースを調べたりクラッシュ レポートを調べたりすると、UIKit を使用していなくても、多くの UIKit の基礎となる WebKit コードがあることに気付くかもしれませんUIWebView。しかし、実際にはそれよりも簡単です。

最初に、フォント サイズは、通常のラテン語テキストの最低ディセンダーから最高アセンダーまで測定されます。たとえば、"j" の下から "k" の上まで、または単一の文字での便利な測定では、高さです。 「ƒ」の。(これは U+0192 "LATIN SMALL LETTER F WITH HOOK" で、US Mac キーボードでオプション F を使用して簡単に入力できます。以前は、これを「フォルダー」の省略形として使用していました。) そのスキームで測定すると、ピクセル単位の高さ (1x ディスプレイ上) は、指定されたフォント サイズと一致します。[UIFont systemFontOfSize:14]、「ƒ」の高さは 14 ピクセルになります。(大文字の「A」の測定は、フォント サイズで測定されたスペースの任意の部分のみを占めます。この部分は、より小さいフォント サイズでは変化する可能性があります。フォント ベクターをピクセルにレンダリングする場合、「ヒンティング」により結果が変更され、より読みやすい画面上のテキストが生成されます。 .)

ただし、フォントには、そのメトリックによって定義されたスペースに収まらないあらゆる種類のグリフが含まれています。東ヨーロッパの言語では、アセンダーの上に分音記号が付いた文字があり、「レイアウト ボックス」に収まるあらゆる種類の句読点や特殊文字がはるかに大きくなります。(多くの例については、Mac OS X の [特殊文字] ウィンドウの [数学記号] セクションを参照してください。)

によってCGSize返される-[NSString sizeWithFont:]では、幅は文字列内の特定の文字を考慮していますが、高さは行数のみを反映しています。行の高さは、フォントによって指定されるメトリックであり、フォントの最大文字を含む「レイアウト ボックス」に関連しています。

于 2012-08-02T21:32:55.047 に答える
0

私が確認できた限り、真実はUIFont嘘です。すべてのUIKitフォントは自由に使用できます。真実が必要な場合は を使用する必要がありますCoreTextが、多くの場合は遅くなります! (したがって、ピクセル高さテーブルの場合、xがポイントサイズである+ bx係数が追加されたと思います。

では、なぜこれを行うのですか?スピード!UIKitビットマップをキャッシュできるように、スペースを使用してものとフィドルを切り上げます。または、少なくともそれは私の持ち帰りでした!

于 2012-08-03T08:42:05.133 に答える