2010-10-13 8 views
5

En árabe escrito, los personajes se ven de forma diferente según el lugar que ocupen en una palabra. Por ejemplo, la letra ta podría verse así: ث dentro de una palabra pero con el siguiente aspecto: ث si está en blanco. Tengo un poco de texto en árabe, por ejemplo:¿Cómo se genera un carácter Unicode independiente (árabe) como se vería si se procesara dentro de una palabra?

string word = والتفويض ; 

cuando me hacen word como a toda una palabra que se representa correctamente. Ahora, quiero analizar la cadena e imprimir cada letra de la palabra, de a una por vez. Sin embargo, si hago esto:

foreach(char c in word.ToCharArray()) 
{ 
    Debug.Print(c.ToString()); 
} 

El char c no imprime a cabo la representación original de la carta, ya que se hizo en el contexto de una palabra, sino que imprime la misma letra árabe como si fuera Prestado por sí mismo. ¿Cómo puedo analizar mi cadena de texto árabe para que las letras devueltas se vean igual que cuando se muestran como una palabra completa?

Estoy tratando de hacer esto en C#.

Respuesta

4

Hay caracteres en el UCS que representan formas particulares de caracteres árabes. Sin embargo, estos no funcionan bien cuando se mueve de un contexto a otro.

En general, si desea indicar que una letra está unida a otra, cuando no existe dicha letra para unirla, debe usar U + 200D ZERO ANCHO JOINER en el lugar apropiado (antes del carácter para colocar el carpintero a la derecha, después del carácter para colocarlo a la izquierda, o tener uno a cada lado.

por el contrario, la colocación de u + 200C CERO ANCHO NO JOINER entre caracteres romperá su unión.

hasta qué bueno, eso funciona en la práctica y dependerá del motor de procesamiento procesando los caracteres.

Cuestiones relacionadas