2009-11-30 2 views
9

Existe-t-il un moyen de détecter si un caractère Unicode est présent dans une police sur l'iPhone, c'est-à-dire de détecter si le caractère correspondra à un glyphe imprimable ou au symbole carré "caractère manquant"?Comment détecter si un caractère Unicode correspond au carré du symbole manquant?

Par exemple, si je veux générer un caractère Wingding aléatoire avec cet extrait:

NSString *s = [NSString stringWithFormat:@"%C", (0x2700 + (arc4random() % 0x0100))]; 

est-il un moyen de savoir si la chaîne générée rendra comme la petite place, ou un vrai glyphe quand je Dessinez-le avec:

[s drawAtPoint:x withFont:[UIFont systemFontOfSize:30]]; 

Merci!

... R

Répondre

0

Je ne sais pas d'une méthode qui vérifie ce précisément, mais je pense qu'il serait possible de mettre en place un NSDictionary avec des valeurs paires pour chaque table de caractères codés dans Unicode , puis exécutez une vérification pour vous assurer que la valeur générée se situe dans les plages spécifiées par l'une des valeurs appariées.

1

NSFont a une propriété coveredCharacterSet que UIFont n'a pas. Donc, je recommanderais d'utiliser votre ordinateur de bureau pour créer l'information coveredCharacterSet et le mettre dans votre application iphone.

Une liste des polices disponibles sur l'iPhone peut être trouvé à l'adresse: http://daringfireball.net/misc/2007/07/iphone-osx-fonts

0

Pourquoi ne pas générer sur votre ordinateur, si vous utilisez la police du système, il devrait être Helvetica et il y a les cartes de caractères dans l'option de menu Police de presque n'importe quel programme.

1

j'ai pu y parvenir à l'aide CTFontGetGlyphsForCharacters du Core Text:

- (BOOL)isInCharSet:(unichar)character 
{ 
    CTFontRef fontRef = CTFontCreateWithName((CFStringRef)@"Arial", 0.0, NULL); 
    unichar characters[] = {character}; 
    CGGlyph glyphs[] = {}; 

    return (BOOL)CTFontGetGlyphsForCharacters(fontRef, characters, glyphs, 1); 
} 
Questions connexes