def METHOD_NAME(self, fontfiles):
    """Merges fonts together.
    Args:
            fontfiles: A list of file names to be merged
    Returns:
            A :class:`fontTools.ttLib.TTFont` object. Call the ``save`` method on
            this to write it out to an OTF file.
    """
    #
    # Settle on a mega glyph order.
    #
    fonts = self._openFonts(fontfiles)
    glyphOrders = [list(font.getGlyphOrder()) for font in fonts]
    computeMegaGlyphOrder(self, glyphOrders)
    # Take first input file sfntVersion
    sfntVersion = fonts[0].sfntVersion
    # Reload fonts and set new glyph names on them.
    fonts = self._openFonts(fontfiles)
    for font, glyphOrder in zip(fonts, glyphOrders):
        font.setGlyphOrder(glyphOrder)
        if "CFF " in font:
            renameCFFCharStrings(self, glyphOrder, font["CFF "])
    cmaps = [font["cmap"] for font in fonts]
    self.duplicateGlyphsPerFont = [{} for _ in fonts]
    computeMegaCmap(self, cmaps)
    mega = ttLib.TTFont(sfntVersion=sfntVersion)
    mega.setGlyphOrder(self.glyphOrder)
    for font in fonts:
        self._preMerge(font)
    self.fonts = fonts
    allTags = reduce(set.union, (list(font.keys()) for font in fonts), set())
    allTags.remove("GlyphOrder")
    for tag in sorted(allTags):
        if tag in self.options.drop_tables:
            continue
        with timer("merge '%s'" % tag):
            tables = [font.get(tag, NotImplemented) for font in fonts]
            log.info("Merging '%s'.", tag)
            clazz = ttLib.getTableClass(tag)
            table = clazz(tag).METHOD_NAME(self, tables)
            # XXX Clean this up and use:  table = mergeObjects(tables)
            if table is not NotImplemented and table is not False:
                mega[tag] = table
                log.info("Merged '%s'.", tag)
            else:
                log.info("Dropped '%s'.", tag)
    del self.duplicateGlyphsPerFont
    del self.fonts
    self._postMerge(mega)
    return mega