public static CMap createMap (short format, short language) {
        CMap outMap = null;

        switch (format) {
            case 0: // CMap format 0 - single byte codes
                outMap = new CMapFormat0 (language);
                break;
            case 4: // CMap format 4 - two byte encoding
                outMap = new CMapFormat4 (language);
                break;
            case 6: // CMap format 6 - 16-bit, two byte encoding
                outMap = new CMapFormat6 (language);
                break;
//            case 8: // CMap format 8 - Mixed 16-bit and 32-bit coverage
//                outMap = new CMapFormat_8(language);
//                break;
//            // CMap format 10 - Format 10.0 is a bit like format 6, in that it
//            // defines a trimmed array for a tight range of 32-bit character codes:
//            case 10:
//                outMap = new CMapFormat_10(language);
//                break;
//            // Format 12.0 is a bit like format 4, in that it defines
//            // segments for sparse representation in 4-byte character space.
//            case 12: // CMap format 12 -
//                outMap = new CMapFormat_12(language);
//                break;
            default:
                System.out.println ("Unsupport CMap format: " + format);
                return null;
        }

        return outMap;
    }