os/graphics/graphicsdeviceinterface/gdi/sgdi/FontIndic.h
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/graphics/graphicsdeviceinterface/gdi/sgdi/FontIndic.h	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,487 @@
     1.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5 +// All rights reserved.
     1.6 +// This component and the accompanying materials are made available
     1.7 +// under the terms of "Eclipse Public License v1.0"
     1.8 +// which accompanies this distribution, and is available
     1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.10 +//
    1.11 +// Initial Contributors:
    1.12 +// Nokia Corporation - initial contribution.
    1.13 +//
    1.14 +// Contributors:
    1.15 +//
    1.16 +// Description:
    1.17 +//
    1.18 +
    1.19 +#ifndef __FONTINDIC_H__
    1.20 +#define __FONTINDIC_H__
    1.21 +
    1.22 +#include "GlyphSel.h"
    1.23 +
    1.24 +/** Defines the maximum ammount of text thats can be shaped at one time.
    1.25 +Change this number to suit optimisation, as increasing it or decreasing it may 
    1.26 +make Devanagari text faster/slower.*/
    1.27 +const TInt KMaxTextToShape = 16;
    1.28 +
    1.29 +enum TIndicCodeType
    1.30 +	{
    1.31 +	// These values must not change without also changing
    1.32 +	// KStateResponse table accordingly
    1.33 +	EIndicCodeOther = 0,
    1.34 +	EIndicCodeCombiningSign = 1,
    1.35 +	EIndicCodeIndependentVowel = 2,
    1.36 +	EIndicCodeConsonant = 3,
    1.37 +	EIndicCodeDependentVowel = 4,
    1.38 +	EIndicCodeVirama = 5,
    1.39 +	EIndicCodeNukta = 6,
    1.40 +	EIndicCodeZWJ = 7,
    1.41 +	EIndicCodeNuktaConsonant = 8,
    1.42 +	EIndicCodeIndependentVowelA = 9,
    1.43 +	EIndicCodeDependentVowelCandraE = 10,
    1.44 +	EIndicCodeConsonantKannadaBengaliRa = 11,
    1.45 +	EIndicCodeSplitVowel1 = 12,
    1.46 +	EIndicCodeSplitVowel2 = 13,
    1.47 +	EIndicCodeTamilLengthMarkAU = 14,
    1.48 +	//Gurmukhi specific types: EIndicCodeGurBeraer* for specific bearer
    1.49 +	//EIndicCodeGurDependentVowel* for dependent vowles which can be combined 
    1.50 +	//with corresponding bearer to form an independent vowlel
    1.51 +	EIndicCodeGurBearerA = 15,
    1.52 +	EIndicCodeGurBearerU = 16,
    1.53 +	EIndicCodeGurBearerI = 17,
    1.54 +	EIndicCodeGurDependentVowelA = 18,
    1.55 +	EIndicCodeGurDependentVowelU = 19,
    1.56 +	EIndicCodeGurDependentVowelI = 20,
    1.57 +	EIndicCodeConsonantMalaChillu = 21,
    1.58 +	EIndicCodeConsonantMalaChilluNA = 22,
    1.59 +	EIndicCodeConsonantMalaRRA = 23
    1.60 +	};
    1.61 +	
    1.62 +struct TIndicCodeMapping
    1.63 +	{
    1.64 +	TInt16 iFirstCodeInRange;
    1.65 +	TInt16 iCodeType;	// From TIndicCodeType
    1.66 +	};
    1.67 +
    1.68 +/** Holds the types of all the symbols in the devanagari range, so that we can
    1.69 +work out where the syllable boundaries begin and end. */
    1.70 +static const TIndicCodeMapping KDevCodeMap[] =
    1.71 +	{
    1.72 +	{0, EIndicCodeOther},
    1.73 +	{0x901, EIndicCodeCombiningSign},
    1.74 +	{0x904, EIndicCodeIndependentVowel},
    1.75 +	{0x905, EIndicCodeIndependentVowelA},
    1.76 +	{0x906, EIndicCodeIndependentVowel},
    1.77 +	{0x915, EIndicCodeConsonant},
    1.78 +	{0x929, EIndicCodeNuktaConsonant},
    1.79 +	{0x92A, EIndicCodeConsonant},
    1.80 +	{0x931, EIndicCodeNuktaConsonant},
    1.81 +	{0x932, EIndicCodeConsonant},
    1.82 +	{0x934, EIndicCodeNuktaConsonant},
    1.83 +	{0x935, EIndicCodeConsonant},
    1.84 +	{0x93A, EIndicCodeOther},
    1.85 +	{0x93C, EIndicCodeNukta},
    1.86 +	{0x93D, EIndicCodeOther},
    1.87 +	{0x93E, EIndicCodeDependentVowel},
    1.88 +	{0x945, EIndicCodeDependentVowelCandraE},
    1.89 +	{0x946, EIndicCodeDependentVowel},
    1.90 +	{0x94D, EIndicCodeVirama},
    1.91 +	{0x94E, EIndicCodeOther},
    1.92 +	{0x951, EIndicCodeCombiningSign},
    1.93 +	{0x955, EIndicCodeConsonant},
    1.94 +	{0x958, EIndicCodeNuktaConsonant},
    1.95 +	{0x960, EIndicCodeIndependentVowel},
    1.96 +	{0x962, EIndicCodeDependentVowel},
    1.97 +	{0x964, EIndicCodeOther},
    1.98 +	{0x200D, EIndicCodeZWJ},
    1.99 +	{0x200E, EIndicCodeOther}
   1.100 +	};
   1.101 +	
   1.102 +/** Holds the types of all the symbols in the Kannada range, so that we can
   1.103 +work out where the syllable boundaries begin and end. */
   1.104 +static const TIndicCodeMapping KKanCodeMap[] =
   1.105 +	{
   1.106 +	{0, EIndicCodeOther},
   1.107 +	{0xC82, EIndicCodeCombiningSign},
   1.108 +	{0xC85, EIndicCodeIndependentVowel},
   1.109 +	{0xC95, EIndicCodeConsonant},
   1.110 +	{0xCB0, EIndicCodeConsonantKannadaBengaliRa},
   1.111 +	{0xCB1, EIndicCodeConsonant},
   1.112 +	{0xCB4, EIndicCodeOther},
   1.113 +	{0xCB5, EIndicCodeConsonant},
   1.114 +	{0xCBA, EIndicCodeOther},
   1.115 +	{0xCBC, EIndicCodeNukta},
   1.116 +	{0xCBD, EIndicCodeOther},
   1.117 +	{0xCBE, EIndicCodeDependentVowel},
   1.118 +	{0xCC5, EIndicCodeOther},
   1.119 +	{0xCC6, EIndicCodeDependentVowel},
   1.120 +	{0xCCD, EIndicCodeVirama},
   1.121 +	{0xCD5, EIndicCodeCombiningSign},
   1.122 +	{0xCDE, EIndicCodeConsonant},
   1.123 +	{0xCE0, EIndicCodeIndependentVowel},
   1.124 +	{0xCE2, EIndicCodeDependentVowel},
   1.125 +	{0xCE4, EIndicCodeOther},
   1.126 +	{0x200D, EIndicCodeZWJ},
   1.127 +	{0x200E, EIndicCodeOther}
   1.128 +	};
   1.129 +
   1.130 +/** Holds the types of all the symbols in the Gujarati range, so that we can
   1.131 +work out where the syllable boundaries begin and end. */
   1.132 +static const TIndicCodeMapping KGujCodeMap[] =
   1.133 +	{
   1.134 +	{0, EIndicCodeOther},
   1.135 +	{0xA81, EIndicCodeCombiningSign},
   1.136 +	{0xA85, EIndicCodeIndependentVowel},
   1.137 +	{0xA8E, EIndicCodeOther},
   1.138 +	{0xA8F, EIndicCodeIndependentVowel},
   1.139 +	{0xA92, EIndicCodeOther},
   1.140 +	{0xA93, EIndicCodeIndependentVowel},
   1.141 +	{0xA95, EIndicCodeConsonant},
   1.142 +	{0xAA9, EIndicCodeOther},
   1.143 +	{0xAAA, EIndicCodeConsonant},
   1.144 +	{0xAB1, EIndicCodeOther},
   1.145 +	{0xAB2, EIndicCodeConsonant},
   1.146 +	{0xAB4, EIndicCodeOther},
   1.147 +	{0xAB5, EIndicCodeConsonant},
   1.148 +	{0xABC, EIndicCodeNukta},
   1.149 +	{0xABD, EIndicCodeOther},
   1.150 +	{0xABE, EIndicCodeDependentVowel},
   1.151 +	{0xAC6, EIndicCodeOther},
   1.152 +	{0xAC7, EIndicCodeDependentVowel},
   1.153 +	{0xACA, EIndicCodeOther},
   1.154 +	{0xACB, EIndicCodeDependentVowel},
   1.155 +	{0xACD, EIndicCodeVirama},
   1.156 +	{0xACE, EIndicCodeOther},
   1.157 +	{0xAE0, EIndicCodeIndependentVowel},
   1.158 +	{0xAE2, EIndicCodeDependentVowel},
   1.159 +	{0xAE4, EIndicCodeOther},
   1.160 +	{0x200D, EIndicCodeZWJ},
   1.161 +	{0x200E, EIndicCodeOther}
   1.162 +	};
   1.163 +	
   1.164 +/** Holds the types of all the symbols in the Gurmukhi range, so that we can
   1.165 +work out where the syllable boundaries begin and end. */
   1.166 +static const TIndicCodeMapping KGurCodeMap[] =
   1.167 +	{
   1.168 +	{0, EIndicCodeOther},
   1.169 +	{0xA01, EIndicCodeCombiningSign},
   1.170 +	{0xA04, EIndicCodeOther},
   1.171 +	{0xA05, EIndicCodeGurBearerA},
   1.172 +	{0xA06, EIndicCodeIndependentVowel},
   1.173 +	{0xA0B, EIndicCodeOther},
   1.174 +	{0xA0F, EIndicCodeIndependentVowel},
   1.175 +	{0xA11, EIndicCodeOther},
   1.176 +	{0xA13, EIndicCodeIndependentVowel},
   1.177 +	{0xA15, EIndicCodeConsonant},
   1.178 +	{0xA29, EIndicCodeOther},
   1.179 +	{0xA2A, EIndicCodeConsonant},
   1.180 +	{0xA31, EIndicCodeOther},
   1.181 +	{0xA32, EIndicCodeConsonant},
   1.182 +	{0xA33, EIndicCodeNuktaConsonant},
   1.183 +	{0xA34, EIndicCodeOther},
   1.184 +	{0xA35, EIndicCodeConsonant},
   1.185 +	{0xA36, EIndicCodeNuktaConsonant},
   1.186 +	{0xA37, EIndicCodeOther},
   1.187 +	{0xA38, EIndicCodeConsonant},
   1.188 +	{0xA3A, EIndicCodeOther},
   1.189 +	{0xA3C, EIndicCodeNukta},
   1.190 +	{0xA3D, EIndicCodeOther},
   1.191 +	{0xA3E, EIndicCodeGurDependentVowelA},
   1.192 +	{0xA3F, EIndicCodeGurDependentVowelI},
   1.193 +	{0xA41, EIndicCodeGurDependentVowelU},
   1.194 +	{0xA43, EIndicCodeOther},
   1.195 +	{0xA47, EIndicCodeGurDependentVowelI},
   1.196 +	{0xA48, EIndicCodeGurDependentVowelA},
   1.197 +	{0xA49, EIndicCodeOther},
   1.198 +	{0xA4B, EIndicCodeGurDependentVowelU},
   1.199 +	{0xA4C, EIndicCodeGurDependentVowelA},
   1.200 +	{0xA4D, EIndicCodeVirama},
   1.201 +	{0xA4E, EIndicCodeOther},
   1.202 +	{0xA59, EIndicCodeNuktaConsonant},
   1.203 +	{0xA5C, EIndicCodeConsonant},
   1.204 +	{0xA5D, EIndicCodeOther},
   1.205 +	{0xA5E, EIndicCodeNuktaConsonant},
   1.206 +	{0xA5F, EIndicCodeOther},
   1.207 +	{0xA70, EIndicCodeCombiningSign},
   1.208 +	{0xA71, EIndicCodeCombiningSign},
   1.209 +	{0xA72, EIndicCodeGurBearerI},
   1.210 +	{0xA73, EIndicCodeGurBearerU},
   1.211 +	{0xA74, EIndicCodeOther},
   1.212 +	{0x200D, EIndicCodeZWJ},
   1.213 +	{0x200E, EIndicCodeOther}
   1.214 +	};
   1.215 +
   1.216 +/** Holds the types of all the symbols in the Bengali range, so that we can
   1.217 +work out where the syllable boundaries begin and end. */
   1.218 +static const TIndicCodeMapping KBenCodeMap[] =
   1.219 +	{
   1.220 +	{0, EIndicCodeOther},
   1.221 +	{0x981 , EIndicCodeCombiningSign},
   1.222 +	{0x985 , EIndicCodeIndependentVowel},
   1.223 +	{0x995 , EIndicCodeConsonant},
   1.224 +	{0x9B0 , EIndicCodeConsonantKannadaBengaliRa},
   1.225 +	{0x9B1 , EIndicCodeConsonant},
   1.226 +	{0x9BA , EIndicCodeOther},
   1.227 +	{0x9BC , EIndicCodeNukta},
   1.228 +	{0x9BD , EIndicCodeOther},
   1.229 +	{0x9BE , EIndicCodeDependentVowel},
   1.230 +	{0x9C9 , EIndicCodeOther},
   1.231 +	{0x9CB , EIndicCodeDependentVowel},
   1.232 +	{0x9CD , EIndicCodeVirama},
   1.233 +	{0x9CE , EIndicCodeOther},
   1.234 +	{0x9D7 , EIndicCodeDependentVowel},
   1.235 +	{0x9DC , EIndicCodeConsonant},
   1.236 +	{0x9E0 , EIndicCodeIndependentVowel},
   1.237 +	{0x9E2 , EIndicCodeDependentVowel},
   1.238 +	{0x9E4 , EIndicCodeOther},
   1.239 +	{0x200D, EIndicCodeZWJ},
   1.240 +	{0x200E, EIndicCodeOther}
   1.241 +	};
   1.242 +
   1.243 +/** Holds the types of all the symbols in the Tamil range, so that we can
   1.244 +work out where the syllable boundaries begin and end. */
   1.245 +static const TIndicCodeMapping KTamCodeMap[] =
   1.246 +	{
   1.247 +	{0, EIndicCodeOther},
   1.248 +	{0xB82 , EIndicCodeCombiningSign},
   1.249 +	{0xB83 , EIndicCodeIndependentVowel},
   1.250 +	{0xB84 , EIndicCodeOther},
   1.251 +	{0xB85 , EIndicCodeIndependentVowel},
   1.252 +	{0xB92 , EIndicCodeIndependentVowelA},
   1.253 +	{0xB93 , EIndicCodeIndependentVowel},
   1.254 +	{0xB95 , EIndicCodeConsonant},
   1.255 +	{0xBBE , EIndicCodeSplitVowel2},
   1.256 +	{0xBBF , EIndicCodeDependentVowel},
   1.257 +	{0xBC6 , EIndicCodeSplitVowel1},
   1.258 +	{0xBC8 , EIndicCodeDependentVowel},
   1.259 +	{0xBCD , EIndicCodeVirama},
   1.260 +	{0xBCE , EIndicCodeOther},
   1.261 +	{0xBD7 , EIndicCodeTamilLengthMarkAU},
   1.262 +	{0xBE4 , EIndicCodeOther},
   1.263 +	{0x200D, EIndicCodeZWJ},
   1.264 +	{0x200E, EIndicCodeOther}
   1.265 +	};
   1.266 +
   1.267 +/** Holds the types of all the symbols in the Telugu range, so that we can
   1.268 +work out where the syllable boundaries begin and end. */
   1.269 +static const TIndicCodeMapping KTelCodeMap[] =
   1.270 +	{
   1.271 +	{0, EIndicCodeOther},
   1.272 +	{0xC01, EIndicCodeCombiningSign},
   1.273 +	{0xC04, EIndicCodeOther},
   1.274 +	{0xC05, EIndicCodeIndependentVowel},
   1.275 +	{0xC15, EIndicCodeConsonant},
   1.276 +	{0xC3A, EIndicCodeOther},
   1.277 +	{0xC3E, EIndicCodeDependentVowel},
   1.278 +	{0xC4D, EIndicCodeVirama},
   1.279 +	{0xC4E, EIndicCodeOther},
   1.280 +	{0xC55, EIndicCodeDependentVowel},
   1.281 +	{0xC57, EIndicCodeOther},
   1.282 +	{0xC60, EIndicCodeIndependentVowel},
   1.283 +	{0xC62, EIndicCodeOther}
   1.284 +	};
   1.285 +
   1.286 +/** Holds the types of all the symbols in the Malayalam range, so that we can
   1.287 +work out where the syllable boundaries begin and end. */
   1.288 +static const TIndicCodeMapping KMalaCodeMap[] =
   1.289 +	{
   1.290 +	{0, EIndicCodeOther}, // NOT USED D00 - D01
   1.291 +	{0xD02, EIndicCodeCombiningSign}, // Modifiers
   1.292 +	{0xD04, EIndicCodeOther}, // NOT USED
   1.293 +	{0xD05, EIndicCodeIndependentVowel},
   1.294 +//	{0xD0D, EIndicCodeOther}, // Reserved
   1.295 +//	{0xD0E, EIndicCodeIndependentVowel},
   1.296 +//	{0xD11, EIndicCodeOther}, // Reserved
   1.297 +//	{0xD12, EIndicCodeIndependentVowel},
   1.298 +	{0xD15, EIndicCodeConsonant},
   1.299 +	{0xD23, EIndicCodeConsonantMalaChillu}, // NNA
   1.300 +	{0xD24, EIndicCodeConsonant},
   1.301 +	{0xD28, EIndicCodeConsonantMalaChilluNA}, // NA
   1.302 +	{0xD29, EIndicCodeOther}, // Reserved
   1.303 +	{0xD2A, EIndicCodeConsonant},
   1.304 +	{0xD30, EIndicCodeConsonantMalaChillu}, // RA
   1.305 +	{0xD31, EIndicCodeConsonantMalaRRA}, // RRA
   1.306 +	{0xD32, EIndicCodeConsonantMalaChillu}, // LA,  LLA
   1.307 +	{0xD34, EIndicCodeConsonant},
   1.308 +	{0xD3A, EIndicCodeOther}, // NOT USED D3A - D3D
   1.309 +	{0xD3E, EIndicCodeSplitVowel2},
   1.310 +	{0xD3F, EIndicCodeDependentVowel},
   1.311 +//	{0xD44, EIndicCodeOther}, // Reserved D44 - D45
   1.312 +	{0xD46, EIndicCodeSplitVowel1},
   1.313 +	{0xD48, EIndicCodeDependentVowel},
   1.314 +//	{0xD49, EIndicCodeOther}, // Reserved D49
   1.315 +//	{0xD4A, EIndicCodeDependentVowel},
   1.316 +	{0xD4D, EIndicCodeVirama},
   1.317 +	{0xD4E, EIndicCodeOther}, //Reserved D4E - D56
   1.318 +	{0xD57, EIndicCodeTamilLengthMarkAU}, // EIndicCodeDependentVowel for Telugu ???
   1.319 +	{0xD58, EIndicCodeOther}, // NOT USED D58 - D5F
   1.320 +	{0xD60, EIndicCodeIndependentVowel}, // RR, LL
   1.321 +	{0xD62, EIndicCodeOther}, // NOT USED D62 - D65, digits D66 - D6F	
   1.322 +	{0x200D, EIndicCodeZWJ},
   1.323 +	{0x200E, EIndicCodeOther}
   1.324 +	};
   1.325 +
   1.326 +/* Holds all parameters specific to scripts */
   1.327 +struct TIndicScriptProcessorParameters{
   1.328 +	TUint32 iLanguageCode;
   1.329 +	TUint32 iScriptCode;
   1.330 +	TUint iUCLow;
   1.331 +	TUint iUCHigh;
   1.332 +	TUint iMapLen;
   1.333 +	const TIndicCodeMapping *iCodeMap;
   1.334 +};
   1.335 +
   1.336 +static const TIndicScriptProcessorParameters KIndicDevParameters = {
   1.337 +	0x48494E20, //KHindiLanguageCode,	
   1.338 +	0x64657661, //KDevanagariScriptCode,	
   1.339 +	0x0900, //KDevLow,
   1.340 +	0x0970, //KDevHigh,	
   1.341 +	sizeof(KDevCodeMap)/sizeof(KDevCodeMap[0]),
   1.342 +	KDevCodeMap
   1.343 +};
   1.344 +
   1.345 +static const TIndicScriptProcessorParameters KIndicKanParameters = {
   1.346 +	0x4B414E20, //KKannadaLanguageCode,	
   1.347 +	0x6B6E6461, //KKannadaScriptCode,	
   1.348 +	0x0C80, //KKanLow,
   1.349 +	0x0CFF, //KKanHigh,	
   1.350 +	sizeof(KKanCodeMap)/sizeof(KKanCodeMap[0]),
   1.351 +	KKanCodeMap
   1.352 +};
   1.353 +
   1.354 +static const TIndicScriptProcessorParameters KIndicGujParameters = {
   1.355 +	0x47554A20, //KGujaratiLanguageCode,	
   1.356 +	0x67756A72, //KGujaratiScriptCode,	
   1.357 +	0x0A80, //KGujLow,
   1.358 +	0x0AFF, //KGujHigh,	
   1.359 +	sizeof(KGujCodeMap)/sizeof(KGujCodeMap[0]),
   1.360 +	KGujCodeMap
   1.361 +};
   1.362 +
   1.363 +static const TIndicScriptProcessorParameters KIndicBenParameters = {
   1.364 +	0x42454E20, //KBengaliLanguageCode,	
   1.365 +	0x62656E67, //KBengaliScriptCode,	
   1.366 +	0x0980, //KBenLow,
   1.367 +	0x09FF, //KBenHigh,	
   1.368 +	sizeof(KBenCodeMap)/sizeof(KBenCodeMap[0]),
   1.369 +	KBenCodeMap
   1.370 +};
   1.371 +
   1.372 +static const TIndicScriptProcessorParameters KIndicTamParameters = {
   1.373 +	0x54414D20, //KTamilLanguageCode,	
   1.374 +	0x74616D6C, //KTamilScriptCode,
   1.375 +	0x0B80, //KTamLow,
   1.376 +	0x0BFF, //KTamHigh,	
   1.377 +	sizeof(KTamCodeMap)/sizeof(KTamCodeMap[0]),
   1.378 +	KTamCodeMap
   1.379 +};
   1.380 +
   1.381 +static const TIndicScriptProcessorParameters KIndicTelParameters = {
   1.382 +	0x54454C20, //KTeluguLanguageCode,	
   1.383 +	0x74656C75, //KTeluguScriptCode,
   1.384 +	0x0C00, //KTelLow,
   1.385 +	0x0C7F, //KTelHigh,	
   1.386 +	sizeof(KTelCodeMap)/sizeof(KTelCodeMap[0]),
   1.387 +	KTelCodeMap
   1.388 +};
   1.389 +
   1.390 +static const TIndicScriptProcessorParameters KIndicGurParameters = {
   1.391 +	0x00000000,	//KGurmukhiLanguageCode,
   1.392 +	0x67757275, //KGurmukhiScriptCode,
   1.393 +	0x0A00, //KGurLow,
   1.394 +	0x0A7F, //KGurHigh,
   1.395 +	sizeof(KGurCodeMap)/sizeof(KGurCodeMap[0]),
   1.396 +	KGurCodeMap
   1.397 +};
   1.398 +
   1.399 +static const TIndicScriptProcessorParameters KIndicMalParameters = {
   1.400 +	0x4D4C5220, //KMalayalamLanguageCode,	
   1.401 +	0x6D6C796D, //KMalayalamScriptCode,
   1.402 +	0x0D00, //KMalaLow,
   1.403 +	0x0D7F, //KMalaHigh,	
   1.404 +	sizeof(KMalaCodeMap)/sizeof(KMalaCodeMap[0]),
   1.405 +	KMalaCodeMap
   1.406 +};
   1.407 +
   1.408 +/** This is the default glyph selector class for Devanagari characters in the
   1.409 +range 0x0900..0x097F.
   1.410 +@internalComponent
   1.411 +*/
   1.412 +class GlyphSelector_Devanagari
   1.413 +	{
   1.414 +public:
   1.415 +	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
   1.416 +	};
   1.417 +
   1.418 +
   1.419 +/** This is the default glyph selector class for Kannada characters in the
   1.420 +range 0x0C80..0x0CFF.
   1.421 +@internalComponent
   1.422 +*/
   1.423 +class GlyphSelector_Kannada
   1.424 +	{
   1.425 +public:
   1.426 +	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
   1.427 +	};
   1.428 +	
   1.429 +
   1.430 +/** This is the default glyph selector class for Gujarati characters in the
   1.431 +range 0x0A80..0x0AFF.
   1.432 +@internalComponent
   1.433 +*/
   1.434 +class GlyphSelector_Gujarati
   1.435 +	{
   1.436 +public:
   1.437 +	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
   1.438 +	};
   1.439 +	
   1.440 +/** This is the default glyph selector class for Bengali characters in the
   1.441 +range 0x0980..0x09FF.
   1.442 +@internalComponent
   1.443 +*/
   1.444 +class GlyphSelector_Bengali
   1.445 +	{
   1.446 +public:
   1.447 +	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
   1.448 +	};
   1.449 +	
   1.450 +/** This is the default glyph selector class for Tamil characters in the
   1.451 +range 0x0B80..0x0BFF.
   1.452 +@internalComponent
   1.453 +*/
   1.454 +class GlyphSelector_Tamil
   1.455 +	{
   1.456 +public:
   1.457 +	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
   1.458 +	};
   1.459 +
   1.460 +/** This is the default glyph selector class for Telugu characters in the
   1.461 +range 0x0C00..0x0C7F.
   1.462 +@internalComponent
   1.463 +*/
   1.464 +class GlyphSelector_Telugu
   1.465 +	{
   1.466 +public:
   1.467 +	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
   1.468 +	};
   1.469 +
   1.470 +/** This is the default glyph selector class for Gurmukhi characters in the
   1.471 +range 0x0A00..0x0A7F.
   1.472 +@internalComponent
   1.473 +*/
   1.474 +class GlyphSelector_Gurmukhi
   1.475 +	{
   1.476 +public:
   1.477 +	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
   1.478 +	};
   1.479 +
   1.480 +/** This is the default glyph selector class for Malayalam characters in the
   1.481 +range 0x0D00..0x0D7F.
   1.482 +@internalComponent
   1.483 +*/
   1.484 +class GlyphSelector_Malayalam
   1.485 +	{
   1.486 +public:
   1.487 +	static TBool Process(TGlyphSelectionState& aGss, RShapeInfo&);
   1.488 +	};
   1.489 +
   1.490 +#endif