graphicsdeviceinterface/gdi/sgdi/FontIndic.h
changeset 0 5d03bc08d59c
equal deleted inserted replaced
-1:000000000000 0:5d03bc08d59c
       
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #ifndef __FONTINDIC_H__
       
    17 #define __FONTINDIC_H__
       
    18 
       
    19 #include "GlyphSel.h"
       
    20 
       
    21 /** Defines the maximum ammount of text thats can be shaped at one time.
       
    22 Change this number to suit optimisation, as increasing it or decreasing it may 
       
    23 make Devanagari text faster/slower.*/
       
    24 const TInt KMaxTextToShape = 16;
       
    25 
       
    26 enum TIndicCodeType
       
    27 	{
       
    28 	// These values must not change without also changing
       
    29 	// KStateResponse table accordingly
       
    30 	EIndicCodeOther = 0,
       
    31 	EIndicCodeCombiningSign = 1,
       
    32 	EIndicCodeIndependentVowel = 2,
       
    33 	EIndicCodeConsonant = 3,
       
    34 	EIndicCodeDependentVowel = 4,
       
    35 	EIndicCodeVirama = 5,
       
    36 	EIndicCodeNukta = 6,
       
    37 	EIndicCodeZWJ = 7,
       
    38 	EIndicCodeNuktaConsonant = 8,
       
    39 	EIndicCodeIndependentVowelA = 9,
       
    40 	EIndicCodeDependentVowelCandraE = 10,
       
    41 	EIndicCodeConsonantKannadaBengaliRa = 11,
       
    42 	EIndicCodeSplitVowel1 = 12,
       
    43 	EIndicCodeSplitVowel2 = 13,
       
    44 	EIndicCodeTamilLengthMarkAU = 14,
       
    45 	//Gurmukhi specific types: EIndicCodeGurBeraer* for specific bearer
       
    46 	//EIndicCodeGurDependentVowel* for dependent vowles which can be combined 
       
    47 	//with corresponding bearer to form an independent vowlel
       
    48 	EIndicCodeGurBearerA = 15,
       
    49 	EIndicCodeGurBearerU = 16,
       
    50 	EIndicCodeGurBearerI = 17,
       
    51 	EIndicCodeGurDependentVowelA = 18,
       
    52 	EIndicCodeGurDependentVowelU = 19,
       
    53 	EIndicCodeGurDependentVowelI = 20,
       
    54 	EIndicCodeConsonantMalaChillu = 21,
       
    55 	EIndicCodeConsonantMalaChilluNA = 22,
       
    56 	EIndicCodeConsonantMalaRRA = 23
       
    57 	};
       
    58 	
       
    59 struct TIndicCodeMapping
       
    60 	{
       
    61 	TInt16 iFirstCodeInRange;
       
    62 	TInt16 iCodeType;	// From TIndicCodeType
       
    63 	};
       
    64 
       
    65 /** Holds the types of all the symbols in the devanagari range, so that we can
       
    66 work out where the syllable boundaries begin and end. */
       
    67 static const TIndicCodeMapping KDevCodeMap[] =
       
    68 	{
       
    69 	{0, EIndicCodeOther},
       
    70 	{0x901, EIndicCodeCombiningSign},
       
    71 	{0x904, EIndicCodeIndependentVowel},
       
    72 	{0x905, EIndicCodeIndependentVowelA},
       
    73 	{0x906, EIndicCodeIndependentVowel},
       
    74 	{0x915, EIndicCodeConsonant},
       
    75 	{0x929, EIndicCodeNuktaConsonant},
       
    76 	{0x92A, EIndicCodeConsonant},
       
    77 	{0x931, EIndicCodeNuktaConsonant},
       
    78 	{0x932, EIndicCodeConsonant},
       
    79 	{0x934, EIndicCodeNuktaConsonant},
       
    80 	{0x935, EIndicCodeConsonant},
       
    81 	{0x93A, EIndicCodeOther},
       
    82 	{0x93C, EIndicCodeNukta},
       
    83 	{0x93D, EIndicCodeOther},
       
    84 	{0x93E, EIndicCodeDependentVowel},
       
    85 	{0x945, EIndicCodeDependentVowelCandraE},
       
    86 	{0x946, EIndicCodeDependentVowel},
       
    87 	{0x94D, EIndicCodeVirama},
       
    88 	{0x94E, EIndicCodeOther},
       
    89 	{0x951, EIndicCodeCombiningSign},
       
    90 	{0x955, EIndicCodeConsonant},
       
    91 	{0x958, EIndicCodeNuktaConsonant},
       
    92 	{0x960, EIndicCodeIndependentVowel},
       
    93 	{0x962, EIndicCodeDependentVowel},
       
    94 	{0x964, EIndicCodeOther},
       
    95 	{0x200D, EIndicCodeZWJ},
       
    96 	{0x200E, EIndicCodeOther}
       
    97 	};
       
    98 	
       
    99 /** Holds the types of all the symbols in the Kannada range, so that we can
       
   100 work out where the syllable boundaries begin and end. */
       
   101 static const TIndicCodeMapping KKanCodeMap[] =
       
   102 	{
       
   103 	{0, EIndicCodeOther},
       
   104 	{0xC82, EIndicCodeCombiningSign},
       
   105 	{0xC85, EIndicCodeIndependentVowel},
       
   106 	{0xC95, EIndicCodeConsonant},
       
   107 	{0xCB0, EIndicCodeConsonantKannadaBengaliRa},
       
   108 	{0xCB1, EIndicCodeConsonant},
       
   109 	{0xCB4, EIndicCodeOther},
       
   110 	{0xCB5, EIndicCodeConsonant},
       
   111 	{0xCBA, EIndicCodeOther},
       
   112 	{0xCBC, EIndicCodeNukta},
       
   113 	{0xCBD, EIndicCodeOther},
       
   114 	{0xCBE, EIndicCodeDependentVowel},
       
   115 	{0xCC5, EIndicCodeOther},
       
   116 	{0xCC6, EIndicCodeDependentVowel},
       
   117 	{0xCCD, EIndicCodeVirama},
       
   118 	{0xCD5, EIndicCodeCombiningSign},
       
   119 	{0xCDE, EIndicCodeConsonant},
       
   120 	{0xCE0, EIndicCodeIndependentVowel},
       
   121 	{0xCE2, EIndicCodeDependentVowel},
       
   122 	{0xCE4, EIndicCodeOther},
       
   123 	{0x200D, EIndicCodeZWJ},
       
   124 	{0x200E, EIndicCodeOther}
       
   125 	};
       
   126 
       
   127 /** Holds the types of all the symbols in the Gujarati range, so that we can
       
   128 work out where the syllable boundaries begin and end. */
       
   129 static const TIndicCodeMapping KGujCodeMap[] =
       
   130 	{
       
   131 	{0, EIndicCodeOther},
       
   132 	{0xA81, EIndicCodeCombiningSign},
       
   133 	{0xA85, EIndicCodeIndependentVowel},
       
   134 	{0xA8E, EIndicCodeOther},
       
   135 	{0xA8F, EIndicCodeIndependentVowel},
       
   136 	{0xA92, EIndicCodeOther},
       
   137 	{0xA93, EIndicCodeIndependentVowel},
       
   138 	{0xA95, EIndicCodeConsonant},
       
   139 	{0xAA9, EIndicCodeOther},
       
   140 	{0xAAA, EIndicCodeConsonant},
       
   141 	{0xAB1, EIndicCodeOther},
       
   142 	{0xAB2, EIndicCodeConsonant},
       
   143 	{0xAB4, EIndicCodeOther},
       
   144 	{0xAB5, EIndicCodeConsonant},
       
   145 	{0xABC, EIndicCodeNukta},
       
   146 	{0xABD, EIndicCodeOther},
       
   147 	{0xABE, EIndicCodeDependentVowel},
       
   148 	{0xAC6, EIndicCodeOther},
       
   149 	{0xAC7, EIndicCodeDependentVowel},
       
   150 	{0xACA, EIndicCodeOther},
       
   151 	{0xACB, EIndicCodeDependentVowel},
       
   152 	{0xACD, EIndicCodeVirama},
       
   153 	{0xACE, EIndicCodeOther},
       
   154 	{0xAE0, EIndicCodeIndependentVowel},
       
   155 	{0xAE2, EIndicCodeDependentVowel},
       
   156 	{0xAE4, EIndicCodeOther},
       
   157 	{0x200D, EIndicCodeZWJ},
       
   158 	{0x200E, EIndicCodeOther}
       
   159 	};
       
   160 	
       
   161 /** Holds the types of all the symbols in the Gurmukhi range, so that we can
       
   162 work out where the syllable boundaries begin and end. */
       
   163 static const TIndicCodeMapping KGurCodeMap[] =
       
   164 	{
       
   165 	{0, EIndicCodeOther},
       
   166 	{0xA01, EIndicCodeCombiningSign},
       
   167 	{0xA04, EIndicCodeOther},
       
   168 	{0xA05, EIndicCodeGurBearerA},
       
   169 	{0xA06, EIndicCodeIndependentVowel},
       
   170 	{0xA0B, EIndicCodeOther},
       
   171 	{0xA0F, EIndicCodeIndependentVowel},
       
   172 	{0xA11, EIndicCodeOther},
       
   173 	{0xA13, EIndicCodeIndependentVowel},
       
   174 	{0xA15, EIndicCodeConsonant},
       
   175 	{0xA29, EIndicCodeOther},
       
   176 	{0xA2A, EIndicCodeConsonant},
       
   177 	{0xA31, EIndicCodeOther},
       
   178 	{0xA32, EIndicCodeConsonant},
       
   179 	{0xA33, EIndicCodeNuktaConsonant},
       
   180 	{0xA34, EIndicCodeOther},
       
   181 	{0xA35, EIndicCodeConsonant},
       
   182 	{0xA36, EIndicCodeNuktaConsonant},
       
   183 	{0xA37, EIndicCodeOther},
       
   184 	{0xA38, EIndicCodeConsonant},
       
   185 	{0xA3A, EIndicCodeOther},
       
   186 	{0xA3C, EIndicCodeNukta},
       
   187 	{0xA3D, EIndicCodeOther},
       
   188 	{0xA3E, EIndicCodeGurDependentVowelA},
       
   189 	{0xA3F, EIndicCodeGurDependentVowelI},
       
   190 	{0xA41, EIndicCodeGurDependentVowelU},
       
   191 	{0xA43, EIndicCodeOther},
       
   192 	{0xA47, EIndicCodeGurDependentVowelI},
       
   193 	{0xA48, EIndicCodeGurDependentVowelA},
       
   194 	{0xA49, EIndicCodeOther},
       
   195 	{0xA4B, EIndicCodeGurDependentVowelU},
       
   196 	{0xA4C, EIndicCodeGurDependentVowelA},
       
   197 	{0xA4D, EIndicCodeVirama},
       
   198 	{0xA4E, EIndicCodeOther},
       
   199 	{0xA59, EIndicCodeNuktaConsonant},
       
   200 	{0xA5C, EIndicCodeConsonant},
       
   201 	{0xA5D, EIndicCodeOther},
       
   202 	{0xA5E, EIndicCodeNuktaConsonant},
       
   203 	{0xA5F, EIndicCodeOther},
       
   204 	{0xA70, EIndicCodeCombiningSign},
       
   205 	{0xA71, EIndicCodeCombiningSign},
       
   206 	{0xA72, EIndicCodeGurBearerI},
       
   207 	{0xA73, EIndicCodeGurBearerU},
       
   208 	{0xA74, EIndicCodeOther},
       
   209 	{0x200D, EIndicCodeZWJ},
       
   210 	{0x200E, EIndicCodeOther}
       
   211 	};
       
   212 
       
   213 /** Holds the types of all the symbols in the Bengali range, so that we can
       
   214 work out where the syllable boundaries begin and end. */
       
   215 static const TIndicCodeMapping KBenCodeMap[] =
       
   216 	{
       
   217 	{0, EIndicCodeOther},
       
   218 	{0x981 , EIndicCodeCombiningSign},
       
   219 	{0x985 , EIndicCodeIndependentVowel},
       
   220 	{0x995 , EIndicCodeConsonant},
       
   221 	{0x9B0 , EIndicCodeConsonantKannadaBengaliRa},
       
   222 	{0x9B1 , EIndicCodeConsonant},
       
   223 	{0x9BA , EIndicCodeOther},
       
   224 	{0x9BC , EIndicCodeNukta},
       
   225 	{0x9BD , EIndicCodeOther},
       
   226 	{0x9BE , EIndicCodeDependentVowel},
       
   227 	{0x9C9 , EIndicCodeOther},
       
   228 	{0x9CB , EIndicCodeDependentVowel},
       
   229 	{0x9CD , EIndicCodeVirama},
       
   230 	{0x9CE , EIndicCodeOther},
       
   231 	{0x9D7 , EIndicCodeDependentVowel},
       
   232 	{0x9DC , EIndicCodeConsonant},
       
   233 	{0x9E0 , EIndicCodeIndependentVowel},
       
   234 	{0x9E2 , EIndicCodeDependentVowel},
       
   235 	{0x9E4 , EIndicCodeOther},
       
   236 	{0x200D, EIndicCodeZWJ},
       
   237 	{0x200E, EIndicCodeOther}
       
   238 	};
       
   239 
       
   240 /** Holds the types of all the symbols in the Tamil range, so that we can
       
   241 work out where the syllable boundaries begin and end. */
       
   242 static const TIndicCodeMapping KTamCodeMap[] =
       
   243 	{
       
   244 	{0, EIndicCodeOther},
       
   245 	{0xB82 , EIndicCodeCombiningSign},
       
   246 	{0xB83 , EIndicCodeIndependentVowel},
       
   247 	{0xB84 , EIndicCodeOther},
       
   248 	{0xB85 , EIndicCodeIndependentVowel},
       
   249 	{0xB92 , EIndicCodeIndependentVowelA},
       
   250 	{0xB93 , EIndicCodeIndependentVowel},
       
   251 	{0xB95 , EIndicCodeConsonant},
       
   252 	{0xBBE , EIndicCodeSplitVowel2},
       
   253 	{0xBBF , EIndicCodeDependentVowel},
       
   254 	{0xBC6 , EIndicCodeSplitVowel1},
       
   255 	{0xBC8 , EIndicCodeDependentVowel},
       
   256 	{0xBCD , EIndicCodeVirama},
       
   257 	{0xBCE , EIndicCodeOther},
       
   258 	{0xBD7 , EIndicCodeTamilLengthMarkAU},
       
   259 	{0xBE4 , EIndicCodeOther},
       
   260 	{0x200D, EIndicCodeZWJ},
       
   261 	{0x200E, EIndicCodeOther}
       
   262 	};
       
   263 
       
   264 /** Holds the types of all the symbols in the Telugu range, so that we can
       
   265 work out where the syllable boundaries begin and end. */
       
   266 static const TIndicCodeMapping KTelCodeMap[] =
       
   267 	{
       
   268 	{0, EIndicCodeOther},
       
   269 	{0xC01, EIndicCodeCombiningSign},
       
   270 	{0xC04, EIndicCodeOther},
       
   271 	{0xC05, EIndicCodeIndependentVowel},
       
   272 	{0xC15, EIndicCodeConsonant},
       
   273 	{0xC3A, EIndicCodeOther},
       
   274 	{0xC3E, EIndicCodeDependentVowel},
       
   275 	{0xC4D, EIndicCodeVirama},
       
   276 	{0xC4E, EIndicCodeOther},
       
   277 	{0xC55, EIndicCodeDependentVowel},
       
   278 	{0xC57, EIndicCodeOther},
       
   279 	{0xC60, EIndicCodeIndependentVowel},
       
   280 	{0xC62, EIndicCodeOther}
       
   281 	};
       
   282 
       
   283 /** Holds the types of all the symbols in the Malayalam range, so that we can
       
   284 work out where the syllable boundaries begin and end. */
       
   285 static const TIndicCodeMapping KMalaCodeMap[] =
       
   286 	{
       
   287 	{0, EIndicCodeOther}, // NOT USED D00 - D01
       
   288 	{0xD02, EIndicCodeCombiningSign}, // Modifiers
       
   289 	{0xD04, EIndicCodeOther}, // NOT USED
       
   290 	{0xD05, EIndicCodeIndependentVowel},
       
   291 //	{0xD0D, EIndicCodeOther}, // Reserved
       
   292 //	{0xD0E, EIndicCodeIndependentVowel},
       
   293 //	{0xD11, EIndicCodeOther}, // Reserved
       
   294 //	{0xD12, EIndicCodeIndependentVowel},
       
   295 	{0xD15, EIndicCodeConsonant},
       
   296 	{0xD23, EIndicCodeConsonantMalaChillu}, // NNA
       
   297 	{0xD24, EIndicCodeConsonant},
       
   298 	{0xD28, EIndicCodeConsonantMalaChilluNA}, // NA
       
   299 	{0xD29, EIndicCodeOther}, // Reserved
       
   300 	{0xD2A, EIndicCodeConsonant},
       
   301 	{0xD30, EIndicCodeConsonantMalaChillu}, // RA
       
   302 	{0xD31, EIndicCodeConsonantMalaRRA}, // RRA
       
   303 	{0xD32, EIndicCodeConsonantMalaChillu}, // LA,  LLA
       
   304 	{0xD34, EIndicCodeConsonant},
       
   305 	{0xD3A, EIndicCodeOther}, // NOT USED D3A - D3D
       
   306 	{0xD3E, EIndicCodeSplitVowel2},
       
   307 	{0xD3F, EIndicCodeDependentVowel},
       
   308 //	{0xD44, EIndicCodeOther}, // Reserved D44 - D45
       
   309 	{0xD46, EIndicCodeSplitVowel1},
       
   310 	{0xD48, EIndicCodeDependentVowel},
       
   311 //	{0xD49, EIndicCodeOther}, // Reserved D49
       
   312 //	{0xD4A, EIndicCodeDependentVowel},
       
   313 	{0xD4D, EIndicCodeVirama},
       
   314 	{0xD4E, EIndicCodeOther}, //Reserved D4E - D56
       
   315 	{0xD57, EIndicCodeTamilLengthMarkAU}, // EIndicCodeDependentVowel for Telugu ???
       
   316 	{0xD58, EIndicCodeOther}, // NOT USED D58 - D5F
       
   317 	{0xD60, EIndicCodeIndependentVowel}, // RR, LL
       
   318 	{0xD62, EIndicCodeOther}, // NOT USED D62 - D65, digits D66 - D6F	
       
   319 	{0x200D, EIndicCodeZWJ},
       
   320 	{0x200E, EIndicCodeOther}
       
   321 	};
       
   322 
       
   323 /* Holds all parameters specific to scripts */
       
   324 struct TIndicScriptProcessorParameters{
       
   325 	TUint32 iLanguageCode;
       
   326 	TUint32 iScriptCode;
       
   327 	TUint iUCLow;
       
   328 	TUint iUCHigh;
       
   329 	TUint iMapLen;
       
   330 	const TIndicCodeMapping *iCodeMap;
       
   331 };
       
   332 
       
   333 static const TIndicScriptProcessorParameters KIndicDevParameters = {
       
   334 	0x48494E20, //KHindiLanguageCode,	
       
   335 	0x64657661, //KDevanagariScriptCode,	
       
   336 	0x0900, //KDevLow,
       
   337 	0x0970, //KDevHigh,	
       
   338 	sizeof(KDevCodeMap)/sizeof(KDevCodeMap[0]),
       
   339 	KDevCodeMap
       
   340 };
       
   341 
       
   342 static const TIndicScriptProcessorParameters KIndicKanParameters = {
       
   343 	0x4B414E20, //KKannadaLanguageCode,	
       
   344 	0x6B6E6461, //KKannadaScriptCode,	
       
   345 	0x0C80, //KKanLow,
       
   346 	0x0CFF, //KKanHigh,	
       
   347 	sizeof(KKanCodeMap)/sizeof(KKanCodeMap[0]),
       
   348 	KKanCodeMap
       
   349 };
       
   350 
       
   351 static const TIndicScriptProcessorParameters KIndicGujParameters = {
       
   352 	0x47554A20, //KGujaratiLanguageCode,	
       
   353 	0x67756A72, //KGujaratiScriptCode,	
       
   354 	0x0A80, //KGujLow,
       
   355 	0x0AFF, //KGujHigh,	
       
   356 	sizeof(KGujCodeMap)/sizeof(KGujCodeMap[0]),
       
   357 	KGujCodeMap
       
   358 };
       
   359 
       
   360 static const TIndicScriptProcessorParameters KIndicBenParameters = {
       
   361 	0x42454E20, //KBengaliLanguageCode,	
       
   362 	0x62656E67, //KBengaliScriptCode,	
       
   363 	0x0980, //KBenLow,
       
   364 	0x09FF, //KBenHigh,	
       
   365 	sizeof(KBenCodeMap)/sizeof(KBenCodeMap[0]),
       
   366 	KBenCodeMap
       
   367 };
       
   368 
       
   369 static const TIndicScriptProcessorParameters KIndicTamParameters = {
       
   370 	0x54414D20, //KTamilLanguageCode,	
       
   371 	0x74616D6C, //KTamilScriptCode,
       
   372 	0x0B80, //KTamLow,
       
   373 	0x0BFF, //KTamHigh,	
       
   374 	sizeof(KTamCodeMap)/sizeof(KTamCodeMap[0]),
       
   375 	KTamCodeMap
       
   376 };
       
   377 
       
   378 static const TIndicScriptProcessorParameters KIndicTelParameters = {
       
   379 	0x54454C20, //KTeluguLanguageCode,	
       
   380 	0x74656C75, //KTeluguScriptCode,
       
   381 	0x0C00, //KTelLow,
       
   382 	0x0C7F, //KTelHigh,	
       
   383 	sizeof(KTelCodeMap)/sizeof(KTelCodeMap[0]),
       
   384 	KTelCodeMap
       
   385 };
       
   386 
       
   387 static const TIndicScriptProcessorParameters KIndicGurParameters = {
       
   388 	0x00000000,	//KGurmukhiLanguageCode,
       
   389 	0x67757275, //KGurmukhiScriptCode,
       
   390 	0x0A00, //KGurLow,
       
   391 	0x0A7F, //KGurHigh,
       
   392 	sizeof(KGurCodeMap)/sizeof(KGurCodeMap[0]),
       
   393 	KGurCodeMap
       
   394 };
       
   395 
       
   396 static const TIndicScriptProcessorParameters KIndicMalParameters = {
       
   397 	0x4D4C5220, //KMalayalamLanguageCode,	
       
   398 	0x6D6C796D, //KMalayalamScriptCode,
       
   399 	0x0D00, //KMalaLow,
       
   400 	0x0D7F, //KMalaHigh,	
       
   401 	sizeof(KMalaCodeMap)/sizeof(KMalaCodeMap[0]),
       
   402 	KMalaCodeMap
       
   403 };
       
   404 
       
   405 /** This is the default glyph selector class for Devanagari characters in the
       
   406 range 0x0900..0x097F.
       
   407 @internalComponent
       
   408 */
       
   409 class GlyphSelector_Devanagari
       
   410 	{
       
   411 public:
       
   412 	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
       
   413 	};
       
   414 
       
   415 
       
   416 /** This is the default glyph selector class for Kannada characters in the
       
   417 range 0x0C80..0x0CFF.
       
   418 @internalComponent
       
   419 */
       
   420 class GlyphSelector_Kannada
       
   421 	{
       
   422 public:
       
   423 	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
       
   424 	};
       
   425 	
       
   426 
       
   427 /** This is the default glyph selector class for Gujarati characters in the
       
   428 range 0x0A80..0x0AFF.
       
   429 @internalComponent
       
   430 */
       
   431 class GlyphSelector_Gujarati
       
   432 	{
       
   433 public:
       
   434 	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
       
   435 	};
       
   436 	
       
   437 /** This is the default glyph selector class for Bengali characters in the
       
   438 range 0x0980..0x09FF.
       
   439 @internalComponent
       
   440 */
       
   441 class GlyphSelector_Bengali
       
   442 	{
       
   443 public:
       
   444 	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
       
   445 	};
       
   446 	
       
   447 /** This is the default glyph selector class for Tamil characters in the
       
   448 range 0x0B80..0x0BFF.
       
   449 @internalComponent
       
   450 */
       
   451 class GlyphSelector_Tamil
       
   452 	{
       
   453 public:
       
   454 	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
       
   455 	};
       
   456 
       
   457 /** This is the default glyph selector class for Telugu characters in the
       
   458 range 0x0C00..0x0C7F.
       
   459 @internalComponent
       
   460 */
       
   461 class GlyphSelector_Telugu
       
   462 	{
       
   463 public:
       
   464 	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
       
   465 	};
       
   466 
       
   467 /** This is the default glyph selector class for Gurmukhi characters in the
       
   468 range 0x0A00..0x0A7F.
       
   469 @internalComponent
       
   470 */
       
   471 class GlyphSelector_Gurmukhi
       
   472 	{
       
   473 public:
       
   474 	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
       
   475 	};
       
   476 
       
   477 /** This is the default glyph selector class for Malayalam characters in the
       
   478 range 0x0D00..0x0D7F.
       
   479 @internalComponent
       
   480 */
       
   481 class GlyphSelector_Malayalam
       
   482 	{
       
   483 public:
       
   484 	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
       
   485 	};
       
   486 
       
   487 #endif