2010-10-13 5 views
5

На арабском языке персонажи выглядят по-разному в зависимости от того, где они стоят словом. Например, буква ta может выглядеть так: ث внутри слова, но выглядят так: ث если он стоит сам по себе. У меня есть некоторый арабский текст, например:Как визуализировать отдельный символ Юникода (арабский), как он выглядел бы, если бы он отображался в одном слове?

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

Когда я вынести word как целое слово это делает правильно. Теперь я хочу разобрать строку и распечатать каждую букву в слове по одному. Однако, если я делаю это:

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

char c не печатает из исходного представления письма, как это было вынесено в контексте слова, вместо этого она печатает то же арабское письмо, как если бы это было сделанный сам по себе. Как я могу разобрать свою строку арабского текста, чтобы возвращаемые буквы выглядели так же, как когда они отображались как целое слово?

Я пытаюсь сделать это в C#.

ответ

4

В UCS есть символы, которые представляют конкретные формы арабских символов. Тем не менее, они не работают хорошо при переходе из одного контекста в другой.

В общем случае, если вы хотите указать, что письмо соединено с другим, когда нет такого письма, чтобы присоединиться к нему, вы должны использовать U + 200D ZERO WIDTH JOINER в соответствующем месте (до того, как персонаж разместит столяр вправо, после символа, чтобы поместить его влево, или с одной на каждой стороне.

с другой стороны, размещение U + 200C ZERO WIDTH NON-Joiner между символами сломает их стыковке.

Просто, как хорошо, что работает на практике, будет зависеть от обработки движка обработки символов.

Смежные вопросы