2009-11-30 17 views
9

¿Hay alguna manera de detectar si un carácter Unicode está presente en una fuente en el iPhone, es decir, para detectar si el personaje se asignará a un glifo imprimible o en su lugar al símbolo cuadrado de "carácter faltante"?¿Cómo detectar si un carácter Unicode se asigna al cuadrado del símbolo que falta?

Por ejemplo, si quiero generar un carácter Wingding al azar con este fragmento:

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

hay una manera de saber si la cadena generada hará que cuando el pequeño cuadrado o un glifo real cuando me dibujarlo con esto:

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

Gracias!

... R

Respuesta

0

No conozco ningún método que comprueba esto específicamente, sin embargo, me imagino que sería posible establecer un NSDictionary con parejas de valores para cada tabla de caracteres codificados en Unicode , luego ejecute una comprobación para asegurarse de que el valor generado se encuentre dentro de los rangos especificados por uno de los valores emparejados.

1

tiene una propiedad coveredCharacterSet que UIFont no tiene. Así que recomendaría utilizar su PC de escritorio para crear la información de CharacterSet cubierta y ponerla en su aplicación de iPhone.

una lista de fuentes que están disponibles en el iPhone se puede encontrar en: http://daringfireball.net/misc/2007/07/iphone-osx-fonts

0

Por qué no generan en su ordenador, si está utilizando la fuente del sistema debe ser Helvetica y hay los mapas de caracteres en la opción del menú Fuente de casi cualquier programa.

1

que fue capaz de lograr esto utilizando Core de texto 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); 
} 
Cuestiones relacionadas