Module: wine Branch: master Commit: 7f0b49fd9d01039ef0bf1c43cd0ee57eb3f32943 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7f0b49fd9d01039ef0bf1c43cd...
Author: Aric Stewart aric@codeweavers.com Date: Wed Jun 15 09:54:36 2011 -0500
usp10: Apply 'pstf' to the Indic syllable.
---
dlls/usp10/shape.c | 37 +++++++++++++++++++------------------ 1 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/dlls/usp10/shape.c b/dlls/usp10/shape.c index 98a5929..c0290cb 100644 --- a/dlls/usp10/shape.c +++ b/dlls/usp10/shape.c @@ -376,7 +376,6 @@ static OPENTYPE_FEATURE_RECORD sinhala_features[] = { /* Base forms */ { MS_MAKE_TAG('v','a','t','u'), 1}, - { MS_MAKE_TAG('p','s','t','f'), 1}, /* Presentation forms */ { MS_MAKE_TAG('b','l','w','s'), 1}, { MS_MAKE_TAG('a','b','v','s'), 1}, @@ -450,7 +449,6 @@ static const char* required_bengali_features[] = static OPENTYPE_FEATURE_RECORD bengali_features[] = { /* Base forms */ - { MS_MAKE_TAG('p','s','t','f'), 1}, { MS_MAKE_TAG('v','a','t','u'), 1}, { MS_MAKE_TAG('c','j','c','t'), 1}, /* Presentation forms */ @@ -484,7 +482,6 @@ static const char* required_gurmukhi_features[] = static OPENTYPE_FEATURE_RECORD gurmukhi_features[] = { /* Base forms */ - { MS_MAKE_TAG('p','s','t','f'), 1}, { MS_MAKE_TAG('v','a','t','u'), 1}, { MS_MAKE_TAG('c','j','c','t'), 1}, /* Presentation forms */ @@ -516,7 +513,6 @@ static const char* required_oriya_features[] = static OPENTYPE_FEATURE_RECORD oriya_features[] = { /* Base forms */ - { MS_MAKE_TAG('p','s','t','f'), 1}, { MS_MAKE_TAG('c','j','c','t'), 1}, /* Presentation forms */ { MS_MAKE_TAG('p','r','e','s'), 1}, @@ -575,7 +571,6 @@ static const char* required_telugu_features[] = static OPENTYPE_FEATURE_RECORD telugu_features[] = { /* Base forms */ - { MS_MAKE_TAG('p','s','t','f'), 1}, { MS_MAKE_TAG('c','j','c','t'), 1}, /* Presentation forms */ { MS_MAKE_TAG('p','r','e','s'), 1}, @@ -614,7 +609,7 @@ static const ScriptShapeData ShapingData[] = {{ standard_features, 2}, NULL, "cyrl", "", NULL, NULL}, {{ standard_features, 2}, NULL, "armn", "", NULL, NULL}, {{ standard_features, 2}, NULL, "geor", "", NULL, NULL}, - {{ sinhala_features, 5}, NULL, "sinh", "", ContextualShape_Sinhala, NULL}, + {{ sinhala_features, 4}, NULL, "sinh", "", ContextualShape_Sinhala, NULL}, {{ tibetan_features, 2}, NULL, "tibt", "", NULL, ShapeCharGlyphProp_Tibet}, {{ tibetan_features, 2}, NULL, "tibt", "", NULL, ShapeCharGlyphProp_Tibet}, {{ tibetan_features, 2}, NULL, "phag", "", ContextualShape_Phags_pa, ShapeCharGlyphProp_Thai}, @@ -624,23 +619,23 @@ static const ScriptShapeData ShapingData[] = {{ thai_features, 1}, required_lao_features, "lao", "", NULL, ShapeCharGlyphProp_Thai}, {{ devanagari_features, 8}, required_devanagari_features, "deva", "dev2", ContextualShape_Devanagari, ShapeCharGlyphProp_Devanagari}, {{ devanagari_features, 8}, required_devanagari_features, "deva", "dev2", ContextualShape_Devanagari, ShapeCharGlyphProp_Devanagari}, - {{ bengali_features, 9}, required_bengali_features, "beng", "bng2", ContextualShape_Bengali, ShapeCharGlyphProp_Bengali}, - {{ bengali_features, 9}, required_bengali_features, "beng", "bng2", ContextualShape_Bengali, ShapeCharGlyphProp_Bengali}, - {{ gurmukhi_features, 9}, required_gurmukhi_features, "guru", "gur2", ContextualShape_Gurmukhi, ShapeCharGlyphProp_Gurmukhi}, - {{ gurmukhi_features, 9}, required_gurmukhi_features, "guru", "gur2", ContextualShape_Gurmukhi, ShapeCharGlyphProp_Gurmukhi}, + {{ bengali_features, 8}, required_bengali_features, "beng", "bng2", ContextualShape_Bengali, ShapeCharGlyphProp_Bengali}, + {{ bengali_features, 8}, required_bengali_features, "beng", "bng2", ContextualShape_Bengali, ShapeCharGlyphProp_Bengali}, + {{ gurmukhi_features, 8}, required_gurmukhi_features, "guru", "gur2", ContextualShape_Gurmukhi, ShapeCharGlyphProp_Gurmukhi}, + {{ gurmukhi_features, 8}, required_gurmukhi_features, "guru", "gur2", ContextualShape_Gurmukhi, ShapeCharGlyphProp_Gurmukhi}, {{ devanagari_features, 8}, required_devanagari_features, "gujr", "gjr2", ContextualShape_Gujarati, ShapeCharGlyphProp_Gujarati}, {{ devanagari_features, 8}, required_devanagari_features, "gujr", "gjr2", ContextualShape_Gujarati, ShapeCharGlyphProp_Gujarati}, {{ devanagari_features, 8}, required_devanagari_features, "gujr", "gjr2", ContextualShape_Gujarati, ShapeCharGlyphProp_Gujarati}, - {{ oriya_features, 8}, required_oriya_features, "orya", "ory2", ContextualShape_Oriya, ShapeCharGlyphProp_Oriya}, - {{ oriya_features, 8}, required_oriya_features, "orya", "ory2", ContextualShape_Oriya, ShapeCharGlyphProp_Oriya}, + {{ oriya_features, 7}, required_oriya_features, "orya", "ory2", ContextualShape_Oriya, ShapeCharGlyphProp_Oriya}, + {{ oriya_features, 7}, required_oriya_features, "orya", "ory2", ContextualShape_Oriya, ShapeCharGlyphProp_Oriya}, {{ tamil_features, 6}, required_tamil_features, "taml", "tam2", ContextualShape_Tamil, ShapeCharGlyphProp_Tamil}, {{ tamil_features, 6}, required_tamil_features, "taml", "tam2", ContextualShape_Tamil, ShapeCharGlyphProp_Tamil}, - {{ telugu_features, 8}, required_telugu_features, "telu", "tel2", ContextualShape_Telugu, ShapeCharGlyphProp_Telugu}, - {{ telugu_features, 8}, required_telugu_features, "telu", "tel2", ContextualShape_Telugu, ShapeCharGlyphProp_Telugu}, - {{ telugu_features, 8}, required_telugu_features, "knda", "knd2", ContextualShape_Kannada, ShapeCharGlyphProp_Kannada}, - {{ telugu_features, 8}, required_telugu_features, "knda", "knd2", ContextualShape_Kannada, ShapeCharGlyphProp_Kannada}, - {{ telugu_features, 8}, required_telugu_features, "mlym", "mlm2", ContextualShape_Malayalam, ShapeCharGlyphProp_Malayalam}, - {{ telugu_features, 8}, required_telugu_features, "mlym", "mlm2", ContextualShape_Malayalam, ShapeCharGlyphProp_Malayalam}, + {{ telugu_features, 7}, required_telugu_features, "telu", "tel2", ContextualShape_Telugu, ShapeCharGlyphProp_Telugu}, + {{ telugu_features, 7}, required_telugu_features, "telu", "tel2", ContextualShape_Telugu, ShapeCharGlyphProp_Telugu}, + {{ telugu_features, 7}, required_telugu_features, "knda", "knd2", ContextualShape_Kannada, ShapeCharGlyphProp_Kannada}, + {{ telugu_features, 7}, required_telugu_features, "knda", "knd2", ContextualShape_Kannada, ShapeCharGlyphProp_Kannada}, + {{ telugu_features, 7}, required_telugu_features, "mlym", "mlm2", ContextualShape_Malayalam, ShapeCharGlyphProp_Malayalam}, + {{ telugu_features, 7}, required_telugu_features, "mlym", "mlm2", ContextualShape_Malayalam, ShapeCharGlyphProp_Malayalam}, };
static INT GSUB_is_glyph_covered(LPCVOID table , UINT glyph) @@ -2116,6 +2111,7 @@ static void ShapeIndicSyllables(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *psa, const GSUB_Feature *nukt = load_GSUB_feature(hdc, psa, psc, "nukt"); const GSUB_Feature *akhn = load_GSUB_feature(hdc, psa, psc, "akhn"); const GSUB_Feature *rkrf = load_GSUB_feature(hdc, psa, psc, "rkrf"); + const GSUB_Feature *pstf = load_GSUB_feature(hdc, psa, psc, "pstf"); BOOL rphf = (load_GSUB_feature(hdc, psa, psc, "rphf") != NULL); BOOL pref = (load_GSUB_feature(hdc, psa, psc, "pref") != NULL); BOOL blwf = (load_GSUB_feature(hdc, psa, psc, "blwf") != NULL); @@ -2157,6 +2153,11 @@ static void ShapeIndicSyllables(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *psa, Apply_Indic_PostBase(hdc, psc, psa, pwChars, cChars, &syllables[c], pwOutGlyphs, pcGlyphs, pwLogClust, lexical, &glyph_indexs, "blwf"); if (half) Apply_Indic_Half(hdc, psc, psa, pwChars, cChars, &syllables[c], pwOutGlyphs, pcGlyphs, pwLogClust, lexical, &glyph_indexs); + if (pstf) + { + TRACE("applying feature pstf\n"); + Apply_Indic_BasicForm(hdc, psc, psa, pwChars, cChars, &syllables[c], pwOutGlyphs, pcGlyphs, pwLogClust, lexical, &glyph_indexs, pstf); + }
overall_shift += glyph_indexs.end - old_end; }