src/hbcore/utils/hbtypefaceinfodatabase_p.cpp
changeset 7 923ff622b8b9
parent 5 627c4a0fd0e7
child 21 4633027730f5
child 34 ed14f46c0e55
--- a/src/hbcore/utils/hbtypefaceinfodatabase_p.cpp	Wed Jun 23 18:33:25 2010 +0300
+++ b/src/hbcore/utils/hbtypefaceinfodatabase_p.cpp	Tue Jul 06 14:36:53 2010 +0300
@@ -50,6 +50,7 @@
 #define TITLE_STRING "title"
 #define DIGITAL_STRING "digital"
 #define UNDEFINED_STRING "undefined"
+#define ALIAS_STRING "alias"
 
 #define TYPEFACE_METRICS_FILE_STEM "typeface_metrics_"
 static const int LARGEST_SIZE = 100;
@@ -91,6 +92,15 @@
     return encoded;
 }
 
+static bool isAliasRole(const QString &roleName)
+{
+	bool alias(false); // return value
+    QString name = roleName.toLower();
+    if (name == ALIAS_STRING) {
+        alias = true;
+    }
+	return alias;
+}
 /*!
 Returns path to a writable location that should be used as a base storage folder for
 dynamic metric creation.
@@ -165,19 +175,25 @@
     }
     else {
         QString role;
-        QString family;
+        QString family, aliasFamily;
         bool isBold;
-        while (parser->readMapping( role, family, isBold)) {
+        while (parser->readMapping( role, family, aliasFamily, isBold)) {
             HbTypefaceInfoItem item( mType );
             HbFontSpec::Role roleEnum;
             if (encodeRole(role, roleEnum)){
                 item.mRoleEnum = roleEnum;
                 item.mFamily = family;
                 item.mIsBold = isBold;
+				item.mIsAlias = false;
                 mTypefaceInfoVector->append( item );
             }
-            else {
-                // role might be an alias.  Not required functionality. Ignore
+            else if (isAliasRole(role)) {
+				item.mRoleEnum = HbFontSpec::Undefined;
+				item.mFamily = aliasFamily;
+				item.mAliasedFamily = family;
+				item.mIsBold = isBold;
+				item.mIsAlias = true;
+				mTypefaceInfoVector->append( item );
             }
         }
 
@@ -189,7 +205,7 @@
             if( item->mRoleEnum == HbFontSpec::Secondary ) {
                 secondaryFontspec = item;
             }
-            if( item->mRoleEnum == HbFontSpec::Undefined ) {
+            if (item->mRoleEnum == HbFontSpec::Undefined && item->mIsAlias == false) {
                 undefinedFontspec = item;
             }
         }
@@ -226,7 +242,8 @@
 
 
 
-bool HbTypefaceInfoDatabase::readTypefaceMetricsFile( HbTypefaceXmlParser *parser, HbTypefaceInfoItem *typeFaceInfoItem )
+bool HbTypefaceInfoDatabase::readTypefaceMetricsFile( HbTypefaceXmlParser *parser, 
+													 HbTypefaceInfoItem *typeFaceInfoItem )
 {
     int numPoints(0);
 
@@ -254,7 +271,8 @@
 	delete file;
 
 #ifdef HBTYPEFACEINFO_DEBUG_ENABLE
-    qDebug("HbDownsizeInfo::readTypefaceMetricsFile: typeface metric filename: %s", typefaceMetricsFileName.toAscii().constData());
+    qDebug("HbDownsizeInfo::readTypefaceMetricsFile: typeface metric filename: %s", 
+		typefaceMetricsFileName.toAscii().constData());
 #endif
     parser->setFilePath(typefaceMetricsFileName);