49 votes

Qu'est-ce exactement UIFont taille en points?

J'ai du mal à comprendre exactement ce que la taille en points de UIFont moyens. Ce n'est pas de pixels et il ne semble pas être la norme de définition de point qui est qu'ils se rapportent à 1/72th pouces.

J'ai travaillé sur la taille des pixels à l'aide de -[NSString sizeWithFont:] de polices de caractères dans différentes tailles et le suivant:

| 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      |

(Je n' [@"A" sizeWithFont:[UIFont systemFontOfSize:theSize]])

Et en regardant l' 72.0 taille de point, qui n'est pas de 1 pouce puisque c'est sur un appareil avec une résolution de 163, donc de 1 pouce serait 163.0 pixels, droit?

Quelqu'un peut-il expliquer ce qu'est un "point" en UIFont termes est-ce alors? c'est à dire ma méthode ci-dessus mal et vraiment si j'ai utilisé quelque chose d'autre que je voudrais voir quelque chose à propos de la police est de 163 pixels à 72 point? Ou est-ce purement un point est défini à partir de quelque chose d'autre?

12voto

hooleyhoop Points 6925

Une police est un système de coordonnées internes, pensez-y comme une unité carrée, dans lequel un glyphe du vecteur de coordonnées sont spécifiées à quelle que soit la taille arbitraire, s'adaptant à tous les glyphes de la police +- tout montant de la marge, le concepteur de la police choisit.

Au 72.0 points de la police de l'unité d'un carré est un pouce. Glyphe x de police y a une taille arbitraire en ce qui concerne ce pouce carré. Ainsi, un concepteur de la police peut faire une police qui apparaît grandes ou petites par rapport à d'autres polices. Cela fait partie de la police du "caractère".

Donc, le dessin d'un 'A' à 72 points vous dit qu'il va être deux fois plus élevée qu'Un " a " tiré à 36 points dans la même police et absolument rien d'autre sur ce qu'est la réelle taille du bitmap sera.

c'est à dire Pour une police donnée la seule façon de déterminer la relation entre la taille du point et de pixels est de la mesurer.

5voto

Sulthan Points 23360

Je ne suis pas sûr de savoir comment -[NSString sizeWithFont:] des mesures de la hauteur. Faut-il utiliser la hauteur de la ligne ou de la différence entre les sommets de l'beziers? Quel texte avez-vous utilisé?

Je crois -[UIFont lineHeight] serait préférable de mesurer la hauteur.

Edit: Il est également à noter qu'aucune des méthodes de mesure renvoie la taille en pixels. Il retourne la taille en points. Vous devez multiplier le résultat par [UIScreen mainScreen].scale.

Notez la différence entre typographic points utilisé lors de la construction de la police et de l' points de iOS, default logical coordinate space. Malheureusement, la différence n'est pas clairement expliqué dans la documentation.

3voto

rickster Points 19870

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.

0voto

idz Points 6497

La vérité, comme ce que j'ai pu constater, c'est qu' UIFont mensonges. Tout d' UIKit prend des libertés avec les polices. Si vous voulez la vérité, vous devez utiliser CoreText, mais dans beaucoup de cas, il sera plus lent! (Ainsi, dans le cas de votre hauteur en pixels de la table, je pense que c'était cela qu'il ajoute une sorte de + bx facteur, où x est la taille du point.

Alors, pourquoi fait-il cela? La vitesse! UIKit des tours de trucs et tripote avec un espacement de sorte qu'il peut mettre en cache des bitmaps. Ou du moins, c'était mon emporter!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X