diff --git a/0001-Related-rhbz-968892-discard-impossible-languages-for.patch b/0001-Related-rhbz-968892-discard-impossible-languages-for.patch index a5754dd..809a65c 100644 --- a/0001-Related-rhbz-968892-discard-impossible-languages-for.patch +++ b/0001-Related-rhbz-968892-discard-impossible-languages-for.patch @@ -63,9 +63,9 @@ index 1b36980..ff471fa 100644 + //and autodetect something useful + if (!aLangAttrib.isEmpty() && isImpossibleCodePointForLang(aLangTag, nCode)) + aLangAttrib = OString(); + if (!pLangAttribUtf8) + pLangAttribUtf8 = (const FcChar8*)pick_sample_language(nCode); //#i105784#/rhbz#527719 improve selection of fallback font - if (aLangAttrib.isEmpty()) - { -- 1.8.1.4 diff --git a/libreoffice.spec b/libreoffice.spec index 8df7047..617670b 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -990,7 +990,7 @@ mv -f redhat.soc extras/source/palettes/standard.soc %patch3 -p1 -b .ooo88341.sc.verticalboxes.patch %patch4 -p1 -b .oooXXXXX.solenv.allowmissing.patch %patch5 -p1 -b .ooo101274.opening-a-directory.patch -# %%patch6 -p1 -b .ooo105784.vcl.sniffscriptforsubs.patch +%patch6 -p1 -b .ooo105784.vcl.sniffscriptforsubs.patch %patch7 -p1 -b .libreoffice-installfix.patch %if 0%{?rhel} && 0%{?rhel} < 7 %patch9 -p1 -b .rhel6gcj.patch diff --git a/openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch b/openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch index 4f68758..5fd93e3 100644 --- a/openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch +++ b/openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch @@ -1,18 +1,18 @@ -From bda1b906c7bee734dfc7242b60b7b1510886aee0 Mon Sep 17 00:00:00 2001 +From 387b9d3293ef8582c400c670574a80ebb3aec4fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= Date: Thu, 1 Dec 2011 14:18:09 +0100 Subject: [PATCH] #i105784# vcl: improve selection of fallback font by supplying language hint when none exists --- - vcl/generic/fontmanager/fontconfig.cxx | 141 +++++++++++++++++++++++++++++++++ - 1 file changed, 141 insertions(+) + vcl/generic/fontmanager/fontconfig.cxx | 143 ++++++++++++++++++++++++++++++++- + 1 file changed, 141 insertions(+), 2 deletions(-) diff --git a/vcl/generic/fontmanager/fontconfig.cxx b/vcl/generic/fontmanager/fontconfig.cxx -index 8270585..82ac6bc 100644 +index a305095..028b269 100644 --- a/vcl/generic/fontmanager/fontconfig.cxx +++ b/vcl/generic/fontmanager/fontconfig.cxx -@@ -91,6 +91,9 @@ using namespace psp; +@@ -90,6 +90,9 @@ using namespace psp; #include "sal/alloca.h" @@ -22,7 +22,7 @@ index 8270585..82ac6bc 100644 #include #include -@@ -911,6 +914,138 @@ IMPL_LINK_NOARG(PrintFontManager, autoInstallFontLangSupport) +@@ -969,6 +972,138 @@ IMPL_LINK_NOARG(PrintFontManager, autoInstallFontLangSupport) return 0; } @@ -158,34 +158,44 @@ index 8270585..82ac6bc 100644 + return NULL; +} + - bool PrintFontManager::Substitute( FontSelectPattern &rPattern, rtl::OUString& rMissingCodes ) + bool PrintFontManager::Substitute( FontSelectPattern &rPattern, OUString& rMissingCodes ) { bool bRet = false; -@@ -929,6 +1064,7 @@ bool PrintFontManager::Substitute( FontSelectPattern &rPattern, rtl::OUString& r +@@ -987,6 +1122,7 @@ bool PrintFontManager::Substitute( FontSelectPattern &rPattern, OUString& rMissi - const LanguageTag aLangTag(rPattern.meLanguage); - const rtl::OString aLangAttrib = mapToFontConfigLangTag(aLangTag); + LanguageTag aLangTag(rPattern.meLanguage); + OString aLangAttrib = mapToFontConfigLangTag(aLangTag); + const FcChar8* pLangAttribUtf8 = (const FcChar8*)aLangAttrib.getStr(); - if (!aLangAttrib.isEmpty()) - FcPatternAddString(pPattern, FC_LANG, (FcChar8*)aLangAttrib.getStr()); -@@ -941,11 +1077,16 @@ bool PrintFontManager::Substitute( FontSelectPattern &rPattern, rtl::OUString& r - // also handle unicode surrogates - const sal_uInt32 nCode = rMissingCodes.iterateCodePoints( &nStrIndex ); - FcCharSetAddChar( unicodes, nCode ); + // Add required Unicode characters, if any + if ( !rMissingCodes.isEmpty() ) +@@ -997,6 +1133,8 @@ bool PrintFontManager::Substitute( FontSelectPattern &rPattern, OUString& rMissi + // also handle unicode surrogates + const sal_uInt32 nCode = rMissingCodes.iterateCodePoints( &nStrIndex ); + FcCharSetAddChar( unicodes, nCode ); + if (!pLangAttribUtf8) + pLangAttribUtf8 = (const FcChar8*)pick_sample_language(nCode); - } - FcPatternAddCharSet(pPattern, FC_CHARSET, unicodes); - FcCharSetDestroy(unicodes); + //#i105784#/rhbz#527719 improve selection of fallback font + if (aLangAttrib.isEmpty()) + { +@@ -1006,14 +1144,15 @@ bool PrintFontManager::Substitute( FontSelectPattern &rPattern, OUString& rMissi + { + aLangTag = getExemplerLangTagForCodePoint(nCode); + aLangAttrib = mapToFontConfigLangTag(aLangTag); ++ pLangAttribUtf8 = (const FcChar8*)aLangAttrib.getStr(); + } + } + FcPatternAddCharSet(pPattern, FC_CHARSET, unicodes); + FcCharSetDestroy(unicodes); } +- if (!aLangAttrib.isEmpty()) +- FcPatternAddString(pPattern, FC_LANG, (FcChar8*)aLangAttrib.getStr()); + if( pLangAttribUtf8 ) + FcPatternAddString( pPattern, FC_LANG, pLangAttribUtf8 ); -+ - addtopattern(pPattern, rPattern.meItalic, rPattern.meWeight, - rPattern.meWidthType, rPattern.mePitch); + addtopattern(pPattern, rPattern.GetSlant(), rPattern.GetWeight(), + rPattern.GetWidthType(), rPattern.GetPitch()); -- -1.8.0 +1.8.3.1