В чем различия между различными типами utf-8?
Существует проблема со скайпом на Linux. Если я изменю настройку локали на en_US.utf-8, китайские иероглифы будут плохо прорисованы (некоторые выделены жирным шрифтом, некоторые нет). Если я изменю настройку локали на zh_CN.utf-8, английский и китайский языки будут отображаться правильно. Настройки шрифта одинаковы.
Вот мои вопросы:
Q1: В чем различия между различными типами кодировки UTF-8 в настройках локали linux?
Q2: Как это может повлиять на отображение определенного языка?
1 ответ
Q1: В чем различия между различными типами кодировки UTF-8 в настройках локали linux?
Абсолютно нет. Разница не вызвана кодировкой.
Q2: Как это может повлиять на отображение определенного языка?
Fontconfig, система настройки шрифтов Linux, использует язык и язык вашей системы в качестве подсказки при выборе лучшего шрифта для конкретного символа. (Например, в моей системе он выбирает либо "IPAMincho", либо "Source Han Sans", в зависимости от локали. Я думаю, что не помогает, что первый действительно помечен как "lang=en" в своих собственных метаданных, несмотря на то, что делается для английского текста.)
AFAIK, это необходимо, потому что сами глифы не предоставляют достаточно информации о том, на каком языке они находятся, и (из-за "Unicode Unicode") могут предоставлять разные визуализации для одного и того же глифа.
Вы можете установить FC_LANG="zh_CN"
Переменная окружения для предоставления другой подсказки локали специально для Fontconfig без изменения глобальной локали.
Вы также можете установить LC_CTYPE="zh_CN.UTF-8"
для того же эффекта; это могло бы лучше вписаться в файлы конфигурации локали системы. (Обычно часть language_territory $LC_CTYPE ни для чего не используется, поэтому fontconfig использует ее заново.)