Почему «АРАБСКАЯ БУКВА PEH» неправильно отображается на Android 3.x?

введите здесь описание изображения

В символах Юникода ARABIC LETTER PEH INITIAL FORM 'ﭘ' равно 0xFB58. Когда я использую следующий код для отображения символов Unicode, все в порядке для каждого символа Unicode в Android 2.2, 2.3. и 4.x Но у меня проблема с ARABIC LETTER PEH 'ﭘ' на Android 3.x, и в этом случае отображается символ '~'.

Typeface tf = Typeface.createFromAsset(context.getAssets(),"TAHOMA.TTF");

strChars = "";
strChars += (char) 0xFB58;
tvChars.setTypeface(tf);
tvChars.setText(strChars);

Я должен отметить, что проблема остается, когда я меняю шрифт или игнорирую использование setTypeface(tf)

Почему?

Как найти код ARABIC LETTER PEH в Юникоде?


ИЗМЕНИТЬ:

Пожалуйста, сравните 0xFB58 () и 0xFB5E () с любым шрифтом программно. вы найдете проблему. первый не отображается, а второй отображается правильно.


person Bobs    schedule 15.09.2011    source источник
comment
Вам нужна АРАБСКАЯ БУКВА PEH или АРАБСКАЯ БУКВА PEH НАЧАЛЬНАЯ ФОРМА?   -  person Ray Toal    schedule 15.09.2011
comment
оба из них. у обоих проблемы.   -  person Bobs    schedule 15.09.2011
comment
Собственно проблема для: 0xFB56 (64342) и 0xFB57 (64343) и 0xFB58 (64344) и 0xFB59 (64345)   -  person Bobs    schedule 15.09.2011
comment
Похоже, ваш шрифт не содержит глифов для символов в арабском блоке Presentation Forms-A (начиная с U+FB50). Я так понимаю, обычная АРАБСКАЯ БУКВА PEH (U + 067E) показывает нормально?   -  person Ray Toal    schedule 15.09.2011
comment
Я должен упомянуть, что проблема остается, когда я игнорирую использование моего шрифта поддержки Unicode (tf). Когда я игнорирую это и использую шрифт по умолчанию для Android 3.x, все символы Unicode отображаются правильно, кроме PEH.   -  person Bobs    schedule 15.09.2011
comment
Пожалуйста, проверьте 0xFB56 и 0xFB5E с любым шрифтом. вы найдете проблему. первый не отображается, а второй отображается правильно.   -  person Bobs    schedule 15.09.2011
comment
Примечание: если вы говорите о кодовых точках Unicode, то U+FB56 и U+FB5E — самые четкие обозначения, поскольку совершенно ясно, что вы говорите здесь о кодовых точках Unicode. 0xFB56 может быть любым шестнадцатеричным числом.   -  person Joachim Sauer    schedule 15.09.2011
comment
Я не думаю, что у вас есть буква "пе" в арабском языке. Попробуйте использовать персидский/фарси.   -  person Roozbeh15    schedule 14.04.2012
comment
АРАБСКАЯ БУКВА PEH — это стандартное название персидской буквы PEH.   -  person Bobs    schedule 14.04.2012
comment
Вам нужен шрифт фарси. В арабском языке нет PEH, он есть в фарси и урду. Вы столкнетесь с аналогичными проблемами и с другими буквами.   -  person Burhan Khalid    schedule 22.09.2012
comment
@BurhanKhalid 1- прочитайте комментарий над вашим комментарием. 2- перейдите на страницу ssec.wisc.edu/~tomw/java/unicode.html. и Ctrl+F ARABIC LETTER PEH INITIAL FORM. вы обнаружите, что это стандартное название для этой персидской буквы. 3- полностью прочитайте мой вопрос и его примеры.   -  person Bobs    schedule 22.09.2012
comment
Как я сказал в своем комментарии; проблема со шрифтом. Не проблема с юникодом. В вашем шрифте нет глифа для кодовой точки Юникода; вот почему он не показывает правильно. Вы получите то же самое для ARABIC LETTER TCHEH, ARABIC LETTER GAF и других, которые не являются частью арабского языка. То, что он называется ARABIC LETTER, не означает, что он будет отображаться арабским шрифтом. Арабский алфавит используется в других языках, и ваше письмо не является частью арабского, а является частью персидского. Если у вас установлен шрифт фарси или урду, вы увидите правильный отображаемый глиф.   -  person Burhan Khalid    schedule 22.09.2012
comment
@BurhanKhalid этот шрифт правильно отображает другие персидские буквы, такие как TCHEH и GAF. также этот шрифт правильно отображает PEH в Android 2.2 и 2.3. Я использую этот шрифт в Android 2.2, 2.3, 3.x, но у меня проблема с PEH только в Android 3.x. Я использовал другие шрифты, но у меня были проблемы с PEH для всех.   -  person Bobs    schedule 22.09.2012
comment
@BurhanKhalid У меня проблема как с Tahoma, так и с DroidSansFallback.ttf. Я обновил свой вопрос. Упомяните, что я использую Tahoma в Android 2.2 и 2.3, и с PEH все в порядке в этих версиях Android.   -  person Bobs    schedule 22.09.2012
comment
@breceivemail как насчет android4.x?   -  person hasanghaforian    schedule 24.09.2012
comment
@hasanghaforian Это нормально в Android 4.x   -  person Bobs    schedule 24.09.2012
comment
@breceivemail Кажется, это ошибка. Вы согласны?   -  person hasanghaforian    schedule 27.09.2012
comment
@hasanghaforian Android 3.x поддерживает персидский язык. И когда я не использую этот код и использую персидские буквы непосредственно в своем коде, он правильно отображает все персидские буквы. Я не знаю, какой код PEH в Android 3.x   -  person Bobs    schedule 28.09.2012
comment
@breceivemail Это странно. Ваш способ изменить форму слов в основном правильный. У меня была такая же проблема в j2me несколько лет назад (которая была решена с помощью алгоритма, использующего Unicode) и Android в прошлом году. Я видел приложение, которое называется WikiVajeh, которые поддерживают персидский язык в Android 2+, и специально я протестировал его на Android 3.0. Так что его можно отобразить, Do you guess any way to find it?Even testing any Unicode character! Или вы ищете на других языках, которые могут иметь ту же проблему? Я попробовал это прошлой ночью (2 часа) и сделал не найти ничего полезного.   -  person hasanghaforian    schedule 28.09.2012
comment
Чтобы решить проблему для Android 3.x, замените первое предложение if в методе Farsi.Convert(String) следующим: if (!isFarsiConversionNeeded || android.os.Build.VERSION.SDK_INT ›= android.os.Build. VERSION_CODES.СОТЫ)   -  person Tina    schedule 01.09.2014


Ответы (1)


Пробовали добавлять свои шрифты?

Получите файл персидского шрифта TTF, который вам подходит, и используйте его, таким образом, вы не будете зависеть от ОС. http://twigstechtips.blogspot.com/2012/01/android-how-to-use-true-type-fonts-ttf.html

person Raanan    schedule 29.09.2012
comment
посмотрите на мой пример и мою фотографию и все содержание моего вопроса - person Bobs; 29.09.2012
comment
поправьте меня, если я ошибаюсь, но TAHOMA.TTF не является особым типом шрифта фарси. Вы пробовали использовать шрифт, специально созданный для фарси? google.com/ - person Raanan; 29.09.2012
comment
TAHOMA.TTF поддерживает Unicode. Как я уже упоминал на рисунке, он показывает все персидские символы Unicode, кроме PEH. - person Bobs; 29.09.2012
comment
Вы упоминаете разницу в поведении между устройствами, поэтому я предлагаю использовать ваши собственные шрифты, чтобы попытаться решить эту проблему. - person Raanan; 29.09.2012