GetBaseConsGlyphs(cluster+2, nChars - 3, &gLst[nGlyphs], &nGlyphs);
GetBaseConsGlyphs(cluster+2, nChars - 3, gLst, &nGlyphs);
get_adjusted_glyphs_list(DvngFontInfo *fontInfo,                         gunichar2    *cluster,                         gint         nChars,                         PangoGlyph   *gLst,                         StateType    *DvngClusterState){  int i, k, len;  gint      nGlyphs = 0;  gunichar2 dummy;    switch (*DvngClusterState) {  case St1:    if (IsDvngCharCls(cluster[0], _IM)) {      GetBaseConsGlyphs(cluster, nChars, gLst, &nGlyphs);      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF7C0);    }    else {      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF7C0);      GetBaseConsGlyphs(cluster, nChars, &gLst[nGlyphs], &nGlyphs);    }    break;    case St2:    case St3:    case St4:    case St5:    case St6:      GetBaseConsGlyphs(cluster, nChars, &gLst[nGlyphs], &nGlyphs);      break;          case St7:      if (IsDvngCharCls(cluster[nChars - 1], _UP)) {        if (IsDvngCharCls(cluster[nChars - 2], _RM))          GetBaseConsGlyphs(cluster, nChars - 2, &gLst[nGlyphs], &nGlyphs);        if (IsDvngCharCls(cluster[nChars - 2], _RM)) {          if (IsDvngCharCls(cluster[nChars - 2], _II_M))            gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF81B);          else if (IsDvngCharCls(cluster[nChars - 2], _AYE_M)) {            dummy = gLst[nGlyphs - 1];            gLst[nGlyphs - 1] = PANGO_MOZ_MAKE_GLYPH(0xF82D);            gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(dummy);          }          else if (IsDvngCharCls(cluster[nChars - 2], _EE_M))            gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF824);                    else if (IsDvngCharCls(cluster[nChars - 2], _EY_M))            gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF827);          else if (IsDvngCharCls(cluster[nChars - 2], _AI_M))            gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF82A);          else if (IsDvngCharCls(cluster[nChars - 2], _AWE_M)) {            gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x093E);            gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF82D);          }        }        else if (IsDvngCharCls(cluster[nChars - 2], _O_M)) {          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x093E);          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF824);        }        else if (IsDvngCharCls(cluster[nChars - 2], _OW1_M)) {          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x093E);          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF827);        }        else if (IsDvngCharCls(cluster[nChars - 2], _OW2_M)) {          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x093E);           gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF82A);        }      }      else        GetBaseConsGlyphs(cluster, nChars, &gLst[nGlyphs], &nGlyphs);      break;    case St8:      GetBaseConsGlyphs(cluster, nChars - 1, &gLst[nGlyphs], &nGlyphs);      if (IsKern(gLst[nGlyphs - 1])) {        dummy = gLst[nGlyphs - 1];        gLst[nGlyphs - 1] = PANGO_MOZ_MAKE_GLYPH(cluster[nChars - 1]);        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(dummy);      }      else        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(cluster[nChars - 1]);      break;          case St9:      if (IsDvngCharCls(cluster[0], _MS))        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x093F);      else        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF817);              GetBaseConsGlyphs(cluster, nChars - 1, &gLst[nGlyphs], &nGlyphs);      break;  case St10:    if (IsDvngCharCls(cluster[0], _MS))      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF814);    else      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF818);    GetBaseConsGlyphs(cluster, nChars - 2, &gLst[nGlyphs], &nGlyphs);    break;      case St11:    GetBaseConsGlyphs(cluster, nChars, &gLst[nGlyphs], &nGlyphs);    break;      case St12:    gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x0930);    gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF83A);    break;      case St13:    gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x0930);    gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x094D);    gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF83A);    break;      case St14:        GetBaseConsGlyphs(cluster+2, nChars - 2, &gLst[nGlyphs], &nGlyphs);    if (IsKern(gLst[nGlyphs - 1])) {      dummy = gLst[nGlyphs - 1];      gLst[nGlyphs - 1] = PANGO_MOZ_MAKE_GLYPH(0xF812);      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(dummy);    }    else      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF812);    break;      case St15:        GetBaseConsGlyphs(cluster+2, nChars - 3, &gLst[nGlyphs], &nGlyphs);    if (IsKern(gLst[nGlyphs - 1])) {            dummy = gLst[nGlyphs - 2];      gLst[nGlyphs - 2] = PANGO_MOZ_MAKE_GLYPH(0xF812);      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x094D);      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(dummy);    }    else {      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF812);      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x094D);    }    break;      case St16:    if (IsDvngCharCls(cluster[nChars - 1], _RM))      GetBaseConsGlyphs(cluster+2, nChars - 3, &gLst[nGlyphs], &nGlyphs);    else      GetBaseConsGlyphs(cluster+2, nChars - 2, &gLst[nGlyphs], &nGlyphs);    if (IsDvngCharCls(cluster[nChars - 1], ~(_RM))){      if (IsKern(gLst[nGlyphs - 1])) {        dummy = gLst[nGlyphs - 1];        gLst[nGlyphs - 1] = PANGO_MOZ_MAKE_GLYPH(0xF812);        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(dummy);      }      else        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF812);    }    else {      if (IsDvngCharCls(cluster[nChars - 1], _II_M))        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF81C);      else if (IsDvngCharCls(cluster[nChars - 1], _EY_M))        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF828);      else if (IsDvngCharCls(cluster[nChars -1], _AI_M))        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF82B);      else if (IsDvngCharCls(cluster[nChars - 1], _OW1_M)) {        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x093E);        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF828);      }      else if (IsDvngCharCls(cluster[nChars - 1], _OW2_M)) {        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x093E);        gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF82B);      }    }    break;      case St17:    if (IsDvngCharCls(cluster[nChars - 1], _UP)) {      if (IsDvngCharCls(cluster[nChars - 2], _RM))        GetBaseConsGlyphs(cluster+2, nChars - 4, &gLst[nGlyphs], &nGlyphs);      else        GetBaseConsGlyphs(cluster+2, nChars - 3, &gLst[nGlyphs], &nGlyphs);      if (IsDvngCharCls(cluster[nChars - 2], ~(_RM))) {        if (IsKern(gLst[nGlyphs - 1])) {          dummy = gLst[nGlyphs - 1];          gLst[nGlyphs - 1] = PANGO_MOZ_MAKE_GLYPH(0xF813);          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(dummy);        }        else          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF813);      }      else {        if (IsDvngCharCls(cluster[nChars - 2], _II_M))          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF81D);        else if (IsDvngCharCls(cluster[nChars - 2], _EY_M))          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF829);        else if (IsDvngCharCls(cluster[nChars - 2], _AI_M))          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF82C);        else if (IsDvngCharCls(cluster[nChars - 2], _OW1_M)) {          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x093E);          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF829);        }        else if (IsDvngCharCls(cluster[nChars - 2], _OW2_M)) {          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0x093E);          gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF82C);        }      } /* ? else GetBaseConsGlyphs(); */    break;      case St18:    GetBaseConsGlyphs(cluster-2, nChars-3, &gLst[nGlyphs], &nGlyphs);    if (IsKern(gLst[nGlyphs - 1])) {      dummy = gLst[nGlyphs - 1];      gLst[nGlyphs - 1] = PANGO_MOZ_MAKE_GLYPH(0xF813);      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(dummy);    }    else      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF813);    break;      case St19:    if (IsDvngCharCls(cluster[0], _MS))      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF815);    else      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF819);    GetBaseConsGlyphs(cluster+2, nChars-3, &gLst[nGlyphs], &nGlyphs);    break;      case St20:    if (IsDvngCharCls(cluster[0], _MS))      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF816);    else      gLst[nGlyphs++] = PANGO_MOZ_MAKE_GLYPH(0xF81A);    GetBaseConsGlyphs(cluster+2, nChars - 4, &gLst[nGlyphs], &nGlyphs);    break;    }  }  return nGlyphs;}