static boolean matches ( GlyphSubstitutionState ss, GlyphClassTable cdt, int[] classes, int offset, int[] rv ) {
if ( ( cdt == null ) || ( classes == null ) || ( classes.length == 0 ) ) {
return true; // match null class definitions, null or empty class sequence
} else {
boolean reverse = offset < 0;
GlyphTester ignores = ss.getIgnoreDefault();
int[] counts = ss.getGlyphsAvailable ( offset, reverse, ignores );
int nga = counts[0];
int ngm = classes.length;
if ( nga < ngm ) {
return false; // insufficient glyphs available to match