J'ai d'abord demandé si cela avait quelque chose à voir avec la façon dont [CSS pixels sont définis à 96% en "pouces"][1] bien que la disposition de l'INTERFACE utilisateur des points sont définis à 72 pour "pouce". (Où, bien sûr, un "pouce" n'a rien à voir avec un physique de pouce.) Pourquoi les standards du web facteur dans UIKit d'affaires? Eh bien, vous pouvez le constater lors de l'examen des traces de pile dans le débogueur ou de rapports d'incident qu'il y a quelques WebKit code sous-jacent beaucoup de UIKit, même lorsque vous ne l'utilisez pas UIWebView
. En fait, si, c'est plus simple que cela.
Tout d'abord, la taille de la police est mesurée à partir du plus bas de la descendante de la plus haute ascendante régulière texte Latin -- par exemple, à partir du bas de la "j" pour le sommet de la "k", ou pour la pratique de mesurer en un seul caractère, la hauteur de "ƒ". (C'est U+0192 "la LETTRE minuscule LATINE F AVEC CROCHET", facilement tapé avec l'option-F sur un US clavier Mac. Les gens l'ont utilisé pour abréger "dossier" chemin du retour quand.) Vous remarquerez que lorsqu'elle est mesurée avec ce régime, la hauteur en pixels (sur un 1x display) correspond à la taille de police spécifiée (par exemple, avec [UIFont systemFontOfSize:14]
, "ƒ" sera de 14 pixels de hauteur. (Pour la mesure de la capitale, "Un" ne représente qu'un arbitraire partie de l'espace mesuré dans la taille de la police. Cette partie peut changer dans les plus petites tailles de police; lors du rendu des polices vecteurs de pixels, "allusion" modifie les résultats de produire plus lisibles à l'écran de texte.)
Cependant, les polices contiennent toutes sortes de glyphes qui ne rentre pas dans l'espace défini par la métrique. Il y a des lettres avec signes diacritiques au-dessus d'un bloqueur de l'europe de l'langues, et toutes sortes de signes de ponctuation et des caractères spéciaux qui s'inscrivent dans une "boîte de disposition" beaucoup plus grande. (Voir les Symboles Mathématiques section dans Mac OS X Caractères Spéciaux fenêtre pour beaucoup d'exemples.)
Dans l' CGSize
retournée par -[NSString sizeWithFont:]
, la largeur des comptes pour les caractères spécifiques dans la chaîne, mais la hauteur ne reflète le nombre de lignes. Hauteur de la ligne est une métrique spécifiée par la police, et liée à la "mise en page" de la boîte englobant la police de caractères plus gros caractères.