私は、画面サイズに関係なく文字を正確なポイントサイズで表示する必要のあるiPadアプリを作成しています。 私はUILabelオブジェクトを使ってテキスト表示を実装しました。私はAutoshrinkプロパティを固定フォントサイズに設定しましたが、画面上の文字はフォントメトリックで示される文字よりはるかに小さいです。たとえば、3.5インチの高さでなければならない251ポイントのフォントの大文字は、画面上でわずか2インチです。異なるポイントサイズで同じ収縮が起こります。 fontCapHeightは、使用しているフォントのフォントサイズと同じです。 表示サイズをフォントサイズと同じにするにはどうすればよいですか?IOSフォントの実際の表示サイズがメトリックと一致しません
答えて
例えば、3.5インチの高さでなければならない251ポイントのフォントの大文字は、画面上でわずか2インチです。
iOSのポイントは一定のピクセル数(目盛りに基づいています)です。 iOSは画面のピクセル密度(PPI)の要素です.iOSは私が知っていることを照会する方法がありません。それはあなたが知っている大きなテーブルを持っていなければなりません。そのためのかなり良いものはGBDeviceInfoです。
キャップの高さ(pt)を(ppi/scale)*inches
にする必要がありますが、キャップの高さを直接設定することはできません。設定する必要がありますemボックスのサイズ(「フォントサイズ」)を介して表示されます。任意のサイズのフォントを含むラベルで、キャップの高さを3インチにします。
let font = label.font!
let ppi = 326.0 // iPhone 6s
let scale = Double(UIScreen.main.scale)
let desiredSize = 3.0 // inches
let emBoxRatio = Double(font.pointSize/font.capHeight)
let fontSize = (ppi/scale) * desiredSize * emBoxRatio
label.font = label.font.withSize(CGFloat(fontSize))
「キャップの高さを3インチにする」は、「特定の文字を3インチにする」と同じではありません。フォントと文字によって異なります。多くのフォントでは、カーブした上部を持つグリフはキャップの高さよりも少し高く、一部のアセンダーはキャップの高さより少し高くなることがあります。 H、X、Iはしばしば帽子の高さですが、時には少し短くなります(時にはOは帽子の高さではなくXです)。グリフがベースラインを上回ることがあります。フォントはemボックス内に収まっていなければならないとは言いませんが、一部のフォントは外に激しく描いています(Zapfino、私はあなたを見ています)。
私の唯一のポイントは、実際のフォントを慎重に確認する必要があることです。フォントメトリックは、せいぜい提案を提供しています。同じような指標を持つフォントを同じように感じさせることです。彼らは常に物事の絶対的な尺度ではありません。
私はこれを理解していない:
fontCapHeightは私が
を使用していたフォントとフォントサイズと同じであるキャップの高さは、「フォントサイズと同じである場合"(emボックスの高さ)、descendersはどこですか?あなたがemボックスから使い果たしたような気がします。
問題を解決しました。 http://blog.fluidui.com/designing-for-mobile-101-pixels-points-and-resolutions/に次のような声明がありました。「iOSポイントは1インチの1/163に相当します。このサイズは元のiPhoneの163DPIからの電話の解像度に関係なく常に同じです。私はAppleのドキュメントのどこにも見つけられませんでしたが、どこかにあると確信しています!
- 1. 実際のJFrameのサイズが宣言されたサイズと一致しません
- 2. 参照プロジェクトが実際のものと一致しません
- 3. ハイチャートのメトリック表記の表示との不一致
- 4. iOS:翻訳が一致しません
- 5. TensorFlowの分類が実際の出力と一致しません
- 6. rails - URLが表示と一致しません
- 7. unity5、box collider 2dのサイズがプラットフォームと一致しません
- 8. SceneKit物理シミュレーションが実際のノード位置と一致しません
- 9. sockaddr.sin_port = 1337が実際の開かれたポートと一致しません
- 10. Swift/IOSでの実際の表示サイズの取得
- 11. IOS 5.0.1 with XCode 4.2.1 "iOSのバージョンと一致しません"
- 12. pyplot histで表示されるビン数は実際のカウントと一致しませんか?
- 13. ハスケル - 実際の型と予想と一致しませんでし型「b」は「」
- 14. 正規表現パターンの一致が一致しません
- 15. iOS:ReactネイティブビューのフォントサイズがiOSネイティブフォントサイズと一致しません
- 16. ios chromeと線の高さが一致しません
- 17. 実際のタイプ 'IO()'で 'Control.Monad.Trans.Reader.ReaderT MongoContext IO a0'と一致しませんでした
- 18. 期待されるオーディオサンプルレートが実際と一致しませんか?
- 19. Androidスタジオのプレビューは実際の画面と一致しません
- 20. パラメータ$ parametersのドキュメントコメントが一致しません。 |実際の変数名$ resource
- 21. GoogleシートFILTERの範囲のサイズが一致しません
- 22. スクリプトのパブリック変数名がインスペクタ/エディタのフィールド表示と一致しません
- 23. Selenium IDE - verifyText [エラー]実際の値 ''が一致しません<acct name>
- 24. IndexError:データ配列のサイズがスライスに一致しません
- 25. エラー:入力引数のサイズが一致しません。 cvTriangulatePoints
- 26. リストのサイズが一致していません
- 27. DateTimePickerの値が表示された日付と一致していません
- 28. ブーストの正規表現がタブと一致しません
- 29. ASP.NETアプリケーションの実際のエラーメッセージが表示されませんか?
- 30. DataLengthの値の合計がテーブルのサイズと一致しません
Robを明確にしていただきありがとうございます。投稿してから、私は251点の辺を持つ塗りつぶし矩形をビューに追加し、文字と正確に同じサイズで表示します(問題のフォントではディセンダを持たない固定高さです)。だから問題はあなたが述べたように、たとえドキュメンテーションがそうであると思われるとしても、ポイントは実際の世界の測定と相関しないということです。私は周りの唯一の回避策は物理的にデバイスの画面上の寸法を測定し、論理次元を比例関係に設定することだと思う。私が試したすべての画面サイズで、少なくとも測定値は同じように見えます。 – John