code: public boolean readFont(FontFileReader in, String name) throws IOException {
  
          /*
           * Check if TrueType collection, and that the name
           * exists in the collection
           */
          if (!checkTTC(in, name)) {
              if (name == null) {
                  throw new IllegalArgumentException(
                      "For TrueType collection you must specify which font "
                      + "to select (-ttcname)");
              } else {
                  throw new IOException(
                      "Name does not exist in the TrueType collection: " + name);
              }
          }
  
          readDirTabs(in);
          readFontHeader(in);
          getNumGlyphs(in);
          log.info("Number of glyphs in font: " + numberOfGlyphs);
          readHorizontalHeader(in);
          readHorizontalMetrics(in);
          initAnsiWidths();
          readPostScript(in);
          readOS2(in);
          determineAscDesc();
          readIndexToLocation(in);
          //readGlyf(in);
          readName(in);
          boolean pcltFound = readPCLT(in);
          // Read cmap table and fill in ansiwidths
          boolean valid = readCMAP(in);
          if (!valid) {
              return false;
          }
          // Create cmaps for bfentries
          //createCMaps();
          // print_max_min();
  
          readKerning(in);
          //guessVerticalMetricsFromGlyphBBox();
          return true;
      }
docs: Read the font data.
  If the fontfile is a TrueType Collection (.ttc file)
  the name of the font to read data for must be supplied,
  else the name is ignored.
  
  @param in The FontFileReader to use
  @param name The name of the font
  @return boolean Returns true if the font is valid
  @throws IOException In case of an I/O problem