From 8d3ef335024d3e1d3541d0f5b5ac534b5fbf3630 Mon Sep 17 00:00:00 2001 From: handa Date: Thu, 27 Nov 2008 02:08:18 +0000 Subject: [PATCH] (setup_lookup_indices): New arg LangSys. (OTF_drive_gsub_internal, OTF_drive_gpos): Adjusted for the above change. --- src/otfdrive.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/otfdrive.c b/src/otfdrive.c index 3dc6eda..e843967 100644 --- a/src/otfdrive.c +++ b/src/otfdrive.c @@ -204,6 +204,7 @@ get_langsys (OTF_ScriptList *script_list, static int setup_lookup_indices (OTF_LookupList *LookupList, OTF_FeatureList *FeatureList, + OTF_LangSys *LangSys, const char *features, int *lookup_indices) { int i, j, n = 0; @@ -222,13 +223,17 @@ setup_lookup_indices (OTF_LookupList *LookupList, OTF_FeatureList *FeatureList, if (*features == '*') { /* Consume all remaining features. */ - for (i = 0; i < FeatureList->FeatureCount; i++) - if (! feature_table[i]) - { - feature = FeatureList->Feature + i; - for (j = 0; j < feature->LookupCount; j++) - lookup_indices[n++] = feature->LookupListIndex[j]; - } + for (i = 0; i < LangSys->FeatureCount; i++) + { + int index = LangSys->FeatureIndex[i]; + + if (! feature_table[index]) + { + feature = FeatureList->Feature + index; + for (j = 0; j < feature->LookupCount; j++) + lookup_indices[n++] = feature->LookupListIndex[j]; + } + } break; } @@ -242,9 +247,9 @@ setup_lookup_indices (OTF_LookupList *LookupList, OTF_FeatureList *FeatureList, for (; i < 4; i++) tagname[i] = '\0'; tag = OTF_tag (tagname); - for (i = 0; i < FeatureList->FeatureCount; i++) + for (i = 0; i < LangSys->FeatureCount; i++) { - feature = FeatureList->Feature + i; + feature = FeatureList->Feature + LangSys->FeatureIndex[i]; if (tag == feature->FeatureTag) { if (feature_table[i]) @@ -1389,7 +1394,7 @@ OTF_drive_gsub_internal (OTF *otf, OTF_GlyphString *gstring, * (gsub->FeatureList.FeatureCount + 1)); if (! lookup_indices) OTF_ERROR (OTF_ERROR_MEMORY, " feature list"); - n = setup_lookup_indices (&gsub->LookupList, &gsub->FeatureList, + n = setup_lookup_indices (&gsub->LookupList, &gsub->FeatureList, LangSys, features, lookup_indices); if (n < 0) return errret; @@ -1466,7 +1471,7 @@ OTF_drive_gpos (OTF *otf, OTF_GlyphString *gstring, * (gpos->FeatureList.FeatureCount + 1)); if (! lookup_indices) OTF_ERROR (OTF_ERROR_MEMORY, " feature list"); - n = setup_lookup_indices (&gpos->LookupList, &gpos->FeatureList, + n = setup_lookup_indices (&gpos->LookupList, &gpos->FeatureList, LangSys, features, lookup_indices); if (n < 0) return errret; -- 1.7.10.4