Как отобразить отдельный символ Unicode (арабский), как он будет выглядеть, если бы он отображался внутри слова? - PullRequest
5 голосов
/ 13 октября 2010

В письменном арабском языке символы выглядят по-разному в зависимости от того, где они стоят в слове.Например, буква та может выглядеть так: ـثـ внутри слова, но выглядеть так: ﺙ если она стоит сама по себе.У меня есть некоторый арабский текст, например:

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

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

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

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

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

1 Ответ

4 голосов
/ 13 октября 2010

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

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

И наоборот, размещение U + 200C с нулевой шириной без соединения между персонажами нарушит их соединение.

Насколько хорошо это работает на практике, будет зависеть от механизма рендеринга, обрабатывающего символы.

...