class EnumerateTTC extends TrueTypeFont {

    /**
     * OpenType fonts that contain TrueType outlines should use the value of 0x00010000 for the sfntVersion. OpenType
     * fonts containing CFF data (version 1 or 2) should use 0x4F54544F ('OTTO', when re-interpreted as a Tag) for
     * sfntVersion.
     * <p>
     * Note: The Apple specification for TrueType fonts allows for 'true' and 'typ1' for sfnt version. These version
     * tags should not be used for fonts which contain OpenType tables. See more at:
     * https://docs.microsoft.com/de-de/typography/opentype/spec/otff#organization-of-an-opentype-font
     */
    private static final int TRUE_TYPE_SFNT_VERSION = 0x00010000;
    private static final int CFF_DATA_SFNT_VERSION = 0x4F54544F; //'OTTO'

    protected String[] names;

    EnumerateTTC(String ttcFile) throws DocumentException, IOException {
        fileName = ttcFile;
        rf = new RandomAccessFileOrArray(ttcFile);
        findNames();
    }

    EnumerateTTC(byte[] ttcArray) throws DocumentException, IOException {
        fileName = "Byte array TTC";
        rf = new RandomAccessFileOrArray(ttcArray);
        findNames();
    }

    void findNames() throws DocumentException, IOException {<FILL_FUNCTION_BODY>}

    String[] getNames() {
        return names;
    }

}

        tables = new HashMap<>();

        try {
            String mainTag = readStandardString(4);
            if (!mainTag.equals("ttcf")) {
                throw new DocumentException(
                        MessageLocalization.getComposedMessage("1.is.not.a.valid.ttc.file", fileName));
            }
            int majorVersion = rf.readShort();
            rf.skipBytes(2);

            int dirCount = rf.readInt();
            names = new String[dirCount];
            int dirPos = rf.getFilePointer();
            for (int dirIdx = 0; dirIdx < dirCount; ++dirIdx) {
                tables.clear();
                rf.seek(dirPos);
                rf.skipBytes(dirIdx * 4);
                directoryOffset = rf.readInt();
                rf.seek(directoryOffset);
                int sfntVersion = rf.readInt();
                boolean trueTypeFont = sfntVersion == TRUE_TYPE_SFNT_VERSION;
                boolean cffDataFont = sfntVersion == CFF_DATA_SFNT_VERSION &&
                        (majorVersion == 1 || majorVersion == 2);
                if (!trueTypeFont && !cffDataFont) {
                    throw new DocumentException(
                            MessageLocalization.getComposedMessage("1.is.not.a.valid.ttf.file", fileName));
                }
                int num_tables = rf.readUnsignedShort();
                rf.skipBytes(6);
                for (int k = 0; k < num_tables; ++k) {
                    String tag = readStandardString(4);
                    rf.skipBytes(4);
                    int[] table_location = new int[2];
                    table_location[0] = rf.readInt();
                    table_location[1] = rf.readInt();
                    tables.put(tag, table_location);
                }
                names[dirIdx] = getBaseFont();
            }
        } finally {
            if (rf != null) {
                rf.close();
            }
        }
    
<methods>public java.lang.String[][] getAllNameEntries() ,public java.lang.String[] getCodePagesSupported() ,public java.lang.String[][] getFamilyFontName() ,public float getFontDescriptor(int, float) ,public java.lang.String[][] getFullFontName() ,public com.lowagie.text.pdf.PdfStream getFullFontStream() throws java.io.IOException, com.lowagie.text.DocumentException,public int getKerning(int, int) ,public int[] getMetricsTT(int) ,public java.lang.String getPostscriptFontName() ,public boolean hasKernPairs() ,public boolean setKerning(int, int, int) ,public void setPostscriptFontName(java.lang.String) <variables>protected int[] GlyphWidths,protected java.lang.String[][] allNameEntries,protected int[][] bboxes,protected boolean cff,protected int cffLength,protected int cffOffset,protected HashMap<java.lang.Integer,int[]> cmap10,protected HashMap<java.lang.Integer,int[]> cmap31,protected HashMap<java.lang.Integer,int[]> cmapExt,static final java.lang.String[] codePages,protected int directoryOffset,protected java.lang.String[][] familyName,protected java.lang.String fileName,protected java.lang.String fontName,protected java.lang.String[][] fullName,protected com.lowagie.text.pdf.TrueTypeFont.FontHeader head,protected com.lowagie.text.pdf.TrueTypeFont.HorizontalHeader hhea,protected boolean isFixedPitch,protected double italicAngle,protected boolean justNames,protected com.lowagie.text.pdf.IntHashtable kerning,protected com.lowagie.text.pdf.TrueTypeFont.WindowsMetrics os_2,protected com.lowagie.text.pdf.RandomAccessFileOrArray rf,protected java.lang.String style,protected HashMap<java.lang.String,int[]> tables,protected java.lang.String ttcIndex,protected int underlinePosition,protected int underlineThickness