2009-11-30 14 views
9

Czy istnieje sposób na sprawdzenie, czy w kodzie iPhone'a znajduje się znak Unicode, tj. Czy wykrywa on znak do wydruku, czy też zamiast znaku kwadratowego "brakujący znak"?Jak wykryć, czy znak Unicode jest odwzorowywany na kwadrat brakującego symbolu?

Na przykład, jeśli chcę, aby wygenerować losowy charakter Wingding z tym fragmencie:

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

czy jest jakiś sposób, aby sprawdzić, czy wygenerowany ciąg odda jako małego kwadratu, albo prawdziwym glifów kiedy narysuj to:

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

Dzięki!

... R

Odpowiedz

0

ja nie znam żadnego sposobu, który sprawdza, czy to specjalnie, ale mogę sobie wyobrazić, że byłoby to możliwe, aby skonfigurować NSDictionary ze sparowanych wartości dla każdej tabeli znaków zakodowanych w Unicode , następnie uruchom kontrolę, aby upewnić się, że wygenerowana wartość mieści się w zakresach określonych przez jedną z powiązanych wartości.

1

NSFont ma właściwość coveredCharacterSet, której UIFont nie ma. Polecam więc użycie komputera stacjonarnego do stworzenia informacji coveredCharacterSet i umieszczenia jej w twojej aplikacji na iPhone'a.

listę czcionek, które są dostępne na iPhone można znaleźć na stronie: http://daringfireball.net/misc/2007/07/iphone-osx-fonts

0

Dlaczego nie generują go na komputerze, jeśli używasz czcionki systemu powinno być Helvetica i tam mapy znaków w Opcja menu Czcionka prawie każdego programu.

1

udało mi się tego dokonać przy użyciu rdzenia tekstowego CTFontGetGlyphsForCharacters:

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

    return (BOOL)CTFontGetGlyphsForCharacters(fontRef, characters, glyphs, 1); 
} 
Powiązane problemy