[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
rpms/openoffice.org/devel openoffice.org-1.9.129.ooo54603.fontconfig.part2.patch, NONE, 1.1 openoffice.org.spec, 1.805, 1.806
- From: fedora-cvs-commits redhat com
- To: fedora-cvs-commits redhat com
- Subject: rpms/openoffice.org/devel openoffice.org-1.9.129.ooo54603.fontconfig.part2.patch, NONE, 1.1 openoffice.org.spec, 1.805, 1.806
- Date: Mon, 31 Jul 2006 04:19:38 -0400
Author: caolanm
Update of /cvs/dist/rpms/openoffice.org/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv22037
Modified Files:
openoffice.org.spec
Added Files:
openoffice.org-1.9.129.ooo54603.fontconfig.part2.patch
Log Message:
store openoffice.org-1.9.129.ooo54603.fontconfig.part2.patch
openoffice.org-1.9.129.ooo54603.fontconfig.part2.patch:
psprint/inc/psprint/fontmanager.hxx | 2 -
psprint/source/fontmanager/fontconfig.cxx | 42 +++++++++++++++++++++++++++++-
vcl/source/gdi/outdev3.cxx | 28 ++++++++++----------
3 files changed, 57 insertions(+), 15 deletions(-)
--- NEW FILE openoffice.org-1.9.129.ooo54603.fontconfig.part2.patch ---
--- OOC680_m7/psprint/inc/psprint/fontmanager.hxx.foo 2006-07-31 05:54:21.000000000 +0100
+++ OOC680_m7/psprint/inc/psprint/fontmanager.hxx 2006-07-31 05:54:36.000000000 +0100
@@ -765,7 +765,7 @@
bool matchFont( FastPrintFontInfo& rInfo, const com::sun::star::lang::Locale& rLocale );
FontConfigHints getFontConfigHints(const FastPrintFontInfo& rInfo, int nSize);
- String Substitute(const std::vector<String> &rNames, const std::vector<sal_Unicode> &rGlyphs,
+ String Substitute(const std::vector<String> &rNames, std::vector<sal_Unicode> &rGlyphs,
const ByteString &rLangAttrib, italic::type eItalic, weight::type eWeight,
width::type eWidth, pitch::type ePitch) const;
bool hasFontconfig() const { return m_bFontconfigSuccess; }
--- OOC680_m7/psprint/source/fontmanager/fontconfig.cxx.foo 2006-07-31 05:45:23.000000000 +0100
+++ OOC680_m7/psprint/source/fontmanager/fontconfig.cxx 2006-07-31 05:54:08.000000000 +0100
@@ -97,9 +97,12 @@
FcFontSet* (*m_pFcFontSetCreate)();
FcCharSet* (*m_pFcCharSetCreate)();
FcBool (*m_pFcCharSetAddChar)(FcCharSet *, FcChar32);
+ FcBool (*m_pFcCharSetHasChar)(FcCharSet *, FcChar32);
+ void (*m_pFcCharSetDestroy)(FcCharSet*);
void (*m_pFcFontSetDestroy)(FcFontSet*);
FcBool (*m_pFcFontSetAdd)(FcFontSet*,FcPattern*);
void (*m_pFcPatternReference)(FcPattern*);
+ FcResult (*m_pFcPatternGetCharSet)(const FcPattern*,const char*,int,FcCharSet**);
FcResult (*m_pFcPatternGetString)(const FcPattern*,const char*,int,FcChar8**);
FcResult (*m_pFcPatternGetInteger)(const FcPattern*,const char*,int,int*);
FcResult (*m_pFcPatternGetDouble)(const FcPattern*,const char*,int,double*);
@@ -169,6 +172,12 @@
FcBool FcCharSetAddChar(FcCharSet *fcs, FcChar32 ucs4)
{ return m_pFcCharSetAddChar(fcs, ucs4); }
+ FcBool FcCharSetHasChar(FcCharSet *fcs, FcChar32 ucs4)
+ { return m_pFcCharSetHasChar(fcs, ucs4); }
+
+ void FcCharSetDestroy( FcCharSet* pSet )
+ { m_pFcCharSetDestroy( pSet );}
+
void FcFontSetDestroy( FcFontSet* pSet )
{ m_pFcFontSetDestroy( pSet );}
@@ -178,6 +187,9 @@
void FcPatternReference( FcPattern* pPattern )
{ m_pFcPatternReference( pPattern ); }
+ FcResult FcPatternGetCharSet( const FcPattern* pPattern, const char* object, int n, FcCharSet** s )
+ { return m_pFcPatternGetCharSet( pPattern, object, n, s ); }
+
FcResult FcPatternGetString( const FcPattern* pPattern, const char* object, int n, FcChar8** s )
{ return m_pFcPatternGetString( pPattern, object, n, s ); }
@@ -263,12 +275,18 @@
loadSymbol( "FcCharSetCreate" );
m_pFcCharSetAddChar = (FcBool(*)(FcCharSet*, FcChar32))
loadSymbol( "FcCharSetAddChar" );
+ m_pFcCharSetHasChar = (FcBool(*)(FcCharSet*, FcChar32))
+ loadSymbol( "FcCharSetHasChar" );
+ m_pFcCharSetDestroy = (void(*)(FcCharSet*))
+ loadSymbol( "FcCharSetDestroy" );
m_pFcFontSetDestroy = (void(*)(FcFontSet*))
loadSymbol( "FcFontSetDestroy" );
m_pFcFontSetAdd = (FcBool(*)(FcFontSet*,FcPattern*))
loadSymbol( "FcFontSetAdd" );
m_pFcPatternReference = (void(*)(FcPattern*))
loadSymbol( "FcPatternReference" );
+ m_pFcPatternGetCharSet = (FcResult(*)(const FcPattern*,const char*,int,FcCharSet**))
+ loadSymbol( "FcPatternGetCharSet" );
m_pFcPatternGetString = (FcResult(*)(const FcPattern*,const char*,int,FcChar8**))
loadSymbol( "FcPatternGetString" );
m_pFcPatternGetInteger = (FcResult(*)(const FcPattern*,const char*,int,int*))
@@ -306,9 +324,12 @@
m_pFcFontSetCreate &&
m_pFcCharSetCreate &&
m_pFcCharSetAddChar &&
+ m_pFcCharSetHasChar &&
+ m_pFcCharSetDestroy &&
m_pFcFontSetDestroy &&
m_pFcFontSetAdd &&
m_pFcPatternReference &&
+ m_pFcPatternGetCharSet &&
m_pFcPatternGetString &&
m_pFcPatternGetInteger &&
m_pFcPatternGetDouble &&
@@ -675,7 +696,7 @@
#endif
}
-String PrintFontManager::Substitute(const std::vector<String> &rNames, const std::vector<sal_Unicode> &rGlyphs,
+String PrintFontManager::Substitute(const std::vector<String> &rNames, std::vector<sal_Unicode> &rGlyphs,
const ByteString &rLangAttrib, italic::type eItalic, weight::type eWeight,
width::type eWidth, pitch::type ePitch) const
{
@@ -742,8 +763,27 @@
FcResult eFileRes = rWrapper.FcPatternGetString( pSet->fonts[0], FC_FAMILY, 0, &family );
if( eFileRes == FcResultMatch )
aName = String( (sal_Char*)family, RTL_TEXTENCODING_UTF8 );
+
+ if (!rGlyphs.empty() )
+ {
+ std::vector<sal_Unicode> aGlyphs;
+ if (rWrapper.FcPatternGetCharSet(pSet->fonts[0], FC_CHARSET, 0, &unicodes) == FcResultMatch)
+ {
+ std::vector<sal_Unicode>::iterator aGlyphEnd = rGlyphs.end();
+ for (std::vector<sal_Unicode>::iterator aGlyphIter = rGlyphs.begin();
+ aGlyphIter != aGlyphEnd; ++aGlyphIter)
+ {
+ if (rWrapper.FcCharSetHasChar( unicodes, (FcChar32)*aGlyphIter ))
+ aGlyphs.push_back(*aGlyphIter);
+ }
+ }
+ rGlyphs.swap(aGlyphs);
+ }
+
}
}
+ if (unicodes)
+ rWrapper.FcCharSetDestroy(unicodes);
rWrapper.FcFontSetDestroy( pSet );
#endif
return aName;
--- OOC680_m7/vcl/source/gdi/outdev3.cxx.foo 2006-07-31 05:59:23.000000000 +0100
+++ OOC680_m7/vcl/source/gdi/outdev3.cxx 2006-07-31 06:08:45.000000000 +0100
@@ -2652,7 +2652,7 @@
// -----------------------------------------------------------------------
-String GetFcSubstitute(const ImplFontSelectData &rFontSelData, sal_Unicode *pMissingGlyphs=0, int nMissingGlyphs=0)
+String GetFcSubstitute(const ImplFontSelectData &rFontSelData, std::vector<sal_Unicode> &rGlyphs)
{
std::vector<String> aNames;
if( rFontSelData.GetFamilyName().Len() )
@@ -2667,10 +2667,6 @@
while (nIndex != STRING_NOTFOUND);
}
- std::vector<sal_Unicode> aGlyphs;
- for (int i=0; i < nMissingGlyphs; ++i)
- aGlyphs.push_back(pMissingGlyphs[i]);
-
ByteString aLangAttrib = MsLangId::convertLanguageToIsoByteString( rFontSelData.meLanguage );
psp::italic::type eItalic = psp::italic::Unknown;
@@ -2737,7 +2733,7 @@
}
const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
- return rMgr.Substitute(aNames, aGlyphs, aLangAttrib, eItalic, eWeight, eWidth, ePitch);
+ return rMgr.Substitute(aNames, rGlyphs, aLangAttrib, eItalic, eWeight, eWidth, ePitch);
}
// -----------------------------------------------------------------------
@@ -2752,7 +2748,8 @@
|| 0 == rFontSelData.maSearchName.CompareIgnoreCaseToAscii( "opensymbol", 10) )
return 0;
- String aName(GetFcSubstitute(rFontSelData));
+ std::vector<sal_Unicode> aDummy;
+ String aName(GetFcSubstitute(rFontSelData, aDummy));
if (!aName.Len())
return 0;
@@ -3168,17 +3165,21 @@
cached = true;
}
+ std::vector<sal_Unicode> aGlyphs;
+ for (int i=0; i < nMissingUnicodes; ++i)
+ aGlyphs.push_back(pMissingUnicodes[i]);
+
// Try cached fallbacks first
- if ( !symbolFont && (nMissingUnicodes > 0) )
+ if ( !symbolFont && aGlyphs.empty() )
{
- aSelData.maSearchName = pOrigFontEntry->GetFallbackForUnicode( pMissingUnicodes[0] );
+ aSelData.maSearchName = pOrigFontEntry->GetFallbackForUnicode( aGlyphs[0] );
if ( aSelData.maSearchName.Len() )
cached = true;
}
if ( !cached )
{
- String aName(GetFcSubstitute( aSelData, pMissingUnicodes, nMissingUnicodes ));
+ String aName(GetFcSubstitute( aSelData, aGlyphs ));
if (aName.Len())
aSelData.maSearchName = aName;
}
@@ -3218,10 +3219,11 @@
// Cache the fallback font for each of the missing Unicode chars
if ( !symbolFont && aSelData.maSearchName.Len() )
{
- for ( int i = 0; i < nMissingUnicodes; i++ )
+ std::vector<sal_Unicode>::const_iterator aEnd = aGlyphs.end();
+ for (std::vector<sal_Unicode>::const_iterator aI = aGlyphs.begin(); aI != aEnd; ++aI)
{
- if ( ! pOrigFontEntry->GetFallbackForUnicode(pMissingUnicodes[i]).Len() )
- pOrigFontEntry->AddFallbackForUnicode( pMissingUnicodes[i], aSelData.maSearchName );
+ if (!pOrigFontEntry->GetFallbackForUnicode(*aI).Len())
+ pOrigFontEntry->AddFallbackForUnicode(*aI, aSelData.maSearchName);
}
}
Index: openoffice.org.spec
===================================================================
RCS file: /cvs/dist/rpms/openoffice.org/devel/openoffice.org.spec,v
retrieving revision 1.805
retrieving revision 1.806
diff -u -r1.805 -r1.806
--- openoffice.org.spec 29 Jul 2006 20:02:55 -0000 1.805
+++ openoffice.org.spec 31 Jul 2006 08:19:33 -0000 1.806
@@ -127,6 +127,7 @@
Patch61: openoffice.org-2.0.3.ooo65081.sw.layout.patch
Patch62: openoffice.org-2.0.3.ooo67781.sc.reloadhiddenrows.patch
Patch63: workspace.configure18.patch
+Patch64: openoffice.org-1.9.129.ooo54603.fontconfig.part2.patch
%define instdir %{_libdir}/openoffice.org2.0
@@ -921,6 +922,7 @@
%patch61 -p1 -b .ooo65081.sw.layout.patch
%patch62 -p1 -b .ooo67781.sc.reloadhiddenrows.patch
%patch63 -p1 -b .workspace.configure18.patch
+%patch64 -p1 -b .ooo54603.fontconfig.part2.patch
tar xzf %{SOURCE1}
@@ -3496,6 +3498,9 @@
%{instdir}/share/registry/modules/org/openoffice/Office/Scripting/Scripting-python.xcu
%changelog
+* Mon Jul 31 2006 Caolan McNamara <caolanm redhat com> - 1:2.0.3-7.8
+- add openoffice.org-1.9.129.ooo54603.fontconfig.part2.patch
+
* Wed Jul 26 2006 Caolan McNamara <caolanm redhat com> - 1:2.0.3-7.7
- rh#200207# -> openoffice.org-2.0.3.ooo67779.svx.toolbarcrash.patch
- rh#200194# -> openoffice.org-2.0.3.ooo67793.sw.stickymenu.patch
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]