[Libreoffice-commits] core.git: Branch 'libreoffice-6-3' - vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Fri Sep 6 09:01:54 UTC 2019
vcl/unx/generic/fontmanager/fontconfig.cxx | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
New commits:
commit bd216254af4bb695afbd1e957d02a2a162a08106
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Sep 4 14:52:31 2019 +0100
Commit: Michael Stahl <Michael.Stahl at cib.de>
CommitDate: Fri Sep 6 11:01:05 2019 +0200
Related: rhbz#1648281 improve fontconfig fallback for emojis
disregard text language for emoji and tag with und-zsye to
get fontconfig to give us the default emoji font
Change-Id: I8f94b0c41dea3204c9db77b96ad8f0d98bae2239
Reviewed-on: https://gerrit.libreoffice.org/78609
Tested-by: Jenkins
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
diff --git a/vcl/unx/generic/fontmanager/fontconfig.cxx b/vcl/unx/generic/fontmanager/fontconfig.cxx
index 8e3e9163d1ce..c7bfbb47e9bd 100644
--- a/vcl/unx/generic/fontmanager/fontconfig.cxx
+++ b/vcl/unx/generic/fontmanager/fontconfig.cxx
@@ -796,6 +796,11 @@ namespace
#endif
}
+ bool isEmoji(sal_uInt32 nCurrentChar)
+ {
+ return u_hasBinaryProperty(nCurrentChar, UCHAR_EMOJI);
+ }
+
//returns true if the given code-point couldn't possibly be in rLangTag.
bool isImpossibleCodePointForLang(const LanguageTag &rLangTag, sal_uInt32 currentChar)
{
@@ -844,6 +849,8 @@ namespace
OUString getExemplarLangTagForCodePoint(sal_uInt32 currentChar)
{
+ if (isEmoji(currentChar))
+ return "und-zsye";
int32_t script = u_getIntPropertyValue(currentChar, UCHAR_SCRIPT);
UScriptCode eScript = static_cast<UScriptCode>(script);
OStringBuffer aBuf(unicode::getExemplarLanguageForUScriptCode(eScript));
@@ -902,7 +909,7 @@ void PrintFontManager::Substitute(FontSelectPattern &rPattern, OUString& rMissin
FcCharSetAddChar( codePoints, nCode );
//if the codepoint is impossible for this lang tag, then clear it
//and autodetect something useful
- if (!aLangAttrib.isEmpty() && isImpossibleCodePointForLang(aLangTag, nCode))
+ if (!aLangAttrib.isEmpty() && (isImpossibleCodePointForLang(aLangTag, nCode) || isEmoji(nCode)))
aLangAttrib.clear();
//#i105784#/rhbz#527719 improve selection of fallback font
if (aLangAttrib.isEmpty())
More information about the Libreoffice-commits
mailing list