#android #unicode
#Android #Юникод
Вопрос:
Я пытаюсь отобразить u25BA символ Юникода в textview, но выполнение
<TextView android:id="@ id/arrowright" android:layout_width="20dp"
android:layout_height="240dp" android:gravity="center" android:text="u25BA"
android:textSize="14sp" android:textColor="#000000" />
отображается только пустой прямоугольник. Это работает с другими символами, такими как » u2605″.
Ограничен ли набор символов, которые может отображать Android?
Комментарии:
1. Набор символов, которые может отображать любое устройство , ограничен: если нет шрифта с указанным символом, то он не может быть отображен. И отсутствие шрифта обеспечивает полный охват всей спецификации Юникода.
2. Но возможно ли программно проверить, может ли определенный символ отображаться данным шрифтом?
3. @Patrick: это возможно за пределами Android (или с корневым Android). Вы в основном открываете файл шрифта (это OpenType) и интерпретируете таблицы в соответствии со спецификацией OpenType ( microsoft.com/typography/otspec ). Например, это то, что делает этот инструмент: mihai-nita.net/2007/09/08/charmapex-some-kind-of-character-map . (и, конечно, множество приложений, которые редактируют шрифты напрямую 🙂
4. @Joachim:
Arial Unicode
Шрифт, который обычно устанавливается с MSOffice, содержит большинство символов Юникода. Он также довольно большой, более 20 МБ.5. @ccpizza: Согласно Википедии, в последней версии Arial Unicode определено 50 377 символов (или 38 917 символов). А версия 6.0 стандарта Юникода определяет 109 449 символов. Я бы не назвал это «большинством». Хотя я согласен, что он, вероятно, содержит большинство символов, которые нужны большинству людей изо дня в день, моя основная точка зрения остается в силе: ни один шрифт не обеспечивает полного охвата (и такой шрифт имел бы только ограниченное, специализированное использование).
Ответ №1:
XML не позволяет вам использовать u
экранирование в Юникоде, используйте правильную кодировку, возможно UTF-8, или экранируйте ее с помощью amp;...;
экранирования.
Да, количество символов ограничено тем, что поддерживает текущий шрифт. Используйте браузер шрифтов, чтобы проверить, поддерживается ли нужный символ или нет.
Комментарии:
1. Я могу установить
android:text="u2605"
, и он правильно отображает соответствующий символ Юникода. Как я могу узнать, какой шрифт использовать, и как я могу его установить?2. Смотрите мой ответ ниже. Я считаю, что наиболее практичным способом является подготовка вашего смартфона с таблицей возможных значений в Android. Посмотрите приложение, о котором я упоминал.
Ответ №2:
Попробуйте загрузить карту Юникода из маркета и держите ее под рукой при разработке. В нем используется uXXXX
обозначение.
И, наконец, как сказал Сорин, помните (если вы этого еще не сделали), что uXXXX
(два шестнадцатеричных байта), похоже, работают только в strings.xml
(и импортируются в макеты с использованием @string/string_name
формата). Или, по крайней мере, кажется, что он работает не во всех SDK или во всех средах (здесь я только что протестировал SDK 2.2, и он не работает). Чтобы избежать проблем (символы в середине литеральных строк и т.д.), Я этого не делаю.
Поскольку большинство людей никогда напрямую не кодируют строки в XML-макетах (проблемы с локализацией и т.д.), Это, как правило, не проблема (и именно поэтому я использую этот формат). Кроме того, как вы можете видеть в приложении выше, это, по-видимому, предпочтительный способ экранирования менее чем тривиальных символов в Android.
Лично я считаю, что именно поэтому я не вижу, чтобы многие люди использовали amp;#int;
, я думаю…
Надеюсь, это поможет!
Комментарии:
1. Кстати, я не являюсь автором этого приложения.