2010-10-13 6 views
5

In arabo scritto, i caratteri hanno un aspetto diverso a seconda di dove si trovano in una parola. Ad esempio, la lettera ta potrebbe assomigliare a questa: ث all'interno di una parola, ma assomiglia a questa: ث se sta da sola. Ho qualche testo arabo, per esempio:Come eseguire il rendering di un carattere Unicode standalone (arabo) come apparirebbe se fosse visualizzato in una parola?

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

Quando mi rendo word come parola intera rende correttamente. Ora, voglio analizzare la stringa e stampare ogni lettera nella parola una alla volta. Tuttavia, se faccio questo:

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

Il char c non stampa la rappresentazione originale della lettera come è stato reso nel contesto di una parola, invece esso stampa la stessa lettera araba come se fosse reso da solo. Come posso analizzare la mia stringa di testo arabo in modo che le lettere restituite abbiano lo stesso aspetto di quando erano visualizzate come una parola intera?

Sto provando a farlo in C#.

risposta

4

Ci sono caratteri nell'UCS che rappresentano forme particolari di caratteri arabi. Tuttavia, questi non funzionano bene quando si passa da un contesto a un altro.

In generale, se si desidera indicare che una lettera è unita a un'altra, quando non è presente alcuna lettera a cui partecipare, è necessario utilizzare U + 200D ZERO WIDTH JOINER nel punto appropriato (prima del carattere per posizionare il falegname a destra, dopo il carattere a posto a sinistra, o avere uno per parte.

Viceversa, ponendo U + 200C ZERO WIDTH NON JOINER tra i caratteri romperà loro adesione.

quanto beh, ciò che funziona nella pratica dipenderà dal motore di rendering che processa i personaggi.

Problemi correlati