2017-11-18 8 views
0

私は、画面サイズに関係なく文字を正確なポイントサイズで表示する必要のあるiPadアプリを作成しています。 私はUILabelオブジェクトを使ってテキスト表示を実装しました。私はAutoshrinkプロパティを固定フォントサイズに設定しましたが、画面上の文字はフォントメトリックで示される文字よりはるかに小さいです。たとえば、3.5インチの高さでなければならない251ポイントのフォントの大文字は、画面上でわずか2インチです。異なるポイントサイズで同じ収縮が起こります。 fontCapHeightは、使用しているフォントのフォントサイズと同じです。 表示サイズをフォントサイズと同じにするにはどうすればよいですか?IOSフォントの実際の表示サイズがメトリックと一致しません

答えて

0

例えば、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ボックスから使い果たしたような気がします。

+0

Robを明確にしていただきありがとうございます。投稿してから、私は251点の辺を持つ塗りつぶし矩形をビューに追加し、文字と正確に同じサイズで表示します(問題のフォントではディセンダを持たない固定高さです)。だから問題はあなたが述べたように、たとえドキュメンテーションがそうであると思われるとしても、ポイントは実際の世界の測定と相関しないということです。私は周りの唯一の回避策は物理的にデバイスの画面上の寸法を測定し、論理次元を比例関係に設定することだと思う。私が試したすべての画面サイズで、少なくとも測定値は同じように見えます。 – John

0

問題を解決しました。 http://blog.fluidui.com/designing-for-mobile-101-pixels-points-and-resolutions/に次のような声明がありました。「iOSポイントは1インチの1/163に相当します。このサイズは元のiPhoneの163DPIからの電話の解像度に関係なく常に同じです。私はAppleのドキュメントのどこにも見つけられませんでしたが、どこかにあると確信しています!

関連する問題