10 Stimmen

Wie lässt sich feststellen, ob ein Unicode-Zeichen dem Quadrat des fehlenden Symbols entspricht?

Gibt es eine Möglichkeit zu erkennen, ob ein Unicode-Zeichen in einer Schriftart auf dem iPhone vorhanden ist, d. h. zu erkennen, ob das Zeichen einer druckbaren Glyphe oder stattdessen dem quadratischen Symbol "fehlendes Zeichen" zugeordnet wird?

Wenn ich zum Beispiel ein zufälliges Wingding-Zeichen mit diesem Schnipsel erzeugen möchte:

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

gibt es eine Möglichkeit zu sagen, wenn die generierte Zeichenfolge als das kleine Quadrat oder eine echte Glyphe gerendert wird, wenn ich es mit diesem zeichnen:

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

Danke!

...R

2voto

jvergeldedios Punkte 627

Ich konnte dies mit der Core Text-Funktion 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);
}

1voto

f3lix Punkte 28602

NSFont hat eine Eigenschaft coveredCharacterSet die UIFont nicht hat. Daher würde ich empfehlen, Ihren Desktop-PC zu verwenden, um die coveredCharacterSet Informationen zu erstellen und sie in Ihre iPhone-App zu setzen.

Eine Liste der für das iPhone verfügbaren Schriftarten finden Sie unter: http://daringfireball.net/misc/2007/07/iphone-osx-fonts

0voto

Kaji Punkte 2140

Ich kenne keine Methode, die dies speziell prüft, aber ich kann mir vorstellen, dass es möglich wäre, ein NSDictionary mit gepaarten Werten für jede Tabelle von in Unicode kodierten Zeichen einzurichten und dann eine Prüfung durchzuführen, um sicherzustellen, dass der generierte Wert in die von einem der gepaarten Werte angegebenen Bereiche fällt.

0voto

JoePasq Punkte 5286

Warum erstellen Sie sie nicht auf Ihrem Computer? Wenn Sie die Systemschriftart verwenden, sollte es Helvetica sein, und es gibt die Zeichenkarten im Menü Schriftart in fast jedem Programm.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X