Ignore LC_CTYPE if set to "UTF-8"

LC_CTYPE is set to "UTF-8" on some macOS systems, which is
POSIX-compliant in a strict sense, but breaks the usual assumption
that a locale name has the form "ll_LL.encoding".

https://unix.stackexchange.com/questions/503110/valid-values-for-lc-ctype

Previously, this would cause the warning

  Fontconfig warning: ignoring UTF-8: not a valid region tag

Now, we just skip this variable if set to "UTF-8", since that value
doesn't give any language information, and move on to try LANG.
This commit is contained in:
Jean Abou Samra 2022-12-08 13:02:19 +01:00 committed by Akira TAGOH
parent e2e3c10de7
commit 6c2b709b32
1 changed files with 11 additions and 1 deletions

View File

@ -62,7 +62,17 @@ retry:
if (!langs || !langs[0]) if (!langs || !langs[0])
langs = getenv ("LC_ALL"); langs = getenv ("LC_ALL");
if (!langs || !langs[0]) if (!langs || !langs[0])
langs = getenv ("LC_CTYPE"); {
langs = getenv ("LC_CTYPE");
// On some macOS systems, LC_CTYPE is set to "UTF-8", which doesn't
// give any languge information. In this case, ignore LC_CTYPE and
// continue the search with LANG.
if (langs && (FcStrCmpIgnoreCase((const FcChar8 *) langs,
(const FcChar8 *)"UTF-8") == 0))
{
langs = NULL;
}
}
if (!langs || !langs[0]) if (!langs || !langs[0])
langs = getenv ("LANG"); langs = getenv ("LANG");
if (langs && langs[0]) if (langs && langs[0])