private void readEncodingData (int base) {
        if (base == 0) {  // this is the StandardEncoding
            System.arraycopy (FontSupport.standardEncoding, 0, encoding, 0,
                    FontSupport.standardEncoding.length);
        } else if (base == 1) {  // this is the expert encoding
            // TODO: copy ExpertEncoding
        } else {
            pos = base;
            int encodingtype = readByte ();
            if ((encodingtype & 127) == 0) {
                int ncodes = readByte ();
                for (int i = 1; i < ncodes + 1; i++) {
                    int idx = readByte () & 0xff;
                    encoding[idx] = i;
                }
            } else if ((encodingtype & 127) == 1) {
                int nranges = readByte ();
                int p = 1;
                for (int i = 0; i < nranges; i++) {
                    int start = readByte ();
                    int more = readByte ();
                    for (int j = start; j < start + more + 1; j++) {
                        encoding[j] = p++;
                    }
                }
            } else {
                System.out.println ("Bad encoding type: " + encodingtype);
            }
            // TODO: now check for supplemental encoding data
        }
    }