98 _LIT(KS60TCHKHRSANSRLF, "S60TCHKHRSANSRLF"); |
98 _LIT(KS60TCHKHRSANSRLF, "S60TCHKHRSANSRLF"); |
99 _LIT(KS60TCHKHRSANSSBLF, "S60TCHKHRSANSSBLF"); |
99 _LIT(KS60TCHKHRSANSSBLF, "S60TCHKHRSANSSBLF"); |
100 _LIT(KS60TCHKHRSANSTTLSMBLDLF, "S60TCHKHRSANSTTLSMBLDLF"); |
100 _LIT(KS60TCHKHRSANSTTLSMBLDLF, "S60TCHKHRSANSTTLSMBLDLF"); |
101 //end |
101 //end |
102 |
102 |
103 //browser link fonts start |
|
104 //Western Content Linked fonts |
|
105 _LIT(KS60LATAMTREG, "S60LATAMTREG"); |
|
106 _LIT(KS60LATAMTBLD, "S60LATAMTBLD"); |
|
107 _LIT(KS60LATTHOREG, "S60LATTHOREG"); |
|
108 _LIT(KS60LATTHOBLD, "S60LATTHOBLD"); |
|
109 _LIT(KS60LATCUMREG, "S60LATCUMREG"); |
|
110 _LIT(KS60LATCUMBLD, "S60LATCUMBLD"); |
|
111 //browser link fonts stop |
|
112 |
103 |
113 // Texts for measuring maximum ascents and descents: |
104 // Texts for measuring maximum ascents and descents: |
114 _LIT(KWesternFontMaxExtentText, "\x00C1\x00C7" ); |
105 _LIT(KWesternFontMaxExtentText, "\x00C1\x00C7" ); |
115 |
106 |
116 // Language support map |
107 // Language support map |
494 _LIT(KTimes, "times"); |
477 _LIT(KTimes, "times"); |
495 _LIT(KTimesNewRoman, "times new roman"); |
478 _LIT(KTimesNewRoman, "times new roman"); |
496 _LIT(KSerif, "serif"); |
479 _LIT(KSerif, "serif"); |
497 _LIT(KMonospace, "monospaced"); |
480 _LIT(KMonospace, "monospaced"); |
498 _LIT(KCourier, "courier"); |
481 _LIT(KCourier, "courier"); |
499 _LIT(KCourierNew, "courier new"); |
|
500 _LIT(KBaskerville, "Baskerville"); |
|
501 _LIT(KTrebuchet, "Trebuchet"); |
|
502 |
482 |
503 // Group names |
483 // Group names |
504 _LIT(KS60Group, "S60Group"); |
484 _LIT(KS60Group, "S60Group"); |
505 //new browser fonts start |
485 |
506 _LIT(KArialGroup, "ArialGroup"); |
|
507 _LIT(KTnrGroup, "TnrGroup"); |
|
508 _LIT(KCourGroup, "CourGroup"); |
|
509 //new browser fonts end |
|
510 // Default |
486 // Default |
511 _LIT(KDefaultGroupName, "S60Group"); |
487 _LIT(KDefaultGroupName, "S60Group"); |
512 |
488 |
513 /* |
489 /* |
514 * Language and typefaces combinations to use without regard to size and style |
490 * Language and typefaces combinations to use without regard to size and style |
550 { LIT_AS_DESC_PTR(KSystemOne) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, ETrue }, |
526 { LIT_AS_DESC_PTR(KSystemOne) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, ETrue }, |
551 { LIT_AS_DESC_PTR(KSansSerifHyphen) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, ETrue }, |
527 { LIT_AS_DESC_PTR(KSansSerifHyphen) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, ETrue }, |
552 { LIT_AS_DESC_PTR(KSansSerif) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, ETrue }, |
528 { LIT_AS_DESC_PTR(KSansSerif) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, ETrue }, |
553 { LIT_AS_DESC_PTR(KSerif) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, ETrue }, |
529 { LIT_AS_DESC_PTR(KSerif) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, ETrue }, |
554 { LIT_AS_DESC_PTR(KMonospace) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, ETrue }, |
530 { LIT_AS_DESC_PTR(KMonospace) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, ETrue }, |
555 { LIT_AS_DESC_PTR(KTrebuchet) ,LIT_AS_DESC_PTR(KArialGroup), &languagesAndTypefaceTable, EFalse }, |
531 { LIT_AS_DESC_PTR(KArial) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse }, |
556 { LIT_AS_DESC_PTR(KArial) ,LIT_AS_DESC_PTR(KArialGroup), &languagesAndTypefaceTable, EFalse }, |
|
557 { LIT_AS_DESC_PTR(KVerdana),LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse }, |
532 { LIT_AS_DESC_PTR(KVerdana),LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse }, |
558 { LIT_AS_DESC_PTR(KHelvetica),LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse }, |
533 { LIT_AS_DESC_PTR(KHelvetica),LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse }, |
559 { LIT_AS_DESC_PTR(KBaskerville),LIT_AS_DESC_PTR(KTnrGroup), &languagesAndTypefaceTable, EFalse }, |
534 { LIT_AS_DESC_PTR(KGeorgia),LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse }, |
560 { LIT_AS_DESC_PTR(KGeorgia),LIT_AS_DESC_PTR(KTnrGroup), &languagesAndTypefaceTable, EFalse }, |
535 { LIT_AS_DESC_PTR(KTimes),LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse }, |
561 { LIT_AS_DESC_PTR(KTimes),LIT_AS_DESC_PTR(KTnrGroup), &languagesAndTypefaceTable, EFalse }, |
536 { LIT_AS_DESC_PTR(KTimesNewRoman) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse }, |
562 { LIT_AS_DESC_PTR(KTimesNewRoman) ,LIT_AS_DESC_PTR(KTnrGroup), &languagesAndTypefaceTable, EFalse }, |
537 { LIT_AS_DESC_PTR(KCourier) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse }, |
563 { LIT_AS_DESC_PTR(KCourier) ,LIT_AS_DESC_PTR(KCourGroup), &languagesAndTypefaceTable, EFalse }, |
|
564 { LIT_AS_DESC_PTR(KCourierNew) ,LIT_AS_DESC_PTR(KCourGroup), &languagesAndTypefaceTable, EFalse }, |
|
565 { LIT_AS_DESC_PTR(KNullDesC) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse } |
538 { LIT_AS_DESC_PTR(KNullDesC) ,LIT_AS_DESC_PTR(KS60Group), &languagesAndTypefaceTable, EFalse } |
566 }; |
539 }; |
567 |
540 |
568 // Product font table. |
541 // Product font table. |
569 |
542 |
680 |
653 |
681 { EAknFontCategorySecondary, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }, |
654 { EAknFontCategorySecondary, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }, |
682 { EAknFontCategoryPrimarySmall, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }, |
655 { EAknFontCategoryPrimarySmall, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }, |
683 { EAknFontCategoryPrimary, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }, |
656 { EAknFontCategoryPrimary, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSSBLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }, |
684 { EAknFontCategoryTitle, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }, |
657 { EAknFontCategoryTitle, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }, |
685 { EAknFontCategoryAny, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL }, |
658 { EAknFontCategoryAny, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF), LIT_AS_DESC_PTR(KS60Group), &apacVectorFontBaselineArray, NULL, NULL } |
686 |
|
687 //new browser fonts start |
|
688 //western tnr |
|
689 { EAknFontCategoryAny, 0, EAny, EStrokeWeightBold, EAny, EAny, ENotBold, EAntialiase, EElafLangsBrowserFonts, LIT_AS_DESC_PTR(KS60LATTHOBLD), LIT_AS_DESC_PTR(KTnrGroup), NULL, &latinHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, |
|
690 { EAknFontCategoryAny, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EElafLangsBrowserFonts, LIT_AS_DESC_PTR(KS60LATTHOREG), LIT_AS_DESC_PTR(KTnrGroup), NULL, &latinHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, |
|
691 //western arial |
|
692 { EAknFontCategoryAny, 0, EAny, EStrokeWeightBold, EAny, EAny, ENotBold, EAntialiase, EElafLangsBrowserFonts, LIT_AS_DESC_PTR(KS60LATAMTBLD), LIT_AS_DESC_PTR(KArialGroup), NULL, &latinHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, |
|
693 { EAknFontCategoryAny, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EElafLangsBrowserFonts, LIT_AS_DESC_PTR(KS60LATAMTREG), LIT_AS_DESC_PTR(KArialGroup), NULL, &latinHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, |
|
694 //western courier |
|
695 { EAknFontCategoryAny, 0, EAny, EStrokeWeightBold, EAny, EAny, ENotBold, EAntialiase, EElafLangsBrowserFonts, LIT_AS_DESC_PTR(KS60LATCUMBLD), LIT_AS_DESC_PTR(KCourGroup), NULL, &latinHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText)}, |
|
696 { EAknFontCategoryAny, 0, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EElafLangsBrowserFonts, LIT_AS_DESC_PTR(KS60LATCUMREG), LIT_AS_DESC_PTR(KCourGroup), NULL, &latinHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, |
|
697 |
|
698 //new browser fonts end |
|
699 //end |
659 //end |
700 }; |
660 }; |
701 // ============================ GLOBAL FUNCTIONS ======================================== |
661 // ============================ GLOBAL FUNCTIONS ======================================== |
702 |
662 |
703 /** |
663 /** |
1236 if ( aMetrics.Posture() == EPostureItalic ) |
1195 if ( aMetrics.Posture() == EPostureItalic ) |
1237 aFontSpec.iFontStyle.SetPosture(EPostureItalic); |
1196 aFontSpec.iFontStyle.SetPosture(EPostureItalic); |
1238 |
1197 |
1239 // Ensure proportionality flag is set. Assumes all S60 fonts are proportional |
1198 // Ensure proportionality flag is set. Assumes all S60 fonts are proportional |
1240 aFontSpec.iTypeface.SetIsProportional(ETrue); |
1199 aFontSpec.iTypeface.SetIsProportional(ETrue); |
1241 |
|
1242 TInt reqLangs = FontProviderRequiredLangs(); |
|
1243 if((reqLangs == EChineseLangsPRC) || (reqLangs ==EChineseLangsTaiwanHK)|| |
|
1244 (reqLangs ==EChineseLangsPRCLF) ||(reqLangs ==EChineseLangsTaiwanHKLF)) |
|
1245 { |
|
1246 if((aFontSpec.iHeight > 21) && ( EAntiAliasedGlyphBitmap != aFontSpec.iFontStyle.BitmapType())) |
|
1247 aFontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap); |
|
1248 //stroke font files used, not to use bold |
|
1249 aFontSpec.iFontStyle.SetStrokeWeight(EStrokeWeightNormal ); |
|
1250 } |
|
1251 else if(reqLangs == EKoreanLangs) |
|
1252 { |
|
1253 if((aFontSpec.iHeight > 17) && ( EAntiAliasedGlyphBitmap != aFontSpec.iFontStyle.BitmapType())) |
|
1254 aFontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap); |
|
1255 } |
|
1256 else if((aFontSpec.iHeight > 16) && ( EAntiAliasedGlyphBitmap != aFontSpec.iFontStyle.BitmapType())) |
|
1257 aFontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap); |
|
1258 } |
1200 } |
1259 |
1201 |
1260 LOCAL_C TBool HasRequiredLanguages( |
1202 LOCAL_C TBool HasRequiredLanguages( |
1261 TUint aRequiredLanguages, |
1203 TUint aRequiredLanguages, |
1262 CGraphicsDevice* /*aDevice*/, |
1204 CGraphicsDevice* /*aDevice*/, |
1403 aFoundIndex = FindGroupAliasInTable( |
1345 aFoundIndex = FindGroupAliasInTable( |
1404 groupTypeface, aMetrics, aRequiredLanguages, aSizeInPixels, aNeedsExactMatch, aFellBack); |
1346 groupTypeface, aMetrics, aRequiredLanguages, aSizeInPixels, aNeedsExactMatch, aFellBack); |
1405 } |
1347 } |
1406 |
1348 |
1407 TBool specIsSetUp(EFalse); |
1349 TBool specIsSetUp(EFalse); |
1408 |
1350 |
1409 //new browser fonts start |
1351 if ( aFoundIndex == KErrNotFound) |
1410 //checking whether the typeface is installed |
|
1411 TInt numberOfRows = sizeof( productFontTable )/ sizeof( SAknProductFontTableLine ); |
|
1412 SAknProductFontTableLine line = productFontTable[aFoundIndex]; |
|
1413 TTypeface pftTypeface; |
|
1414 TBool available(ETrue); |
|
1415 if(aFoundIndex>=0 && aFoundIndex<numberOfRows) |
|
1416 { |
|
1417 pftTypeface.iName = line.iTypefaceName->Left((KMaxTypefaceNameLength)); |
|
1418 TRAP_IGNORE( available = TypefaceAvailableL( *aDevice, pftTypeface,EGulAllFonts ) ); |
|
1419 } |
|
1420 //end |
|
1421 if ( (aFoundIndex == KErrNotFound) || ((TInt)EFalse == available)) |
|
1422 { |
1352 { |
1423 // Note that because the alias table has language matching, the direct typeface name should be |
1353 // Note that because the alias table has language matching, the direct typeface name should be |
1424 // appropriate at least for language. |
1354 // appropriate at least for language. |
1425 if ( haveDirectTypeface ) |
1355 if ( haveDirectTypeface ) |
1426 { |
1356 { |