Fuente árabe personalizada en iOS

Estoy tratando de hacer una aplicación para iphone que muestre principalmente contenido en árabe. Quiero utilizar una fuente árabe personalizada para mostrar ese contenido, no la fuente árabe predeterminada del iPhone. Use el siguiente código:

- (void)viewDidLoad { [super viewDidLoad]; [arabicLabel setFont: [UIFont fontWithName: @"Simple Indust Shaded" size: 20]]; arabicLabel.text = @"السلام عليكم"; } 

donde arabicLabel es un IBOutlet UILabel. Pongo la etiqueta en los recursos de la aplicación y la agrego al archivo info.plist como elemento de la matriz UIAppFont. Además, la fuente es Unicode .

Cuando ejecuto este código en el simulador, la etiqueta muestra la fuente árabe predeterminada (no es mi fuente personalizada); sin embargo, establece su tamaño en 20 como se indica en el código.

No entiendo lo que hice mal aquí … Sé que en el archivo info.plist debo agregar el nombre del archivo de fuente con la extensión (ttf), y lo hice. Además, sé que en el código anterior tuve que poner el nombre de la fuente real y no el nombre del archivo, así que abrí el archivo en mi Mac y usé el título que apareció cuando se abrió el archivo (Simple Indust sombreado).

¿Me estoy perdiendo de algo? ¿Existen requisitos adicionales para las fonts personalizadas que no sean Unicode?

NB: Hice el mismo procedimiento para la fuente en inglés personalizada, ¡y funcionó! …

Respuesta corta

Esto parece ser un error en iOS.

Respuesta larga

Como sabrá, el texto árabe debe formarse antes de que se pueda representar, es decir, convertir las letras básicas ( Unicode: 0600-06FF ) en sus correspondientes letras contextuales correspondientes ( Unicode: FE70-FEFF ).

iOS hace este preprocesamiento automáticamente para texto árabe, pero por alguna razón, se olvida de la fuente personalizada y solo utiliza la fuente predeterminada del sistema cuando procesa las letras conectadas.

Entonces, es un error en iOS y debes esperar a que se resuelva.

Solución

Sin embargo, si no puede esperar, puede utilizar esta solución: realice el preprocesamiento del texto manualmente antes de procesarlo . Esto permitirá omitir la fase de preprocesamiento de iOS que causa este problema y, por lo tanto, renderizar el texto con su fuente personalizada.

Si desea probar esta solución, solo copie esta línea y pruébela en su proyecto:

 arabicLabel.text = @"ﺍﻟﺴﻼﻡ ﻋﻠﻴﻜﻢ"; 

ESTA RESPUESTA ES PARA DEBAJO DE IOS 7.

También he pasado por esta situación. Puede crear su propio método de mapa hash para reemplazar el carácter 0600-06ff con su fuente personalizada, pero para eso debe verificar si su glifo en el archivo TTF está mapeado en 0600-06FF de lo que necesita. modifique su glifo unicode mapeado excepto a partir de 0600-06ff

por ejemplo, si hice un TTF y mapeé ‘و’ con Unicode 0627 y cuando trato de ver el efecto del tipo unicode 0627 char ie (cuando escribo ‘ا’ debe mostrar ‘و’) no aplicará mi imagen personalizada contra ella porque ios6 no le permitirá cambiar el glifo en el rango particular. pero si hubiera mapeado este char personalizado con la serie Fxxx o cualquier otro que no sea 0600-06ff, me permitirá hacer cambios personalizados fácilmente

Árabe (0600-06FF, 255 caracteres) no puede jugar en este rango o cambiar la imagen de esta imagen de glifo con su imagen personalizada, de modo que mapeé su glifo con el suplemento árabe unicode árabe siguiente (0750-077F, 48 caracteres) Árabe extendido-A (08A0-08FF, 39 caracteres) Formularios de presentación en árabe-A (FB50-FDFF, 608 caracteres) Formularios de presentación en árabe-B (FE70-FEFF, 140 caracteres)

aquí está el enlace para el tipo similar de cosa que se hace usando clase árabe personalizada y también tomé la ayuda de la clase de fuente personalizada árabe

    Intereting Posts