В чем различия между различными типами 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 использует ее заново.)

Другие вопросы по тегам