[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    qt-copy/src/kernel
From:       Stephan Kulow <coolo () kde ! org>
Date:       2004-06-26 10:15:42
Message-ID: 20040626101542.3F7581BAB () office ! kde ! org
[Download RAW message or body]

CVS commit by coolo: 

I wonder why I forgot to commit:
avoid wrong cache misses with unicode encodings (patch by Lars)


  M +10 -1     qfontdatabase.cpp   1.64
  M +13 -1     qfontdatabase_x11.cpp   1.35


--- qt-copy/src/kernel/qfontdatabase.cpp  #1.63:1.64
@@ -921,4 +921,5 @@ QFontDatabase::findFont( QFont::Script s
               request.weight, request.italic, request.stretch, request.pixelSize, pitch );
 
+    bool usesFontConfig = FALSE;
 #ifdef QT_XFT2
     if (family_name.isEmpty()
@@ -927,4 +928,5 @@ QFontDatabase::findFont( QFont::Script s
         || family_name == "Monospace") {
         fe = loadFontConfigFont(fp, request, script);
+        usesFontConfig = (fe != 0);
     }
     if (!fe)
@@ -1135,5 +1137,10 @@ QFontDatabase::findFont( QFont::Script s
 
         if ( fp ) {
-            QFontCache::Key key( request, script,
+            QFontDef def = request;
+            if (def.family.isEmpty()) {
+                def.family = fp->request.family;
+                def.family = def.family.left(def.family.find(','));
+            }
+            QFontCache::Key key( def, script,
 #ifdef Q_WS_WIN
                                  (int)fp->paintdevice
@@ -1143,4 +1150,5 @@ QFontDatabase::findFont( QFont::Script s
                 );
             QFontCache::instance->insertEngine( key, fe );
+        if (!usesFontConfig) {
             for ( int i = 0; i < QFont::NScripts; ++i ) {
                 if ( i == script ) continue;
@@ -1153,4 +1161,5 @@ QFontDatabase::findFont( QFont::Script s
             }
         }
+        }
     } else {
         if ( request.family.isEmpty() ) {

--- qt-copy/src/kernel/qfontdatabase_x11.cpp  #1.34:1.35
@@ -974,6 +974,9 @@ static void loadXft()
             = family->foundry( QString::null,  TRUE );
 
-        for ( int i = 0; i < QFont::LastPrivateScript; ++i )
+        for ( int i = 0; i < QFont::LastPrivateScript; ++i ) {
+            if (i == QFont::UnknownScript)
+                continue;
             family->scripts[i] = QtFontFamily::Supported;
+        }
 
         QtFontStyle::Key styleKey;
@@ -1502,4 +1505,9 @@ QFontEngine *loadEngine( QFont::Script s
                 // add Euro character
                 FcCharSetAddChar(cs, 0x20ac);
+                if (script == QFont::MathematicalOperators)
+                    FcCharSetAddChar(cs, 0x2190);
+                if (script == QFont::MiscellaneousSymbols)
+                    FcCharSetAddChar(cs, 0x274d);
+
             FcPatternAddCharSet(pattern, FC_CHARSET, cs);
             FcCharSetDestroy(cs);
@@ -1755,4 +1763,8 @@ static QFontEngine *loadFontConfigFont(c
             // add Euro character
             FcCharSetAddChar(cs, 0x20ac);
+            if (script == QFont::MathematicalOperators)
+                FcCharSetAddChar(cs, 0x2190);
+            if (script == QFont::MiscellaneousSymbols)
+                FcCharSetAddChar(cs, 0x274d);
         FcPatternAddCharSet(pattern, FC_CHARSET, cs);
         FcCharSetDestroy(cs);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic