OSDN Git Service

Add support for Bengali and Tamil gpos/gsub tables
authorRussell Brenner <russellbrenner@google.com>
Tue, 8 Nov 2011 00:10:32 +0000 (16:10 -0800)
committerRussell Brenner <russellbrenner@google.com>
Wed, 9 Nov 2011 17:48:57 +0000 (09:48 -0800)
HB_Script_Bengali and HB_Script_Tamil are now recognized in
FontAndroid.cpp and map to Lohit-Bengali.ttf and Lohit-Tamil.ttf,
allowing Harfbuzz to properly load the gpos/gsub tables for those
languages.

Bug: 5578901
Change-Id: I20ed542dd5a616535222dcb5c808f3716a062e80

Source/WebCore/platform/graphics/android/FontAndroid.cpp

index 3528d47..795111d 100644 (file)
@@ -445,11 +445,13 @@ public:
 
 private:
     enum CustomScript {
-        Hindi,
-        Thai,
-        Naskh,
+        Bengali,
+        Devanagari,
         Hebrew,
         HebrewBold,
+        Naskh,
+        Tamil,
+        Thai,
         NUM_SCRIPTS
     };
 
@@ -502,11 +504,13 @@ private:
 
 // Indexed using enum CustomScript
 const char* TextRunWalker::paths[] = {
+    "/system/fonts/Lohit-Bengali.ttf",
     "/system/fonts/Lohit-Devanagari.ttf",
-    "/system/fonts/DroidSansThai.ttf",
-    "/system/fonts/DroidNaskh-Regular.ttf",
     "/system/fonts/DroidSansHebrew-Regular.ttf",
-    "/system/fonts/DroidSansHebrew-Bold.ttf"
+    "/system/fonts/DroidSansHebrew-Bold.ttf",
+    "/system/fonts/DroidNaskh-Regular.ttf",
+    "/system/fonts/Lohit-Tamil.ttf",
+    "/system/fonts/DroidSansThai.ttf"
 };
 
 // Indexed using enum CustomScript
@@ -689,14 +693,11 @@ void TextRunWalker::setupFontForScriptRun()
     const FontPlatformData* complexPlatformData = &platformData;
 
     switch (m_item.item.script) {
+      case HB_Script_Bengali:
+          complexPlatformData = setupComplexFont(Bengali, platformData);
+          break;
         case HB_Script_Devanagari:
-            complexPlatformData = setupComplexFont(Hindi, platformData);
-            break;
-        case HB_Script_Thai:
-            complexPlatformData = setupComplexFont(Thai, platformData);
-            break;
-        case HB_Script_Arabic:
-            complexPlatformData = setupComplexFont(Naskh, platformData);
+            complexPlatformData = setupComplexFont(Devanagari, platformData);
             break;
         case HB_Script_Hebrew:
             switch (platformData.typeface()->style()) {
@@ -711,6 +712,15 @@ void TextRunWalker::setupFontForScriptRun()
                     break;
             }
             break;
+        case HB_Script_Arabic:
+            complexPlatformData = setupComplexFont(Naskh, platformData);
+            break;
+        case HB_Script_Tamil:
+            complexPlatformData = setupComplexFont(Tamil, platformData);
+            break;
+        case HB_Script_Thai:
+            complexPlatformData = setupComplexFont(Thai, platformData);
+            break;
         default:
             // HB_Script_Common; includes Ethiopic
             complexPlatformData = &platformData;