[Libreoffice] [PATCH] Drop XLFD support from fontmanager
Khaled Hosny
khaledhosny at eglug.org
Fri Jan 13 03:19:19 PST 2012
XLFD support was removed in commit 269f91c (#i110171) except for parsing
fonts.dir and fonts.alias. I don't think this makes much sense in
fontconfig era, and dropping it simplifies the font manager a bit (I
don't even think we use server fonts at all).
---
vcl/generic/fontmanager/fontconfig.cxx | 3 +-
vcl/generic/fontmanager/fontmanager.cxx | 503 +------------------------------
vcl/inc/vcl/fontmanager.hxx | 40 +---
3 files changed, 5 insertions(+), 541 deletions(-)
diff --git a/vcl/generic/fontmanager/fontconfig.cxx b/vcl/generic/fontmanager/fontconfig.cxx
index 90d59f1..eb0e9b6 100644
--- a/vcl/generic/fontmanager/fontconfig.cxx
+++ b/vcl/generic/fontmanager/fontconfig.cxx
@@ -547,10 +547,9 @@ int PrintFontManager::countFontconfigFonts( boost::unordered_map<rtl::OString, i
#endif
// not known, analyze font file to get attributes
// not described by fontconfig (e.g. alias names, PSName)
- std::list< OString > aDummy;
if (eFormatRes != FcResultMatch)
format = NULL;
- analyzeFontFile( nDirID, aBase, aDummy, aFonts, (const char*)format );
+ analyzeFontFile( nDirID, aBase, aFonts, (const char*)format );
#if OSL_DEBUG_LEVEL > 1
if( aFonts.empty() )
fprintf( stderr, "Warning: file \"%s\" is unusable to psprint\n", aOrgPath.getStr() );
diff --git a/vcl/generic/fontmanager/fontmanager.cxx b/vcl/generic/fontmanager/fontmanager.cxx
index 450a9ce..5e20b91 100644
--- a/vcl/generic/fontmanager/fontmanager.cxx
+++ b/vcl/generic/fontmanager/fontmanager.cxx
@@ -133,18 +133,6 @@ inline sal_uInt32 getUInt32BE( const sal_uInt8*& pBuffer )
return nRet;
}
-static FontItalic parseItalic( const ByteString& rItalic )
-{
- FontItalic eItalic = ITALIC_DONTKNOW;
- if( rItalic.EqualsIgnoreCaseAscii( "i" ) )
- eItalic = ITALIC_NORMAL;
- else if( rItalic.EqualsIgnoreCaseAscii( "o" ) )
- eItalic = ITALIC_OBLIQUE;
- else
- eItalic = ITALIC_NONE;
- return eItalic;
-}
-
// -------------------------------------------------------------------------
static FontWeight parseWeight( const ByteString& rWeight )
@@ -184,169 +172,6 @@ static FontWeight parseWeight( const ByteString& rWeight )
return eWeight;
}
-// -------------------------------------------------------------------------
-
-static FontWidth parseWidth( const ByteString& rWidth )
-{
- FontWidth eWidth = WIDTH_DONTKNOW;
- if( rWidth.Equals( "bold" ) ||
- rWidth.Equals( "semiexpanded" ) )
- eWidth = WIDTH_SEMI_EXPANDED;
- else if( rWidth.Equals( "condensed" ) ||
- rWidth.Equals( "narrow" ) )
- eWidth = WIDTH_CONDENSED;
- else if( rWidth.Equals( "double wide" ) ||
- rWidth.Equals( "extraexpanded" ) ||
- rWidth.Equals( "ultraexpanded" ) )
- eWidth = WIDTH_ULTRA_EXPANDED;
- else if( rWidth.Equals( "expanded" ) ||
- rWidth.Equals( "wide" ) )
- eWidth = WIDTH_EXPANDED;
- else if( rWidth.Equals( "extracondensed" ) )
- eWidth = WIDTH_EXTRA_CONDENSED;
- else if( rWidth.Equals( "semicondensed" ) )
- eWidth = WIDTH_SEMI_CONDENSED;
- else if( rWidth.Equals( "ultracondensed" ) )
- eWidth = WIDTH_ULTRA_CONDENSED;
- else
- eWidth = WIDTH_NORMAL;
-
- return eWidth;
-}
-
-// -------------------------------------------------------------------------
-bool PrintFontManager::XLFDEntry::operator<(const PrintFontManager::XLFDEntry& rRight) const
-{
- sal_Int32 nCmp = 0;
- if( (nMask & MaskFamily) && (rRight.nMask & MaskFamily) )
- {
- nCmp = rtl_str_compareIgnoreAsciiCase_WithLength( aFamily.pData->buffer,
- aFamily.pData->length,
- rRight.aFamily.pData->buffer,
- rRight.aFamily.pData->length );
- if( nCmp != 0 )
- return nCmp < 0;
- }
-
- if( (nMask & MaskFoundry) && (rRight.nMask & MaskFoundry) )
- {
- nCmp = rtl_str_compareIgnoreAsciiCase_WithLength( aFoundry.pData->buffer,
- aFoundry.pData->length,
- rRight.aFoundry.pData->buffer,
- rRight.aFoundry.pData->length );
- if( nCmp != 0 )
- return nCmp < 0;
- }
-
- if( (nMask & MaskItalic) && (rRight.nMask & MaskItalic) )
- {
- if( eItalic != rRight.eItalic )
- return (int)eItalic < (int)rRight.eItalic;
- }
-
- if( (nMask & MaskWeight) && (rRight.nMask & MaskWeight) )
- {
- if( eWeight != rRight.eWeight )
- return (int)eWeight < (int)rRight.eWeight;
- }
-
- if( (nMask & MaskWidth) && (rRight.nMask & MaskWidth) )
- {
- if( eWidth != rRight.eWidth )
- return (int)eWidth < (int)rRight.eWidth;
- }
-
- if( (nMask & MaskPitch) && (rRight.nMask & MaskPitch) )
- {
- if( ePitch != rRight.ePitch )
- return (int)ePitch < (int)rRight.ePitch;
- }
-
- if( (nMask & MaskAddStyle) && (rRight.nMask & MaskAddStyle) )
- {
- nCmp = rtl_str_compareIgnoreAsciiCase_WithLength( aAddStyle.pData->buffer,
- aAddStyle.pData->length,
- rRight.aAddStyle.pData->buffer,
- rRight.aAddStyle.pData->length );
- if( nCmp != 0 )
- return nCmp < 0;
- }
-
- if( (nMask & MaskEncoding) && (rRight.nMask & MaskEncoding) )
- {
- if( aEncoding != rRight.aEncoding )
- return aEncoding < rRight.aEncoding;
- }
-
- return false;
-}
-
-bool PrintFontManager::XLFDEntry::operator==(const PrintFontManager::XLFDEntry& rRight) const
-{
- sal_Int32 nCmp = 0;
- if( (nMask & MaskFamily) && (rRight.nMask & MaskFamily) )
- {
- nCmp = rtl_str_compareIgnoreAsciiCase_WithLength( aFamily.pData->buffer,
- aFamily.pData->length,
- rRight.aFamily.pData->buffer,
- rRight.aFamily.pData->length );
- if( nCmp != 0 )
- return false;
- }
-
- if( (nMask & MaskFoundry) && (rRight.nMask & MaskFoundry) )
- {
- nCmp = rtl_str_compareIgnoreAsciiCase_WithLength( aFoundry.pData->buffer,
- aFoundry.pData->length,
- rRight.aFoundry.pData->buffer,
- rRight.aFoundry.pData->length );
- if( nCmp != 0 )
- return false;
- }
-
- if( (nMask & MaskItalic) && (rRight.nMask & MaskItalic) )
- {
- if( eItalic != rRight.eItalic )
- return false;
- }
-
- if( (nMask & MaskWeight) && (rRight.nMask & MaskWeight) )
- {
- if( eWeight != rRight.eWeight )
- return false;
- }
-
- if( (nMask & MaskWidth) && (rRight.nMask & MaskWidth) )
- {
- if( eWidth != rRight.eWidth )
- return false;
- }
-
- if( (nMask & MaskPitch) && (rRight.nMask & MaskPitch) )
- {
- if( ePitch != rRight.ePitch )
- return false;
- }
-
- if( (nMask & MaskAddStyle) && (rRight.nMask & MaskAddStyle) )
- {
- nCmp = rtl_str_compareIgnoreAsciiCase_WithLength( aAddStyle.pData->buffer,
- aAddStyle.pData->length,
- rRight.aAddStyle.pData->buffer,
- rRight.aAddStyle.pData->length );
- if( nCmp != 0 )
- return false;
- }
-
- if( (nMask & MaskEncoding) && (rRight.nMask & MaskEncoding) )
- {
- if( aEncoding != rRight.aEncoding )
- return false;
- }
-
- return true;
-}
-
/*
* PrintFont implementations
*/
@@ -1265,7 +1090,7 @@ std::vector<fontID> PrintFontManager::addFontFile( const ::rtl::OString& rFileNa
if( aFontIds.empty() )
{
::std::list< PrintFont* > aNewFonts;
- if( analyzeFontFile( nDirID, aName, ::std::list<OString>(), aNewFonts ) )
+ if( analyzeFontFile( nDirID, aName, aNewFonts ) )
{
for( ::std::list< PrintFont* >::iterator it = aNewFonts.begin();
it != aNewFonts.end(); ++it )
@@ -1286,7 +1111,7 @@ enum fontFormat
UNKNOWN, TRUETYPE, CFF, TYPE1, AFM
};
-bool PrintFontManager::analyzeFontFile( int nDirID, const OString& rFontFile, const ::std::list<OString>& rXLFDs, ::std::list< PrintFontManager::PrintFont* >& rNewFonts, const char *pFormat ) const
+bool PrintFontManager::analyzeFontFile( int nDirID, const OString& rFontFile, ::std::list< PrintFontManager::PrintFont* >& rNewFonts, const char *pFormat ) const
{
rNewFonts.clear();
@@ -1368,8 +1193,6 @@ bool PrintFontManager::analyzeFontFile( int nDirID, const OString& rFontFile, co
delete pFont;
pFont = NULL;
}
- if( pFont && rXLFDs.size() )
- getFontAttributesFromXLFD( pFont, rXLFDs );
if( pFont )
rNewFonts.push_back( pFont );
break;
@@ -1406,8 +1229,6 @@ bool PrintFontManager::analyzeFontFile( int nDirID, const OString& rFontFile, co
pFont->m_nDirectory = nDirID;
pFont->m_aFontFile = rFontFile;
pFont->m_nCollectionEntry = i;
- if( nLength == 1 )
- getFontAttributesFromXLFD( pFont, rXLFDs );
if( ! analyzeTrueTypeFile( pFont ) )
{
delete pFont;
@@ -1424,8 +1245,6 @@ bool PrintFontManager::analyzeFontFile( int nDirID, const OString& rFontFile, co
pFont->m_aFontFile = rFontFile;
pFont->m_nCollectionEntry = 0;
- if( rXLFDs.size() )
- getFontAttributesFromXLFD( pFont, rXLFDs );
// need to read the font anyway to get aliases inside the font file
if( ! analyzeTrueTypeFile( pFont ) )
{
@@ -1546,194 +1365,6 @@ std::vector<fontID> PrintFontManager::findFontFileIDs( int nDirID, const OString
// -------------------------------------------------------------------------
-bool PrintFontManager::parseXLFD( const OString& rXLFD, XLFDEntry& rEntry )
-{
- sal_Int32 nIndex = 0;
- OString aFoundry = WhitespaceToSpace( rXLFD.getToken( 1, '-', nIndex ) );
- if( nIndex < 0 ) return false;
- OString aFamilyXLFD = WhitespaceToSpace( rXLFD.getToken( 0, '-', nIndex ) );
- if( nIndex < 0 ) return false;
- OString aWeight = rXLFD.getToken( 0, '-', nIndex ).toAsciiLowerCase();
- if( nIndex < 0 ) return false;
- OString aSlant = rXLFD.getToken( 0, '-', nIndex ).toAsciiLowerCase();
- if( nIndex < 0 ) return false;
- OString aWidth = rXLFD.getToken( 0, '-', nIndex ).toAsciiLowerCase();
- if( nIndex < 0 ) return false;
- OString aAddStyle = rXLFD.getToken( 0, '-', nIndex ).toAsciiLowerCase();
- if( nIndex < 0 ) return false;
- OString aPitch = rXLFD.getToken( 4, '-', nIndex ).toAsciiLowerCase();
- if( nIndex < 0 ) return false;
- OString aRegEnc = WhitespaceToSpace( rXLFD.getToken( 1, '-', nIndex ).toAsciiLowerCase() );
- if( nIndex < 0 ) return false;
- OString aEnc = WhitespaceToSpace( rXLFD.getToken( 0, '-', nIndex ).toAsciiLowerCase() );
-
- // capitalize words
- sal_Int32 nFamIndex = 0;
- OStringBuffer aFamilyName;
- while( nFamIndex >= 0 )
- {
- OString aToken = aFamilyXLFD.getToken( 0, ' ', nFamIndex );
- sal_Char aFirst = aToken.toChar();
- if( aFirst >= 'a' && aFirst <= 'z' )
- aFirst = aFirst - 'a' + 'A';
- OStringBuffer aNewToken( aToken.getLength() );
- aNewToken.append( aToken );
- aNewToken[0] = aFirst;
- if( aFamilyName.getLength() > 0 )
- aFamilyName.append( ' ' );
- aFamilyName.append( aNewToken.makeStringAndClear() );
- }
-
- rEntry.aFoundry = aFoundry;
- rEntry.aFamily = aFamilyName.makeStringAndClear();
- rEntry.aAddStyle = aAddStyle;
- // evaluate weight
- rEntry.eWeight = parseWeight( aWeight );
- // evaluate slant
- rEntry.eItalic = parseItalic( aSlant );
- // evaluate width
- rEntry.eWidth = parseWidth( aWidth );
-
- // evaluate pitch
- if( aPitch.toChar() == 'c' || aPitch.toChar() == 'm' )
- rEntry.ePitch = PITCH_FIXED;
- else
- rEntry.ePitch = PITCH_VARIABLE;
-
- OString aToken = aEnc.toAsciiLowerCase();
- // get encoding
- if( aAddStyle.indexOf( "symbol" ) != -1 )
- rEntry.aEncoding = RTL_TEXTENCODING_SYMBOL;
- else
- {
- if( aToken.equals( "symbol" ) )
- rEntry.aEncoding = RTL_TEXTENCODING_SYMBOL;
- else
- {
- OStringBuffer aCharset( aRegEnc.getLength() + aEnc.getLength() + 1 );
- aCharset.append( aRegEnc );
- aCharset.append( '-' );
- aCharset.append( aEnc );
- rEntry.aEncoding = rtl_getTextEncodingFromUnixCharset( aCharset.getStr() );
- }
- }
-
- // set correct mask flags
- rEntry.nMask = 0;
- if( rEntry.aFoundry != "*" ) rEntry.nMask |= XLFDEntry::MaskFoundry;
- if( rEntry.aFamily != "*" ) rEntry.nMask |= XLFDEntry::MaskFamily;
- if( rEntry.aAddStyle != "*" ) rEntry.nMask |= XLFDEntry::MaskAddStyle;
- if( aWeight != "*" ) rEntry.nMask |= XLFDEntry::MaskWeight;
- if( aSlant != "*" ) rEntry.nMask |= XLFDEntry::MaskItalic;
- if( aWidth != "*" ) rEntry.nMask |= XLFDEntry::MaskWidth;
- if( aPitch != "*" ) rEntry.nMask |= XLFDEntry::MaskPitch;
- if( aRegEnc != "*" && aEnc != "*" ) rEntry.nMask |= XLFDEntry::MaskEncoding;
-
- return true;
-}
-
-// -------------------------------------------------------------------------
-
-void PrintFontManager::parseXLFD_appendAliases( const std::list< OString >& rXLFDs, std::list< XLFDEntry >& rEntries ) const
-{
- for( std::list< OString >::const_iterator it = rXLFDs.begin(); it != rXLFDs.end(); ++it )
- {
- XLFDEntry aEntry;
- if( ! parseXLFD(*it, aEntry) )
- continue;
- rEntries.push_back( aEntry );
- std::map< XLFDEntry, std::list< XLFDEntry > >::const_iterator alias_it =
- m_aXLFD_Aliases.find( aEntry );
- if( alias_it != m_aXLFD_Aliases.end() )
- {
- rEntries.insert( rEntries.end(), alias_it->second.begin(), alias_it->second.end() );
- }
- }
-}
-
-// -------------------------------------------------------------------------
-
-void PrintFontManager::getFontAttributesFromXLFD( PrintFont* pFont, const std::list< OString >& rXLFDs ) const
-{
- bool bFamilyName = false;
-
- std::list< XLFDEntry > aXLFDs;
-
- parseXLFD_appendAliases( rXLFDs, aXLFDs );
-
- for( std::list< XLFDEntry >::const_iterator it = aXLFDs.begin();
- it != aXLFDs.end(); ++it )
- {
- // set family name or alias
- int nFam =
- m_pAtoms->getAtom( ATOM_FAMILYNAME,
- OStringToOUString( it->aFamily, it->aAddStyle.indexOf( "utf8" ) != -1 ? RTL_TEXTENCODING_UTF8 : RTL_TEXTENCODING_ISO_8859_1 ),
- sal_True );
- if( ! bFamilyName )
- {
- bFamilyName = true;
- pFont->m_nFamilyName = nFam;
- switch( pFont->m_eType )
- {
- case fonttype::Type1:
- static_cast<Type1FontFile*>(pFont)->m_aXLFD = rXLFDs.front();
- break;
- case fonttype::TrueType:
- static_cast<TrueTypeFontFile*>(pFont)->m_aXLFD = rXLFDs.front();
- break;
- default:
- break;
- }
- }
- else
- {
- // make sure that aliases are unique
- if( nFam != pFont->m_nFamilyName )
- {
- std::list< int >::const_iterator al_it;
- for( al_it = pFont->m_aAliases.begin(); al_it != pFont->m_aAliases.end() && *al_it != nFam; ++al_it )
- ;
- if( al_it == pFont->m_aAliases.end() )
- pFont->m_aAliases.push_back( nFam );
-
- }
- // for the rest of the attributes there can only be one value;
- // we'll trust the first one
- continue;
- }
-
- // fill in weight
- pFont->m_eWeight = it->eWeight;
- // fill in slant
- pFont->m_eItalic = it->eItalic;
- // fill in width
- pFont->m_eWidth = it->eWidth;
- // fill in pitch
- pFont->m_ePitch = it->ePitch;
- // fill in encoding
- pFont->m_aEncoding = it->aEncoding;
- }
-
- // handle iso8859-1 as ms1252 to fill the "gap" starting at 0x80
- if( pFont->m_aEncoding == RTL_TEXTENCODING_ISO_8859_1 )
- pFont->m_aEncoding = RTL_TEXTENCODING_MS_1252;
- if( rXLFDs.begin() != rXLFDs.end() )
- {
- switch( pFont->m_eType )
- {
- case fonttype::Type1:
- static_cast<Type1FontFile*>(pFont)->m_aXLFD = rXLFDs.front();
- break;
- case fonttype::TrueType:
- static_cast<TrueTypeFontFile*>(pFont)->m_aXLFD = rXLFDs.front();
- break;
- default: break;
- }
- }
-}
-
-// -------------------------------------------------------------------------
-
OUString PrintFontManager::convertTrueTypeName( void* pRecord ) const
{
NameRecord* pNameRecord = (NameRecord*)pRecord;
@@ -2027,47 +1658,6 @@ bool PrintFontManager::analyzeTrueTypeFile( PrintFont* pFont ) const
return bSuccess;
}
-// -------------------------------------------------------------------------
-
-void PrintFontManager::initFontsAlias()
-{
- m_aXLFD_Aliases.clear();
- rtl_TextEncoding aEnc = osl_getThreadTextEncoding();
- for( std::list< OString >::const_iterator dir_it = m_aFontDirectories.begin();
- dir_it != m_aFontDirectories.end(); ++dir_it )
- {
- OStringBuffer aDirName(512);
- aDirName.append( *dir_it );
- aDirName.append( "/fonts.alias" );
- SvFileStream aStream( OStringToOUString( aDirName.makeStringAndClear(), aEnc ), STREAM_READ );
- if( ! aStream.IsOpen() )
- continue;
-
- do
- {
- ByteString aLine;
- aStream.ReadLine( aLine );
-
- // get the alias and the pattern it gets translated to
- ByteString aAlias = GetCommandLineToken( 0, aLine );
- ByteString aMap = GetCommandLineToken( 1, aLine );
-
- // remove eventual quotes
- aAlias = comphelper::string::stripStart(aAlias, '"');
- aAlias = comphelper::string::stripEnd(aAlias, '"');
- aMap = comphelper::string::stripStart(aMap, '"');
- aMap = comphelper::string::stripEnd(aMap, '"');
-
- XLFDEntry aAliasEntry, aMapEntry;
- parseXLFD( aAlias, aAliasEntry );
- parseXLFD( aMap, aMapEntry );
-
- if( aAliasEntry.nMask && aMapEntry.nMask )
- m_aXLFD_Aliases[ aMapEntry ].push_back( aAliasEntry );
- } while( ! aStream.IsEof() );
- }
-}
-
static bool AreFCSubstitutionsEnabled()
{
return (SalGenericInstance::FetchFontSubstitutionFlags() & 3) == 0;
@@ -2160,9 +1750,6 @@ void PrintFontManager::initialize()
// Don't search directories that fontconfig already did
countFontconfigFonts( visited_dirs );
- // fill XLFD aliases from fonts.alias files
- initFontsAlias();
-
// search for font files in each path
std::list< OString >::iterator dir_it;
for( dir_it = m_aFontDirectories.begin(); dir_it != m_aFontDirectories.end(); ++dir_it )
@@ -2207,89 +1794,6 @@ void PrintFontManager::initialize()
continue;
}
- DIR* pDIR = opendir( aPath.getStr() );
- struct dirent* pEntry = (struct dirent*)aDirEntBuffer;
- if( pDIR )
- {
- // read fonts.dir if possible
- ::boost::unordered_map< OString, ::std::list<OString>, OStringHash > aFontsDir;
- int nDirID = getDirectoryAtom( aPath, true );
- // #i38367# no fonts.dir in our own directories anymore
- std::list< int >::const_iterator priv_dir;
- for( priv_dir = m_aPrivateFontDirectories.begin();
- priv_dir != m_aPrivateFontDirectories.end() && *priv_dir != nDirID;
- ++priv_dir )
- ;
-
- if( priv_dir == m_aPrivateFontDirectories.end() )
- {
- ByteString aGccDummy( aPath );
- String aFontsDirPath( aGccDummy, aEncoding );
- aFontsDirPath.AppendAscii( "/fonts.dir" );
- SvFileStream aStream( aFontsDirPath, STREAM_READ );
- if( aStream.IsOpen() )
- {
- ByteString aLine;
- while( ! aStream.IsEof() )
- {
- aStream.ReadLine( aLine );
- ByteString aFileName( GetCommandLineToken( 0, aLine ) );
- ByteString aXLFD( aLine.Copy( aFileName.Len() ) );
- if( aFileName.Len() && aXLFD.Len() )
- aFontsDir[ aFileName ].push_back(aXLFD);
- }
- }
- }
-
- int nDirFonts = 0;
- while( ! readdir_r( pDIR, (struct dirent*)aDirEntBuffer, &pEntry ) && pEntry )
- {
- OString aFileName( pEntry->d_name );
- // ignore .afm files here
- if( aFileName.getLength() > 3 &&
- aFileName.lastIndexOf( ".afm" ) == aFileName.getLength()-4 )
- continue;
-
- struct stat aStat;
- rtl::OStringBuffer aFilePath(aPath);
- aFilePath.append('/').append(aFileName);
- if( ! stat( aFilePath.getStr(), &aStat ) &&
- S_ISREG( aStat.st_mode ) )
- {
- if (!knownFontFile(nDirID, aFileName))
- {
- ::std::list<OString> aXLFDs;
- ::boost::unordered_map< OString, ::std::list<OString>, OStringHash >::const_iterator it =
- aFontsDir.find( aFileName );
- if( it != aFontsDir.end() )
- aXLFDs = (*it).second;
-
- // fill in font attributes from XLFD rather
- // than reading every file
- ::std::list< PrintFont* > aNewFonts;
- if( analyzeFontFile( nDirID, aFileName, aXLFDs, aNewFonts ) )
- {
- for( ::std::list< PrintFont* >::iterator font_it = aNewFonts.begin(); font_it != aNewFonts.end(); ++font_it )
- {
- fontID aFont = m_nNextFontID++;
- m_aFonts[ aFont ] = *font_it;
- m_aFontFileToFontID[ aFileName ].insert( aFont );
- m_pFontCache->updateFontCacheEntry( *font_it, false );
- nDirFonts++;
-#if OSL_DEBUG_LEVEL > 2
- fprintf( stderr, "adding font %d: from %s\n", aFont,
- getFontFileSysPath( aFont ).getStr() );
-#endif
- }
- }
- }
- }
- }
- closedir( pDIR );
- m_pFontCache->updateDirTimestamp( nDirID );
- if( ! nDirFonts )
- m_pFontCache->markEmptyDir( nDirID );
- }
}
#if OSL_DEBUG_LEVEL > 1
@@ -2300,7 +1804,6 @@ void PrintFontManager::initialize()
std::list< OUString > aMetricDirs;
psp::getPrinterPathList( aMetricDirs, PRINTER_METRICDIR );
- std::list< OString > aEmptyFontsDir;
for( std::list< OUString >::const_iterator met_dir_it = aMetricDirs.begin(); met_dir_it != aMetricDirs.end(); ++met_dir_it )
{
OString aDir = OUStringToOString( *met_dir_it, aEncoding );
@@ -2358,7 +1861,7 @@ void PrintFontManager::initialize()
{
::std::list< PrintFont* > aNewFonts;
- analyzeFontFile( nDirID, aFileName, aEmptyFontsDir, aNewFonts );
+ analyzeFontFile( nDirID, aFileName, aNewFonts );
for( ::std::list< PrintFont* >::iterator it = aNewFonts.begin(); it != aNewFonts.end(); ++it )
{
if( findFontBuiltinID( (*it)->m_nPSName ) == 0 )
diff --git a/vcl/inc/vcl/fontmanager.hxx b/vcl/inc/vcl/fontmanager.hxx
index b5edccd..78481e4 100644
--- a/vcl/inc/vcl/fontmanager.hxx
+++ b/vcl/inc/vcl/fontmanager.hxx
@@ -236,7 +236,6 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
int m_nDirectory; // atom containing system dependent path
rtl::OString m_aFontFile; // relative to directory
rtl::OString m_aMetricFile; // dito
- rtl::OString m_aXLFD; // mainly for administration, contains the XLFD from fonts.dir
/* note: m_aFontFile and Metric file are not atoms
because they should be fairly unique */
@@ -250,7 +249,6 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
{
int m_nDirectory; // atom containing system dependent path
rtl::OString m_aFontFile; // relative to directory
- rtl::OString m_aXLFD; // mainly for administration, contains the XLFD from fonts.dir
int m_nCollectionEntry; // 0 for regular fonts, 0 to ... for fonts stemming from collections
unsigned int m_nTypeFlags; // copyright bits and PS-OpenType flag
@@ -269,34 +267,6 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
virtual bool queryMetricPage( int nPage, utl::MultiAtomProvider* pProvider );
};
- struct XLFDEntry
- {
- static const int MaskFoundry = 1;
- static const int MaskFamily = 2;
- static const int MaskAddStyle = 4;
- static const int MaskItalic = 8;
- static const int MaskWeight = 16;
- static const int MaskWidth = 32;
- static const int MaskPitch = 64;
- static const int MaskEncoding = 128;
-
- int nMask; // contains a bit set for every valid member
-
- rtl::OString aFoundry;
- rtl::OString aFamily;
- rtl::OString aAddStyle;
- FontItalic eItalic;
- FontWeight eWeight;
- FontWidth eWidth;
- FontPitch ePitch;
- rtl_TextEncoding aEncoding;
-
- XLFDEntry() { nMask = 0; }
-
- bool operator<(const XLFDEntry& rRight) const;
- bool operator==(const XLFDEntry& rRight) const;
- };
-
static rtl::OString s_aEmptyOString;
fontID m_nNextFontID;
@@ -305,8 +275,6 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
std::list< rtl::OUString > m_aPrinterDrivers;
std::list< rtl::OString > m_aFontDirectories;
std::list< int > m_aPrivateFontDirectories;
- std::map< struct XLFDEntry, std::list< struct XLFDEntry > >
- m_aXLFD_Aliases;
utl::MultiAtomProvider* m_pAtoms;
// for speeding up findFontFileID
boost::unordered_map< rtl::OString, std::set< fontID >, rtl::OStringHash >
@@ -331,9 +299,7 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
rtl::OString getAfmFile( PrintFont* pFont ) const;
rtl::OString getFontFile( PrintFont* pFont ) const;
- void getFontAttributesFromXLFD( PrintFont* pFont, const std::list< rtl::OString >& rXLFDs ) const;
-
- bool analyzeFontFile( int nDirID, const rtl::OString& rFileName, const std::list< rtl::OString >& rXLFDs, std::list< PrintFont* >& rNewFonts, const char *pFormat=NULL ) const;
+ bool analyzeFontFile( int nDirID, const rtl::OString& rFileName, std::list< PrintFont* >& rNewFonts, const char *pFormat=NULL ) const;
rtl::OUString convertTrueTypeName( void* pNameRecord ) const; // actually a NameRecord* formt font subsetting code
void analyzeTrueTypeFamilyName( void* pTTFont, std::list< rtl::OUString >& rnames ) const; // actually a TrueTypeFont* from font subsetting code
bool analyzeTrueTypeFile( PrintFont* pFont ) const;
@@ -387,10 +353,6 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
*/
bool addFontconfigDir(const rtl::OString& rDirectory);
- static bool parseXLFD( const rtl::OString& rXLFD, XLFDEntry& rEntry );
- void parseXLFD_appendAliases( const std::list< rtl::OString >& rXLFDs, std::list< XLFDEntry >& rEntries ) const;
- void initFontsAlias();
-
bool readOverrideMetrics();
PrintFontManager();
--
1.7.0.4
More information about the LibreOffice
mailing list