diff -r 969102054596 -r 414d4b727fd9 graphicsdeviceinterface/gdi/sgdi/FontIndic.h --- a/graphicsdeviceinterface/gdi/sgdi/FontIndic.h Wed Aug 25 08:17:25 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,487 +0,0 @@ -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef __FONTINDIC_H__ -#define __FONTINDIC_H__ - -#include "GlyphSel.h" - -/** Defines the maximum ammount of text thats can be shaped at one time. -Change this number to suit optimisation, as increasing it or decreasing it may -make Devanagari text faster/slower.*/ -const TInt KMaxTextToShape = 16; - -enum TIndicCodeType - { - // These values must not change without also changing - // KStateResponse table accordingly - EIndicCodeOther = 0, - EIndicCodeCombiningSign = 1, - EIndicCodeIndependentVowel = 2, - EIndicCodeConsonant = 3, - EIndicCodeDependentVowel = 4, - EIndicCodeVirama = 5, - EIndicCodeNukta = 6, - EIndicCodeZWJ = 7, - EIndicCodeNuktaConsonant = 8, - EIndicCodeIndependentVowelA = 9, - EIndicCodeDependentVowelCandraE = 10, - EIndicCodeConsonantKannadaBengaliRa = 11, - EIndicCodeSplitVowel1 = 12, - EIndicCodeSplitVowel2 = 13, - EIndicCodeTamilLengthMarkAU = 14, - //Gurmukhi specific types: EIndicCodeGurBeraer* for specific bearer - //EIndicCodeGurDependentVowel* for dependent vowles which can be combined - //with corresponding bearer to form an independent vowlel - EIndicCodeGurBearerA = 15, - EIndicCodeGurBearerU = 16, - EIndicCodeGurBearerI = 17, - EIndicCodeGurDependentVowelA = 18, - EIndicCodeGurDependentVowelU = 19, - EIndicCodeGurDependentVowelI = 20, - EIndicCodeConsonantMalaChillu = 21, - EIndicCodeConsonantMalaChilluNA = 22, - EIndicCodeConsonantMalaRRA = 23 - }; - -struct TIndicCodeMapping - { - TInt16 iFirstCodeInRange; - TInt16 iCodeType; // From TIndicCodeType - }; - -/** Holds the types of all the symbols in the devanagari range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KDevCodeMap[] = - { - {0, EIndicCodeOther}, - {0x901, EIndicCodeCombiningSign}, - {0x904, EIndicCodeIndependentVowel}, - {0x905, EIndicCodeIndependentVowelA}, - {0x906, EIndicCodeIndependentVowel}, - {0x915, EIndicCodeConsonant}, - {0x929, EIndicCodeNuktaConsonant}, - {0x92A, EIndicCodeConsonant}, - {0x931, EIndicCodeNuktaConsonant}, - {0x932, EIndicCodeConsonant}, - {0x934, EIndicCodeNuktaConsonant}, - {0x935, EIndicCodeConsonant}, - {0x93A, EIndicCodeOther}, - {0x93C, EIndicCodeNukta}, - {0x93D, EIndicCodeOther}, - {0x93E, EIndicCodeDependentVowel}, - {0x945, EIndicCodeDependentVowelCandraE}, - {0x946, EIndicCodeDependentVowel}, - {0x94D, EIndicCodeVirama}, - {0x94E, EIndicCodeOther}, - {0x951, EIndicCodeCombiningSign}, - {0x955, EIndicCodeConsonant}, - {0x958, EIndicCodeNuktaConsonant}, - {0x960, EIndicCodeIndependentVowel}, - {0x962, EIndicCodeDependentVowel}, - {0x964, EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Kannada range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KKanCodeMap[] = - { - {0, EIndicCodeOther}, - {0xC82, EIndicCodeCombiningSign}, - {0xC85, EIndicCodeIndependentVowel}, - {0xC95, EIndicCodeConsonant}, - {0xCB0, EIndicCodeConsonantKannadaBengaliRa}, - {0xCB1, EIndicCodeConsonant}, - {0xCB4, EIndicCodeOther}, - {0xCB5, EIndicCodeConsonant}, - {0xCBA, EIndicCodeOther}, - {0xCBC, EIndicCodeNukta}, - {0xCBD, EIndicCodeOther}, - {0xCBE, EIndicCodeDependentVowel}, - {0xCC5, EIndicCodeOther}, - {0xCC6, EIndicCodeDependentVowel}, - {0xCCD, EIndicCodeVirama}, - {0xCD5, EIndicCodeCombiningSign}, - {0xCDE, EIndicCodeConsonant}, - {0xCE0, EIndicCodeIndependentVowel}, - {0xCE2, EIndicCodeDependentVowel}, - {0xCE4, EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Gujarati range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KGujCodeMap[] = - { - {0, EIndicCodeOther}, - {0xA81, EIndicCodeCombiningSign}, - {0xA85, EIndicCodeIndependentVowel}, - {0xA8E, EIndicCodeOther}, - {0xA8F, EIndicCodeIndependentVowel}, - {0xA92, EIndicCodeOther}, - {0xA93, EIndicCodeIndependentVowel}, - {0xA95, EIndicCodeConsonant}, - {0xAA9, EIndicCodeOther}, - {0xAAA, EIndicCodeConsonant}, - {0xAB1, EIndicCodeOther}, - {0xAB2, EIndicCodeConsonant}, - {0xAB4, EIndicCodeOther}, - {0xAB5, EIndicCodeConsonant}, - {0xABC, EIndicCodeNukta}, - {0xABD, EIndicCodeOther}, - {0xABE, EIndicCodeDependentVowel}, - {0xAC6, EIndicCodeOther}, - {0xAC7, EIndicCodeDependentVowel}, - {0xACA, EIndicCodeOther}, - {0xACB, EIndicCodeDependentVowel}, - {0xACD, EIndicCodeVirama}, - {0xACE, EIndicCodeOther}, - {0xAE0, EIndicCodeIndependentVowel}, - {0xAE2, EIndicCodeDependentVowel}, - {0xAE4, EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Gurmukhi range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KGurCodeMap[] = - { - {0, EIndicCodeOther}, - {0xA01, EIndicCodeCombiningSign}, - {0xA04, EIndicCodeOther}, - {0xA05, EIndicCodeGurBearerA}, - {0xA06, EIndicCodeIndependentVowel}, - {0xA0B, EIndicCodeOther}, - {0xA0F, EIndicCodeIndependentVowel}, - {0xA11, EIndicCodeOther}, - {0xA13, EIndicCodeIndependentVowel}, - {0xA15, EIndicCodeConsonant}, - {0xA29, EIndicCodeOther}, - {0xA2A, EIndicCodeConsonant}, - {0xA31, EIndicCodeOther}, - {0xA32, EIndicCodeConsonant}, - {0xA33, EIndicCodeNuktaConsonant}, - {0xA34, EIndicCodeOther}, - {0xA35, EIndicCodeConsonant}, - {0xA36, EIndicCodeNuktaConsonant}, - {0xA37, EIndicCodeOther}, - {0xA38, EIndicCodeConsonant}, - {0xA3A, EIndicCodeOther}, - {0xA3C, EIndicCodeNukta}, - {0xA3D, EIndicCodeOther}, - {0xA3E, EIndicCodeGurDependentVowelA}, - {0xA3F, EIndicCodeGurDependentVowelI}, - {0xA41, EIndicCodeGurDependentVowelU}, - {0xA43, EIndicCodeOther}, - {0xA47, EIndicCodeGurDependentVowelI}, - {0xA48, EIndicCodeGurDependentVowelA}, - {0xA49, EIndicCodeOther}, - {0xA4B, EIndicCodeGurDependentVowelU}, - {0xA4C, EIndicCodeGurDependentVowelA}, - {0xA4D, EIndicCodeVirama}, - {0xA4E, EIndicCodeOther}, - {0xA59, EIndicCodeNuktaConsonant}, - {0xA5C, EIndicCodeConsonant}, - {0xA5D, EIndicCodeOther}, - {0xA5E, EIndicCodeNuktaConsonant}, - {0xA5F, EIndicCodeOther}, - {0xA70, EIndicCodeCombiningSign}, - {0xA71, EIndicCodeCombiningSign}, - {0xA72, EIndicCodeGurBearerI}, - {0xA73, EIndicCodeGurBearerU}, - {0xA74, EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Bengali range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KBenCodeMap[] = - { - {0, EIndicCodeOther}, - {0x981 , EIndicCodeCombiningSign}, - {0x985 , EIndicCodeIndependentVowel}, - {0x995 , EIndicCodeConsonant}, - {0x9B0 , EIndicCodeConsonantKannadaBengaliRa}, - {0x9B1 , EIndicCodeConsonant}, - {0x9BA , EIndicCodeOther}, - {0x9BC , EIndicCodeNukta}, - {0x9BD , EIndicCodeOther}, - {0x9BE , EIndicCodeDependentVowel}, - {0x9C9 , EIndicCodeOther}, - {0x9CB , EIndicCodeDependentVowel}, - {0x9CD , EIndicCodeVirama}, - {0x9CE , EIndicCodeOther}, - {0x9D7 , EIndicCodeDependentVowel}, - {0x9DC , EIndicCodeConsonant}, - {0x9E0 , EIndicCodeIndependentVowel}, - {0x9E2 , EIndicCodeDependentVowel}, - {0x9E4 , EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Tamil range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KTamCodeMap[] = - { - {0, EIndicCodeOther}, - {0xB82 , EIndicCodeCombiningSign}, - {0xB83 , EIndicCodeIndependentVowel}, - {0xB84 , EIndicCodeOther}, - {0xB85 , EIndicCodeIndependentVowel}, - {0xB92 , EIndicCodeIndependentVowelA}, - {0xB93 , EIndicCodeIndependentVowel}, - {0xB95 , EIndicCodeConsonant}, - {0xBBE , EIndicCodeSplitVowel2}, - {0xBBF , EIndicCodeDependentVowel}, - {0xBC6 , EIndicCodeSplitVowel1}, - {0xBC8 , EIndicCodeDependentVowel}, - {0xBCD , EIndicCodeVirama}, - {0xBCE , EIndicCodeOther}, - {0xBD7 , EIndicCodeTamilLengthMarkAU}, - {0xBE4 , EIndicCodeOther}, - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Telugu range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KTelCodeMap[] = - { - {0, EIndicCodeOther}, - {0xC01, EIndicCodeCombiningSign}, - {0xC04, EIndicCodeOther}, - {0xC05, EIndicCodeIndependentVowel}, - {0xC15, EIndicCodeConsonant}, - {0xC3A, EIndicCodeOther}, - {0xC3E, EIndicCodeDependentVowel}, - {0xC4D, EIndicCodeVirama}, - {0xC4E, EIndicCodeOther}, - {0xC55, EIndicCodeDependentVowel}, - {0xC57, EIndicCodeOther}, - {0xC60, EIndicCodeIndependentVowel}, - {0xC62, EIndicCodeOther} - }; - -/** Holds the types of all the symbols in the Malayalam range, so that we can -work out where the syllable boundaries begin and end. */ -static const TIndicCodeMapping KMalaCodeMap[] = - { - {0, EIndicCodeOther}, // NOT USED D00 - D01 - {0xD02, EIndicCodeCombiningSign}, // Modifiers - {0xD04, EIndicCodeOther}, // NOT USED - {0xD05, EIndicCodeIndependentVowel}, -// {0xD0D, EIndicCodeOther}, // Reserved -// {0xD0E, EIndicCodeIndependentVowel}, -// {0xD11, EIndicCodeOther}, // Reserved -// {0xD12, EIndicCodeIndependentVowel}, - {0xD15, EIndicCodeConsonant}, - {0xD23, EIndicCodeConsonantMalaChillu}, // NNA - {0xD24, EIndicCodeConsonant}, - {0xD28, EIndicCodeConsonantMalaChilluNA}, // NA - {0xD29, EIndicCodeOther}, // Reserved - {0xD2A, EIndicCodeConsonant}, - {0xD30, EIndicCodeConsonantMalaChillu}, // RA - {0xD31, EIndicCodeConsonantMalaRRA}, // RRA - {0xD32, EIndicCodeConsonantMalaChillu}, // LA, LLA - {0xD34, EIndicCodeConsonant}, - {0xD3A, EIndicCodeOther}, // NOT USED D3A - D3D - {0xD3E, EIndicCodeSplitVowel2}, - {0xD3F, EIndicCodeDependentVowel}, -// {0xD44, EIndicCodeOther}, // Reserved D44 - D45 - {0xD46, EIndicCodeSplitVowel1}, - {0xD48, EIndicCodeDependentVowel}, -// {0xD49, EIndicCodeOther}, // Reserved D49 -// {0xD4A, EIndicCodeDependentVowel}, - {0xD4D, EIndicCodeVirama}, - {0xD4E, EIndicCodeOther}, //Reserved D4E - D56 - {0xD57, EIndicCodeTamilLengthMarkAU}, // EIndicCodeDependentVowel for Telugu ??? - {0xD58, EIndicCodeOther}, // NOT USED D58 - D5F - {0xD60, EIndicCodeIndependentVowel}, // RR, LL - {0xD62, EIndicCodeOther}, // NOT USED D62 - D65, digits D66 - D6F - {0x200D, EIndicCodeZWJ}, - {0x200E, EIndicCodeOther} - }; - -/* Holds all parameters specific to scripts */ -struct TIndicScriptProcessorParameters{ - TUint32 iLanguageCode; - TUint32 iScriptCode; - TUint iUCLow; - TUint iUCHigh; - TUint iMapLen; - const TIndicCodeMapping *iCodeMap; -}; - -static const TIndicScriptProcessorParameters KIndicDevParameters = { - 0x48494E20, //KHindiLanguageCode, - 0x64657661, //KDevanagariScriptCode, - 0x0900, //KDevLow, - 0x0970, //KDevHigh, - sizeof(KDevCodeMap)/sizeof(KDevCodeMap[0]), - KDevCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicKanParameters = { - 0x4B414E20, //KKannadaLanguageCode, - 0x6B6E6461, //KKannadaScriptCode, - 0x0C80, //KKanLow, - 0x0CFF, //KKanHigh, - sizeof(KKanCodeMap)/sizeof(KKanCodeMap[0]), - KKanCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicGujParameters = { - 0x47554A20, //KGujaratiLanguageCode, - 0x67756A72, //KGujaratiScriptCode, - 0x0A80, //KGujLow, - 0x0AFF, //KGujHigh, - sizeof(KGujCodeMap)/sizeof(KGujCodeMap[0]), - KGujCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicBenParameters = { - 0x42454E20, //KBengaliLanguageCode, - 0x62656E67, //KBengaliScriptCode, - 0x0980, //KBenLow, - 0x09FF, //KBenHigh, - sizeof(KBenCodeMap)/sizeof(KBenCodeMap[0]), - KBenCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicTamParameters = { - 0x54414D20, //KTamilLanguageCode, - 0x74616D6C, //KTamilScriptCode, - 0x0B80, //KTamLow, - 0x0BFF, //KTamHigh, - sizeof(KTamCodeMap)/sizeof(KTamCodeMap[0]), - KTamCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicTelParameters = { - 0x54454C20, //KTeluguLanguageCode, - 0x74656C75, //KTeluguScriptCode, - 0x0C00, //KTelLow, - 0x0C7F, //KTelHigh, - sizeof(KTelCodeMap)/sizeof(KTelCodeMap[0]), - KTelCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicGurParameters = { - 0x00000000, //KGurmukhiLanguageCode, - 0x67757275, //KGurmukhiScriptCode, - 0x0A00, //KGurLow, - 0x0A7F, //KGurHigh, - sizeof(KGurCodeMap)/sizeof(KGurCodeMap[0]), - KGurCodeMap -}; - -static const TIndicScriptProcessorParameters KIndicMalParameters = { - 0x4D4C5220, //KMalayalamLanguageCode, - 0x6D6C796D, //KMalayalamScriptCode, - 0x0D00, //KMalaLow, - 0x0D7F, //KMalaHigh, - sizeof(KMalaCodeMap)/sizeof(KMalaCodeMap[0]), - KMalaCodeMap -}; - -/** This is the default glyph selector class for Devanagari characters in the -range 0x0900..0x097F. -@internalComponent -*/ -class GlyphSelector_Devanagari - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - - -/** This is the default glyph selector class for Kannada characters in the -range 0x0C80..0x0CFF. -@internalComponent -*/ -class GlyphSelector_Kannada - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - - -/** This is the default glyph selector class for Gujarati characters in the -range 0x0A80..0x0AFF. -@internalComponent -*/ -class GlyphSelector_Gujarati - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -/** This is the default glyph selector class for Bengali characters in the -range 0x0980..0x09FF. -@internalComponent -*/ -class GlyphSelector_Bengali - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -/** This is the default glyph selector class for Tamil characters in the -range 0x0B80..0x0BFF. -@internalComponent -*/ -class GlyphSelector_Tamil - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -/** This is the default glyph selector class for Telugu characters in the -range 0x0C00..0x0C7F. -@internalComponent -*/ -class GlyphSelector_Telugu - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -/** This is the default glyph selector class for Gurmukhi characters in the -range 0x0A00..0x0A7F. -@internalComponent -*/ -class GlyphSelector_Gurmukhi - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -/** This is the default glyph selector class for Malayalam characters in the -range 0x0D00..0x0D7F. -@internalComponent -*/ -class GlyphSelector_Malayalam - { -public: - static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&); - }; - -#endif