fontsupport/fontprovider/Src/FontProvider.cpp
changeset 42 2398a337fa76
parent 2 abcbdabaa4c5
child 53 8f0f421d3d0f
--- a/fontsupport/fontprovider/Src/FontProvider.cpp	Tue Feb 02 00:52:22 2010 +0200
+++ b/fontsupport/fontprovider/Src/FontProvider.cpp	Fri Mar 19 09:48:44 2010 +0200
@@ -73,8 +73,8 @@
 
 _LIT(KS60TCAndHK,"Sans MT  UniT_HKSCS_S60");
 _LIT(KS60SC,"Sans MT 936_S60");
-_LIT(KS60TCAndHKHiRes,"Sans MT TC Big5HK_S60C");
-_LIT(KS60SCHiRes,"Sans MT SC 936_S60C");
+_LIT(KS60TCAndHKHiRes,"MHeiC-Medium-Big5HKSCS-S60");
+_LIT(KS60SCHiRes,"MHeiGB18030C-Medium-S60");
 _LIT(KJapaneseHensei,"Heisei Kaku Gothic S60");
 _LIT(KS60Digital, "Series 60 ZDigi");
 _LIT(KS60Sans, "Series 60 Sans");
@@ -100,6 +100,15 @@
 _LIT(KS60TCHKHRSANSTTLSMBLDLF, "S60TCHKHRSANSTTLSMBLDLF");
 //end
 
+//all font files
+_LIT(KS60JAPSANSRLF, "S60JAPSANSRLF");
+_LIT(KS60JAPSANSSBLF, "S60JAPSANSSBLF");
+_LIT(KS60JAPSANSTTLSMBLDLF, "S60JAPSANSTTLSMBLDLF");
+
+_LIT(KS60KORSANSRLF, "S60KORSANSRLF");
+_LIT(KS60KORSANSSBLF, "S60KORSANSSBLF");
+_LIT(KS60KORSANSTTLSMBLDLF, "S60KORSANSTTLSMBLDLF");
+//end
 
 // Texts for measuring maximum ascents and descents:
 _LIT(KWesternFontMaxExtentText, "\x00C1\x00C7" );
@@ -124,7 +133,8 @@
 #define ELanguageSupportKorean                      0x00100000
 #define ELanguageSupportHangul                      0x00200000
 //chinese adaptation
-#define ELanguageSupportChineseFontLinking          0x00400000
+#define ELanguageSupportFontLinking          0x00400000
+//end
 //end
 #define ELanguageSupportDevanagari                  0x01000000
 #define ELanguageSupportS60PrivateUseArea1          0x10000000
@@ -175,10 +185,16 @@
 
 #define EJapaneseLangs    (  EApacCommonLangs \
                                      | ELanguageSupportJapanese )
-
+#define EJapaneseLFLangs    (  EApacCommonLangs \
+                                     | ELanguageSupportJapanese \
+                                     | ELanguageSupportFontLinking )
 #define EKoreanLangs    (  EApacCommonLangs \
                                      | ELanguageSupportKorean )
 
+#define EKoreanLFLangs    (  EApacCommonLangs \
+                                     | ELanguageSupportKorean \
+                                     | ELanguageSupportFontLinking )
+
 #define EChineseLangs     ( EApacCommonLangs \
                                     | ELanguageSupportCJKUnifiedIdeographsLevel0 \
                                     | ELanguageSupportCJKUnifiedIdeographsLevel1 )
@@ -200,21 +216,21 @@
 //chinese adaptation
 #define EChineseLangsPRCLF     ( EChineseLangs \
                                     | ELanguageSupportChinesePRC \
-                                    | ELanguageSupportChineseFontLinking )
+                                    | ELanguageSupportFontLinking )
 
 #define EChineseLangsTaiwanHKLF     ( EChineseLangs \
                                     | ELanguageSupportChineseTaiwanHK \
-                                    | ELanguageSupportChineseFontLinking )
+                                    | ELanguageSupportFontLinking )
 
 #define EChineseLangsPRCHiResLF     ( EChineseLangs \
                                     | ELanguageSupportChinesePRC \
                                     | ELanguageSupportChineseHiRes \
-                                    | ELanguageSupportChineseFontLinking )
+                                    | ELanguageSupportFontLinking )
 
 #define EChineseLangsTaiwanHKHiResLF     ( EChineseLangs \
                                         | ELanguageSupportChineseTaiwanHK \
                                         | ELanguageSupportChineseHiRes \
-                                        | ELanguageSupportChineseFontLinking )
+                                        | ELanguageSupportFontLinking )
 //end                                    
 
 
@@ -447,6 +463,62 @@
     }
 CDL_ARRAY_END(SHeightRequest, chnlinkedFontHeightRequestArray);
 
+CDL_ARRAY_START( SHeightRequest, japaneseLFHeightRequestArray)
+    {
+        {  2,  2 }, 
+        { 10,  8 }, 
+        { 11,  9 }, 
+        { 13, 10 }, 
+        { 14, 12 }, 
+        { 15, 12 }, 
+        { 16, 14 }, 
+        { 17, 14 }, 
+        { 18, 14 }, 
+        { 19, 16 }, 
+        { 20, 16 }, 
+        { 21, 18 }, 
+        { 24, 21 }, 
+        { 25, 22 }, 
+        { 26, 24 }, 
+        { 27, 25 }, 
+        { 28, 26 }, 
+        { 29, 26 }, 
+        { 30, 27 }, 
+        { 79, 72 }, 
+        { 218, 200 }, 
+    }
+CDL_ARRAY_END(SHeightRequest, japaneseLFHeightRequestArray);
+
+CDL_ARRAY_START( SHeightRequest, koreanLFHeightRequestArray)
+    {
+        {  2,  2 }, 
+        { 8, 6 },
+        { 9, 6 },
+        { 10,  8 }, 
+        { 11,  8 }, 
+        { 13, 11 }, 
+        { 14, 12 }, 
+        { 15, 12 },
+        { 16, 14 },
+        { 17, 14 },
+        { 18, 16 },
+        { 19, 16 },
+        { 20, 18 },
+        { 21, 18 },
+        { 22, 20 },
+        { 23, 20 },
+        { 24, 22 },
+        { 25, 22 },
+        { 26, 24 },
+        { 27, 24 },
+        { 28, 26 }, 
+        { 29, 26 }, 
+        { 30, 27 }, 
+        { 79, 72 }, 
+        { 218, 200 }, 
+    }
+CDL_ARRAY_END(SHeightRequest, koreanLFHeightRequestArray);
+
 // Typeface Aliasing
 
 // Minimum length for alias substring matching
@@ -506,6 +578,8 @@
         { EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSRLF) },
         { EChineseLangsPRCHiResLF, LIT_AS_DESC_PTR(KS60SCHRSANSRLF) },
         { EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF) },
+        { EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSRLF) },
+        { EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSRLF) },
         //end
         { EAnyLangs, LIT_AS_DESC_PTR(KS60Sans) } // Ultimate fallback
     }
@@ -623,8 +697,10 @@
     { EAknFontCategoryAny,          8, 17,  	EAny, EAny, EAny, ENotBold, ENotAntialiase, EKoreanLangs, LIT_AS_DESC_PTR(KS60Korean), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanFontHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
     { EAknFontCategoryAny,          EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, 	EKoreanLangs, LIT_AS_DESC_PTR(KS60Korean), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanFontHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
 //chinese adaptation
-    { EAknFontCategorySecondary,    12,   21,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
-    { EAknFontCategorySecondary,    EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    12,   21,   EStrokeWeightNormal, 0,    EAny, ENotBold, ENotAntialiase, EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    EAny, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    12,   21,   EStrokeWeightBold,   0,    EAny, ENotBold, ENotAntialiase, EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    EAny, EAny, EStrokeWeightBold,   EAny, EAny, ENotBold, EAntialiase,    EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
     { EAknFontCategoryPrimarySmall, 12,   21,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
     { EAknFontCategoryPrimarySmall, EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
     { EAknFontCategoryPrimary,      12,   21,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
@@ -634,8 +710,10 @@
     { EAknFontCategoryAny,          12,   21,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
     { EAknFontCategoryAny,          EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCLF, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
 
-    { EAknFontCategorySecondary,    12,   21,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
-    { EAknFontCategorySecondary,    EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    12,   21,   EStrokeWeightNormal, 0,    EAny, ENotBold, ENotAntialiase, EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    EAny, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    12,   21,   EStrokeWeightBold,   0,    EAny, ENotBold, ENotAntialiase, EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    EAny, EAny, EStrokeWeightBold,   EAny, EAny, ENotBold, EAntialiase,    EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
     { EAknFontCategoryPrimarySmall, 12,   21,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
     { EAknFontCategoryPrimarySmall, EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
     { EAknFontCategoryPrimary,      12,   21,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
@@ -645,17 +723,47 @@
     { EAknFontCategoryAny,          12,   21,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
     { EAknFontCategoryAny,          EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKLF, LIT_AS_DESC_PTR(KS60TCHKSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, &chnlinkedFontHeightRequestArray, NULL },
 
-    { EAknFontCategorySecondary,    0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCHiResLF, LIT_AS_DESC_PTR(KS60SCHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
+    { EAknFontCategorySecondary,    0, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCHiResLF, LIT_AS_DESC_PTR(KS60SCHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },    
+    { EAknFontCategorySecondary,    0, EAny, EStrokeWeightBold, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCHiResLF, LIT_AS_DESC_PTR(KS60SCHRSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
     { EAknFontCategoryPrimarySmall, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCHiResLF, LIT_AS_DESC_PTR(KS60SCHRSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
     { EAknFontCategoryPrimary,      0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCHiResLF, LIT_AS_DESC_PTR(KS60SCHRSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
     { EAknFontCategoryTitle,        0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCHiResLF, LIT_AS_DESC_PTR(KS60SCHRSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
     { EAknFontCategoryAny,          0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsPRCHiResLF, LIT_AS_DESC_PTR(KS60SCHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
 
-    { EAknFontCategorySecondary,    0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
+    { EAknFontCategorySecondary,    0, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }, 
+    { EAknFontCategorySecondary,    0, EAny, EStrokeWeightBold, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
     { EAknFontCategoryPrimarySmall, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
     { EAknFontCategoryPrimary,      0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
     { EAknFontCategoryTitle,        0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
-    { EAknFontCategoryAny,          0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }
+    { EAknFontCategoryAny,          0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL },
+//end
+//jap link
+    { EAknFontCategorySecondary,    12,   15,   EBold, 0,    EAny, ENotBold, ENotAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    12,   15,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSRLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    EAny, EAny, EBold, EAny, EAny, ENotBold, EAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategorySecondary,    EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSRLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategoryPrimarySmall, 12,   15,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategoryPrimarySmall, EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategoryPrimary,      12,   15,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategoryPrimary,      EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategoryTitle,        12,   15,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategoryTitle,        EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategoryAny,          12,   15,   EAny, 0,    EAny, ENotBold, ENotAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSRLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+    { EAknFontCategoryAny,          EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSRLF), LIT_AS_DESC_PTR(KS60Group), &heiseiBaselineArray, &japaneseLFHeightRequestArray, NULL },
+
+//kor link    
+    { EAknFontCategorySecondary,   8, 17,       EBold, EAny, EAny, ENotBold, ENotAntialiase, EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategorySecondary,   8, 17,       EAny, EAny, EAny, ENotBold, ENotAntialiase, EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSRLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategorySecondary,    EAny, EAny, EBold, EAny, EAny, ENotBold, EAntialiase,    EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategorySecondary,    EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase,    EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSRLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimarySmall, 8, 17,      EAny, EAny, EAny, ENotBold, ENotAntialiase, EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimarySmall, EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase,    EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimary,      8, 17,      EAny, EAny, EAny, ENotBold, ENotAntialiase, EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimary,      EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase,    EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryTitle,        8, 17,      EAny, EAny, EAny, ENotBold, ENotAntialiase, EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryTitle,        EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase,    EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryAny,          8, 17,      EAny, EAny, EAny, ENotBold, ENotAntialiase, EKoreanLFLangs, LIT_AS_DESC_PTR(KS60Korean), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryAny,          EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase,    EKoreanLFLangs, LIT_AS_DESC_PTR(KS60Korean), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
 //end
     };
 // ============================ GLOBAL FUNCTIONS ========================================
@@ -720,26 +828,32 @@
     TBool fHiResFonts = FeatureManager::FeatureSupported(KFeatureIdChineseFontsHires);
     TBool fKorean = FeatureManager::FeatureSupported(KFeatureIdKorean);
    //chinese adaptation
-    TBool fChLinkFlag = FeatureManager::FeatureSupported(KFeatureIdFfLinkedFontsChinese);
-    TBool fChLinkedFonts = EFalse;
+    TBool fLinkedFontsFeature = FeatureManager::FeatureSupported(KFeatureIdFfLinkedFontsChinese);
+    TBool fLinkedFonts = EFalse;
     //handling error here
     //fontlinking unsuccessful, handle with normal font files as earlier
-    if(fChLinkFlag)
+    if(fLinkedFontsFeature)
         {
       if(!LinkTypefacesInstalled(EAknSystemLinkedFonts))
-        fChLinkedFonts = EFalse;
+        fLinkedFonts = EFalse;
     else
-        fChLinkedFonts = ETrue;
+        fLinkedFonts = ETrue;
         }
     //end
 
     if(fKorean)
         {
-        requiredLangs |= EKoreanLangs;
+        if (fLinkedFonts)
+            requiredLangs |= EKoreanLFLangs;
+        else
+            requiredLangs |= EKoreanLangs;
         }
     else if (fJapanese)
         {
-        requiredLangs |= EJapaneseLangs;
+        if (fLinkedFonts)
+            requiredLangs |= EJapaneseLFLangs;
+        else
+            requiredLangs |= EJapaneseLangs;
         }
     else if (fTCHKFonts)
         {
@@ -747,11 +861,11 @@
         if ((fSCFonts) && (uilang == KLangPrcEnglish || uilang == ELangPrcChinese))
             {
             //chinese adaptation
-            if (fChLinkedFonts && fHiResFonts)
+            if (fLinkedFonts && fHiResFonts)
                 {
                 requiredLangs |= EChineseLangsPRCHiResLF;
                 }
-            else if(fChLinkedFonts)
+            else if(fLinkedFonts)
                 {
                 requiredLangs |= EChineseLangsPRCLF;
                 }            
@@ -768,11 +882,11 @@
         else
             {
             //chinese adaptation
-            if (fChLinkedFonts && fHiResFonts)
+            if (fLinkedFonts && fHiResFonts)
                 {
                 requiredLangs |= EChineseLangsTaiwanHKHiResLF;
                 }  
-            else if(fChLinkedFonts)
+            else if(fLinkedFonts)
                 {
                 requiredLangs |= EChineseLangsTaiwanHKLF;
                 }
@@ -790,11 +904,11 @@
     else if (fSCFonts)
         {
         //chinese adaptation
-        if (fChLinkedFonts && fHiResFonts)
+        if (fLinkedFonts && fHiResFonts)
             {
             requiredLangs |= EChineseLangsPRCHiResLF;
             }
-        else if(fChLinkedFonts)
+        else if(fLinkedFonts)
             {
             requiredLangs |= EChineseLangsPRCLF;
             }
@@ -1805,9 +1919,8 @@
 EXPORT_C void AknFontProvider::InitializeSystemL ( const CEikonEnv& aEnv )
     {
     //chinese adaptation
-    TBool fChLinkedFonts = FeatureManager::FeatureSupported(KFeatureIdFfLinkedFontsChinese);
-    TBool fChinese = FeatureManager::FeatureSupported(KFeatureIdChinese);
-    if(fChinese && fChLinkedFonts)
+    TBool fLinkedFonts = FeatureManager::FeatureSupported(KFeatureIdFfLinkedFontsChinese);
+    if(fLinkedFonts)
       {
       //attempt to create linked font only once
       if(!LinkTypefacesInstalled())
@@ -2119,6 +2232,10 @@
     _LIT(KSCHRStop, "[SCHR_LINK_STOP]");
     _LIT(KTCHKHRStart, "[TCHKHR_LINK_START]");
     _LIT(KTCHKHRStop, "[TCHKHR_LINK_STOP]");
+    _LIT(KJAPStart, "[JAP_LINK_START]");
+    _LIT(KJAPStop, "[JAP_LINK_STOP]");
+    _LIT(KKORStart, "[KOR_LINK_START]");
+    _LIT(KKORStop, "[KOR_LINK_STOP]");
 
     TInt ret = KErrNone;
     RPointerArray<SLinkedFontDetails> fontfiles;
@@ -2133,7 +2250,7 @@
     TBuf<50> startTok;
     TBuf<50> stopTok;
 
-    TBool fChLinkedFonts = FeatureManager::FeatureSupported(
+    TBool fLinkedFonts = FeatureManager::FeatureSupported(
             KFeatureIdFfLinkedFontsChinese);
     TBool fTCHKFonts = FeatureManager::FeatureSupported(
             KFeatureIdChineseTaiwanHkFonts);
@@ -2142,8 +2259,12 @@
     TBool fHiResFonts = FeatureManager::FeatureSupported(
             KFeatureIdChineseFontsHires);
 
+    TBool fJapanese = FeatureManager::FeatureSupported(KFeatureIdJapanese);
+    TBool fKorean = FeatureManager::FeatureSupported(KFeatureIdKorean);
+    TBool fChinese = FeatureManager::FeatureSupported(
+            KFeatureIdChinese);
     
-    if (fChLinkedFonts)
+    if (fLinkedFonts)
         {
 
         if (fSCFonts && fHiResFonts)
@@ -2174,8 +2295,23 @@
             tfile.Seek(ESeekStart);
             ret = DoPopulateAndCreateLinkFontsL(tfile, startTok, stopTok);
             }
+		if(fJapanese)
+            {
+            startTok.Copy(KJAPStart);
+            stopTok.Copy(KJAPStop);
+            tfile.Seek(ESeekStart);
+            ret = DoPopulateAndCreateLinkFontsL(tfile, startTok, stopTok);   
+            }    
+        if(fKorean)
+            {
+            startTok.Copy(KKORStart);
+            stopTok.Copy(KKORStop);
+            tfile.Seek(ESeekStart);
+            ret = DoPopulateAndCreateLinkFontsL(tfile, startTok, stopTok);
+            }			
         
         }
+        
 
     
     rFile.Close();
@@ -2210,16 +2346,24 @@
             KFeatureIdChinesePrcFonts);
     TBool fHiResFonts = FeatureManager::FeatureSupported(
             KFeatureIdChineseFontsHires);
+   TBool fChinese = FeatureManager::FeatureSupported(
+            KFeatureIdChinese);
+    TBool fJapanese = FeatureManager::FeatureSupported(KFeatureIdJapanese);
+    TBool fKorean = FeatureManager::FeatureSupported(KFeatureIdKorean);
 
     
     TBool ret = EFalse;
     TInt files = 0, ref = 0;
     if( (EAknAllLinkedFonts == aFonttype) || (EAknSystemLinkedFonts == aFonttype))
         {
-        if(fSCFonts)
+        if( (fChinese && fSCFonts ))
+           ref +=KAknFontStylesSupported;
+        if(fChinese && fTCHKFonts)
            ref +=KAknFontStylesSupported;
-        if(fTCHKFonts)
-           ref +=KAknFontStylesSupported;
+        if(fJapanese)
+            ref +=KAknFontStylesSupported;
+        if(fKorean)
+            ref +=KAknFontStylesSupported;
         }
     for (TInt i = 0; i < noOfTypefaces; i++)
         {
@@ -2267,9 +2411,29 @@
                 files++;
                 }
             }
+            if (fJapanese)
+                {
+                if (typefaceInfo.iTypeface.iName.Compare(KS60JAPSANSRLF)==0|| 
+                    typefaceInfo.iTypeface.iName.Compare(KS60JAPSANSSBLF)==0||
+                    typefaceInfo.iTypeface.iName.Compare(KS60JAPSANSTTLSMBLDLF)==0)
+                    {
+                    files++;
+                    }
+
+                }
+            if (fKorean)
+                {
+                if (typefaceInfo.iTypeface.iName.Compare(KS60KORSANSRLF)==0|| 
+                    typefaceInfo.iTypeface.iName.Compare(KS60KORSANSSBLF)==0|| 
+                    typefaceInfo.iTypeface.iName.Compare(KS60KORSANSTTLSMBLDLF) == 0)
+                    {
+                    files++;
+                    }
+
+                }
+            }
         }
-      }
-    if (ref == files)
+    if (files && (ref == files) )
         ret = ETrue;
     return ret;
     }