Японские иероглифы в Android выглядят как китайские

ПРЕАМБУЛА: начиная с API 17 (Android 4.2), существует метод TextView.setTextLocale () , который явно решает эту проблему для TextView и производных классы. Назначьте японский язык ( Locale.JAPAN ), и символы Unihan будут выглядеть японскими.


У меня есть приложение на Android, которое отображает японский текст в WebView и TextView. Есть некоторые китайские иероглифы (кандзи), которые по соглашению выглядят по-разному в Китае и в Японии, но имеют один и тот же код Unicode. Обычно браузер использует тег lang , чтобы выбрать правильный глиф. На Android все они по умолчанию используют китайские формы, а мне нужны японские формы.

Проблема хорошо объяснена в этой статье . Эта статья также служит прекрасной иллюстрацией проблемы - при просмотре на Android (до 2.2) все символы в «Примеры языковых символов» выглядят одинаково, как и китайские.

Использование атрибута lang = "ja" не помогает. Переключение всей системы на японский язык тоже не помогает.

Меня интересуют телефоны Android, которые продаются в Японии. Такие символы, как 直, 今, 化, тоже выглядят в китайском стиле? Я полагаю, что нет.

Итак, вопрос: существуют ли официальные локализованные образы Android? Могу ли я запустить его на эмуляторе? Является ли шрифт DroidSansFallback единственным шрифтом, поддерживающим CJK? И если это так, то это то же самое, что и на ванильном USA Android?

Я вроде как надеюсь, что японские глифы спрятаны где-то глубоко в шрифте (закрытая область Unicode или что-то в этом роде). Если так, я мог бы использовать их ...

РЕДАКТИРОВАТЬ: обнаружил DroidSansJapanese.ttf, установил его на эмуляторе, скопировав его в / system / fonts, перезапустил. Это не повлияло на внешний вид статьи Unihan. Даже область подсказок при вводе текста на японском языке (который должен знать лучше) отображается как китайский.

Как узнать название гарнитуры DroidSansJapanese.ttf? Такое ощущение, что это все еще Droid Sans, как и во встроенном шрифте DroidSansFallback. Но если они содержат один и тот же шрифт, что определяет, какой из них должен иметь приоритет? Казалось бы - системная локаль, но видимо нет. Шрифты в Android устанавливаются просто путем копирования, не так ли?

25
задан Seva Alekseyev 9 September 2015 в 17:26
поделиться