Quelle est la meilleure façon de déterminer les styles pris en charge d'une police sur iOS?

StackOverflow https://stackoverflow.com/questions/5806256

  •  24-10-2019
  •  | 
  •  

Question

Je ne parviens pas à trouver un moyen facile de déterminer si une police prend en charge le style de caractères gras ou en italique sur iOS. Ma solution actuelle est basée sur essayer de créer un CTFont avec le style de police souhaité:

CTFontRef ctFont = CTFontCreateWithName(fontName, pointSize, NULL);
CTFontRef boldFont = CTFontCreateCopyWithSymbolicTraits(ctFont, 0.0, NULL, kCTFontBoldTrait, kCTFontBoldTrait);
if (boldFont) {
// supports bold font face
}

Bien que cela fonctionne très bien, il ne se sent pas en quelque sorte comme la meilleure façon de le faire. Est-il possible de mieux?

Était-ce utile?

La solution

Si vous utilisez UIFont Je suppose que vous pouvez simplement itérer le fontNamesForFamilyName:

for (NSString *fontName : [UIFont fontNamesForFamilyName:fontName]) {
    if ([fontName rangeOfString:@"Bold"].location != NSNotFound) {
       //supports bold font face
    }
}

Peut-être pas beaucoup mieux ... Et une police en gras est pas toujours définie avec le texte « gras », une utilisation légère et moyenne. http://www.iphonedevsdk.com/forum /iphone-sdk-development/6000-list-uifonts-available.html

Autres conseils

Il est parfois difficile à comprendre même le nom de la famille, en particulier pour les polices personnalisées. Habituellement Il suffit d'imprimer toutes les polices pour vérifier les polices disponibles. Vous pouvez trouver tous les styles par exemple Gras, italique, gras condensé etc, de ce

NSArray *familyNames = [UIFont familyNames];
for (NSString *familyName in familyNames)
{
    NSSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
    NSLog(@"%@", fontNames);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top