PangoGlyph *glyphList,
PangoliteGlyph *glyphList,
GetBaseConsGlyphs(gunichar2  *cluster,                  gint       numCoreCons,                  PangoGlyph *glyphList,                  gint       *nGlyphs){  int i, j, delta, nMin, nMaxRuleCt, ruleIdx;  gboolean  StillMatching;  gunichar2 temp_out;  gint      tmpCt = *nGlyphs;  i = 0;  while (i < numCoreCons) {        nMaxRuleCt = GetDvngRuleCt(cluster[i]);        while (nMaxRuleCt) {      nMin = MIN(nMaxRuleCt, numCoreCons);            ruleIdx = 0;NotFound:      j = delta = 0;      StillMatching = FALSE;      while (((delta < nMin) || sunGlyphTbl[ruleIdx].ISCII[j]) &&             (ruleIdx < MAP_SIZE) ) {        StillMatching = TRUE;        if ((delta < nMin) && (j < MAX_CORE_CONS) &&            (cluster[i + delta] != sunGlyphTbl[ruleIdx].ISCII[j])) {          ruleIdx++;          goto NotFound;        }        delta++;        j++;      }            if (StillMatching) /* Found */        break;      else        nMaxRuleCt--;    }        i += nMin;        /* Can't find entry in the table */    if ((StillMatching == FALSE) || (ruleIdx >= MAP_SIZE)) {      for (j = 0; j < numCoreCons; j++)        glyphList[tmpCt++] = PANGO_MOZ_MAKE_GLYPH(cluster[j]);    }    else if (((tmpCt > 0) && IsKern(glyphList[tmpCt - 1])) &&             IsMatraAtStem(sunGlyphTbl[ruleIdx].ISFOC[0])) {      temp_out = glyphList[tmpCt - 1];            for (j=0; sunGlyphTbl[ruleIdx].ISFOC[j]; j++)        glyphList[tmpCt - 1] = PANGO_MOZ_MAKE_GLYPH(sunGlyphTbl[ruleIdx].ISFOC[j]);              glyphList[tmpCt++] = PANGO_MOZ_MAKE_GLYPH(temp_out);    }    else {      for (j=0; sunGlyphTbl[ruleIdx].ISFOC[j]; j++)        glyphList[tmpCt++] = PANGO_MOZ_MAKE_GLYPH(sunGlyphTbl[ruleIdx].ISFOC[j]);    }  }  *nGlyphs = tmpCt;}