diff -r a1b3ef187795 -r 3bd7be4c9278 fontsupport/fontprovider/Src/FontProvider.cpp --- a/fontsupport/fontprovider/Src/FontProvider.cpp Wed Jun 23 19:20:17 2010 +0300 +++ b/fontsupport/fontprovider/Src/FontProvider.cpp Tue Jul 06 15:23:53 2010 +0300 @@ -234,6 +234,12 @@ //end +#define EElafLFLoReLangs ( EElafLangs \ + | EChineseLangsPRCLF) + + +#define EElafLFHiReLangs ( EElafLangs \ + | EChineseLangsPRCHiResLF) // Wildcard value for langs (font is to be used for all languages) #define EAnyLangs 0xffffffff const TInt KAknFontStylesSupported(3); @@ -334,6 +340,28 @@ } CDL_ARRAY_END(SHeightRequest, latinHeightRequestArray); +CDL_ARRAY_START( SHeightRequest, latinLFHeightRequestArray) + { + { 2, 2 }, + { 10, 8 }, + { 11, 9 }, + { 13, 11 }, + { 14, 12 }, + { 14, 13 }, + { 16, 14 }, + { 18, 15 }, + { 19, 16 }, + { 24, 21 }, + { 25, 22 }, + { 26, 24 }, + { 27, 25 }, + { 28, 26 }, + { 29, 26 }, + { 30, 27 }, + { 79, 72 }, + { 218, 200 }, + } +CDL_ARRAY_END(SHeightRequest, latinLFHeightRequestArray); CDL_ARRAY_START( SHeightRequest, agfaDigitalHeightRequestArray) { @@ -580,7 +608,9 @@ { EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF) }, { EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSRLF) }, { EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSRLF) }, - //end + { EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCHRSANSRLF) }, + { EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF) }, + //end { EAnyLangs, LIT_AS_DESC_PTR(KS60Sans) } // Ultimate fallback } CDL_ARRAY_END(SAknLanguagesAndTypefaceTableLine, languagesAndTypefaceTable); @@ -764,6 +794,38 @@ { 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) }, +//western SC link + //stroke font + { EAknFontCategorySecondary, 10, 15, EStrokeWeightNormal, 0, EAny, ENotBold, ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategorySecondary, EAny, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategorySecondary, 10, 15, EStrokeWeightBold, 0, EAny, ENotBold, ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategorySecondary, EAny, EAny, EStrokeWeightBold, EAny, EAny, ENotBold, EAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryPrimarySmall, 10, 15, EAny, 0, EAny, ENotBold, ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryPrimarySmall, EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryPrimary, 10, 15, EAny, 0, EAny, ENotBold, ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryPrimary, EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryTitle, 10, 17, EAny, 0, EAny, ENotBold, ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryTitle, EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryAny, 10, 15, EStrokeWeightNormal, 0, EAny, ENotBold, ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryAny, EAny, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryAny, 10, 15, EStrokeWeightBold, 0, EAny, ENotBold, ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryAny, EAny, EAny, EStrokeWeightBold, EAny, EAny, ENotBold, EAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + + //hi-res fonts + { EAknFontCategorySecondary, 10, 15, EStrokeWeightNormal, 0, EAny, ENotBold, ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategorySecondary, EAny, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategorySecondary, 10, 15, EStrokeWeightBold, 0, EAny, ENotBold, ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategorySecondary, EAny, EAny, EStrokeWeightBold, EAny, EAny, ENotBold, EAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryPrimarySmall, 10, 15, EAny, 0, EAny, ENotBold, ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryPrimarySmall, EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryPrimary, 10, 15, EAny, 0, EAny, ENotBold, ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryPrimary, EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryTitle, 10, 17, EAny, 0, EAny, ENotBold, ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryTitle, EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryAny, 10, 15, EStrokeWeightNormal, 0, EAny, ENotBold, ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryAny, EAny, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryAny, 10, 15, EStrokeWeightBold, 0, EAny, ENotBold, ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, + { EAknFontCategoryAny, EAny, EAny, EStrokeWeightBold, EAny, EAny, ENotBold, EAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) }, //end }; // ============================ GLOBAL FUNCTIONS ======================================== @@ -925,7 +987,18 @@ } else { - requiredLangs |= EElafLangs; + if(fLinkedFonts && fHiResFonts) + { + requiredLangs |= EElafLFHiReLangs; + } + else if(fLinkedFonts) + { + requiredLangs |= EElafLFLoReLangs; + } + else + { + requiredLangs |= EElafLangs; + } } return requiredLangs; @@ -2236,6 +2309,10 @@ _LIT(KJAPStop, "[JAP_LINK_STOP]"); _LIT(KKORStart, "[KOR_LINK_START]"); _LIT(KKORStop, "[KOR_LINK_STOP]"); + _LIT(KWESTLINKLRStart, "[WESTERN_LINKLR_START]"); + _LIT(KWESTLINKLRStop, "[WESTERN_LINKLR_STOP]"); + _LIT(KWESTLINKHRStart, "[WESTERN_LINKHR_START]"); + _LIT(KWESTLINKHRStop, "[WESTERN_LINKHR_STOP]"); TInt ret = KErrNone; RPointerArray fontfiles; @@ -2309,7 +2386,23 @@ tfile.Seek(ESeekStart); ret = DoPopulateAndCreateLinkFontsL(tfile, startTok, stopTok); } - + if((!fChinese) && (!fKorean) && (!fJapanese) )//western linked fonts + { + if(fHiResFonts) + { + startTok.Copy(KWESTLINKHRStart); + stopTok.Copy(KWESTLINKHRStop); + tfile.Seek(ESeekStart); + ret = DoPopulateAndCreateLinkFontsL(tfile, startTok, stopTok); + } + else + { + startTok.Copy(KWESTLINKLRStart); + stopTok.Copy(KWESTLINKLRStop); + tfile.Seek(ESeekStart); + ret = DoPopulateAndCreateLinkFontsL(tfile, startTok, stopTok); + } + } } @@ -2364,6 +2457,8 @@ ref +=KAknFontStylesSupported; if(fKorean) ref +=KAknFontStylesSupported; + if((!fChinese) && (!fKorean) && (!fJapanese)) + ref +=KAknFontStylesSupported;//western linked fonts } for (TInt i = 0; i < noOfTypefaces; i++) { @@ -2431,6 +2526,25 @@ } } + if (!fChinese && !fJapanese && !fKorean && fHiResFonts) + { + if (typefaceInfo.iTypeface.iName.Compare(KS60SCHRSANSRLF)==0|| + typefaceInfo.iTypeface.iName.Compare(KS60SCHRSANSSBLF)==0|| + typefaceInfo.iTypeface.iName.Compare(KS60SCHRSANSTTLSMBLDLF)==0) + { + files++; + } + + } + else if (!fChinese && !fJapanese && !fKorean) + { + if (typefaceInfo.iTypeface.iName.Compare(KS60SCSANSRLF)==0|| + typefaceInfo.iTypeface.iName.Compare(KS60SCSANSSBLF)==0|| + typefaceInfo.iTypeface.iName.Compare(KS60SCSANSTTLSMBLDLF)==0) + { + files++; + } + } } } if (files && (ref == files) )