#android #text #unicode #emoji #spannablestring
Вопрос:
В моем приложении мне нужно EditText
с SpannableString
. Когда я получаю специальный символ, например ✝
, для примера, символ преобразуется в соответствующий смайлик. Эта «проблема» существует не на всех устройствах, например, это происходит на Samsung, но не на Android AOSP
Как я могу «заставить» получить специальный символ, а не смайлик ?
РЕШЕНИЕ :
Я нашел это решение, чтобы получить правильный результат, но я не знаю, хорошо это или нет :
val specialChar = "✝︎"
val symbole = StringBuilder(specialChar).append(0xFE0E.toChar()).toString()
С помощью этого кода я получаю специальный символ вместо смайликов
Комментарии:
1. Проблема в шрифте и в настройках шрифта (шрифты, с настройками шрифтов/флагами, решает вопрос о заменах)
2. Ваше решение разумно. Когда эмодзи были впервые добавлены в Юникод, если в Юникоде уже был символ, который был черно-белым эквивалентом эмодзи, то данный эмодзи был объединен с этим символом. Позже было признано, что это был не лучший выбор, потому что это привело к проблемам, подобным тем, с которыми вы столкнулись. Чтобы определить, предназначено ли представление текста (символа) или эмодзи, были определены последовательности вариантов, чтобы указать желаемый внешний вид. Добавление U FE0E использует одну из этих последовательностей. См. unicode.org/reports/tr51/#Emoji_Variation_Sequences .