2015-02-25 18 views
6

In che modo una stringa araba può essere invertita utilizzando C++? Ad esempio, il contrario di كلمة è ةملك. La forma delle lettere arabe differisce in base alla posizione nella parola. (iniziale, mediale o finale di parola). Ci sono altre regole per concatenare le lettere arabe?Retromarcia di una stringa araba in C++

+5

Sembra che sarà un'operazione difficile a meno che non si disponga di una libreria per farlo. Le specifiche Unicode catturano questo concetto di "inversione" in cui la stringa inversa non è solo gli stessi caratteri al contrario? In tal caso, forse un'implementazione Unicode funzionerà ... O dipende dal renderer dei caratteri disegnare correttamente glifi in base al loro ordine e quindi è possibile invertire l'ordine dei caratteri? –

+2

La raccomandazione è solo [invertendo logicamente il testo] (http://www.w3.org/International/questions/qa-visual-vs-logical) e lascia l'inversione visiva al motore di rendering. – Petesh

+0

Perché vuoi farlo comunque? – dfeuer

risposta

5

Come dice Petesh e in base ai riferimenti che posso trovare come Wikipedia il motore di rendering dovrebbe impiegare i glifi appropriati per voi. Citando l'articolo:

Ad esempio, molte lettere arabe sono rappresentate da un glifo diverso quando la lettera appare alla fine di una parola rispetto a quando la lettera appare all'inizio di una parola. L'approccio di Unicode preferisce che queste lettere siano mappate allo stesso carattere per facilitare l'elaborazione e l'archiviazione interna del testo della macchina. Per completare questo approccio, il software testo deve selezionare diverse varianti di glifi per la visualizzazione del personaggio in base al suo contesto

Un esperimento veloce con una linea unicode convertor sembrano confermare che:

كلمة 

in codice esadecimale punti è:

0643 0644 0645 0629 

mentre:

ةملك 

è:

0629 0645 0644 0643 

che è l'esatto dei punti di codice precedenti.