web-dev-qa-db-fra.com

Ligne de base UIFont personnalisée décalée

J'ai un problème avec les UIFonts personnalisés. J'en charge 6 (police A en caractères réguliers/gras/réguliersItalique/grasItalique, polices B en variantes condensées/condensées).

Cependant, voici ce que cela donne lors du rendu: enter image description here

Les deux premières lignes sont OK, mais la dernière présente un problème de base.

J'ai essayé de changer les polices UPM, ascender, descender, x-height de la police dans FontLab afin qu'elle corresponde aux valeurs de la première police (qui affichent un rendu correct), mais en vain. J'ai essayé de convertir le format de police de OTF en TTF, sans succès. Quoi que j'essaye, ça rend toujours comme ça.

Est-ce que quelqu'un a de l'expérience avec ça?

39
Cyrille

Ici ou même ici vous pouvez trouver les solutions pour vous. Tout est une question de base.

Remarque Il y a un problème avec l'installation de l'utilitaire Apple Fonts sur El Capitan. Voir https://Apple.stackexchange.com/questions/211138/Apple-font-tools-cannot-install-in-macbook-pro-el-capitan pour une solution de contournement.

Pour les éditer dans la police, vous devez télécharger la suite d'outils Apple Font . Une fois que vous avez installé cela, vous devez ouvrir Terminal et Naviguer dans le répertoire qui contient votre police. Après cela, entrez La commande suivante:

  1. ftxdumperfuser -t hhea -A d font.ttf Ceci créera un fichier appelé font.hhea.xml, ouvrira ce nouveau fichier dans un éditeur de texte et ajustera les valeurs pour ascender et descender. En règle générale, si votre police est trop basse, vous voulez diminuer le facteur de montée et augmenter le descendant. Après Édition et enregistrement, entrez la commande suivante dans le terminal pour Reconstruire votre fichier de police:

  2. ftxdumperfuser -t hhea -A f font.ttf Vous pouvez maintenant utiliser le fichier font.ttf dans votre application. Si la police n’est toujours pas correcte, répétez la procédure ci-dessus jusqu'à ce que vous soyez satisfait.

OU vous pouvez facilement modifier NSBaselineAttributeName comme suit:

NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:@"a string"
                              attributes:@{ NSBaselineOffsetAttributeName : @-13 }];
33
art-divin

Bonjour, j’ai également fait face à ce problème à ce moment-là j’ai défini Titre du contenu Edge en conséquence pour UIButton

Donc, si vous utilisez ces polices pour UIButton alors vous pouvez sûrement vous en servir.

enter image description here

Espérons que cela va vous aider.

2
Mrunal

Une autre solution intéressante que j'ai trouvée provient de l'article suivant: http://www.andyyardley.com/2012/04/24/custom-ios-fonts-and-how-to-fix-the- problème de position verticale/

Donc, vous devriez vérifier si c'est le cas avec votre police, comme il le dit dans l'un des commentaires:

Ma solution corrige effectivement la police personnalisée pour fonctionner avec le moteur de rendu iOS, ce qui vous permet de la remplacer directement par les polices standard sans aucune modification.

Et comment fait-il?

En gros, il suggère de modifier les métriques de la police à l'aide d'un outil Apple externe (voir Référence des métriques de police à l'adresse suivante: https://developer.Apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html# // Apple_ref/doc/uid/TP40009542-CH4-SW66 )

Pour les éditer dans la police, vous devez télécharger Apple Font Tool Suite. Une fois installé, vous devez ouvrir Terminal et accéder au répertoire contenant votre police. Après cela, entrez la commande suivante:

ftxdumperfuser -t hhea -A d font.ttf

Cela créera un fichier appelé font.hhea.xml, ouvrira ce nouveau fichier dans un éditeur de texte et ajustera les valeurs d'ascendeur et de descendant. En règle générale, si votre police est trop basse, vous voulez diminuer le nombre de caractères de montage et augmenter le nombre de descendeurs. Après avoir édité et enregistré, entrez la commande suivante dans le terminal pour reconstruire votre fichier de police:

ftxdumperfuser -t hhea -A f font.ttf

Vous pouvez maintenant utiliser le fichier font.ttf dans votre application. Si la police n’est toujours pas correcte, répétez la procédure ci-dessus jusqu'à ce que vous soyez satisfait.

2
Nech

À propos, Apple Font Tool Suite n'est pas le seul programme qui puisse vous aider. Donc, si vous ne souhaitez pas installer de copie virtuelle de macO, vous pouvez utiliser FontForge pour Windows pour jouer avec ascender et descender: element -> informations de police, puis onglet OS/2 et métriques. Et n'oubliez pas de cocher la case "Apple" lors de la génération de la police à la fin. Bonne chance!

0
Able

peut-être jeter un coup d'œil à la propriété de UITextView/UITextLabel 'thLabel.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;'

cela définit l'alignement vertical. Cela m'a été utile il y a quelques jours dans un cas similaire

0
pmk

Vous devez vérifier ces polices côte à côte dans certains logiciels vectoriels tels que Adobe Illustrator ou CorelDraw. Si vous trouvez que les polices sont restituées de la même manière de manière décalée dans ces logiciels également, alors cela a un rapport avec la police elle-même. c'est-à-dire que les polices peuvent être créées avec de tels pixels décalés dans le fichier de polices. Par conséquent, nul besoin de faire de telles modifications dans les paramètres .xib pour UIButton ou UITextField, etc. 

Partagez vos fichiers de police ici si possible.

0
Ralph