class_docstr: Font merger.
  
  This class merges multiple files into a single OpenType font, taking into
  account complexities such as OpenType layout (``GSUB``/``GPOS``) tables and
  cross-font metrics (e.g. ``hhea.ascent`` is set to the maximum value across
  all the fonts).
  
  If multiple glyphs map to the same Unicode value, and the glyphs are considered
  sufficiently different (that is, they differ in any of paths, widths, or
  height), then subsequent glyphs are renamed and a lookup in the ``locl``
  feature will be created to disambiguate them. For example, if the arguments
  are an Arabic font and a Latin font and both contain a set of parentheses,
  the Latin glyphs will be renamed to ``parenleft#1`` and ``parenright#1``,
  and a lookup will be inserted into the to ``locl`` feature (creating it if
  necessary) under the ``latn`` script to substitute ``parenleft`` with
  ``parenleft#1`` etc.
  
  Restrictions:
  
  - All fonts must have the same units per em.
  - If duplicate glyph disambiguation takes place as described above then the
          fonts must have a ``GSUB`` table.
  
  Attributes:
          options: Currently unused.
class_docstr_tok: ["Font","merger",".","This","class","merges","multiple","files","into","a","single","OpenType","font",",","taking","into","account","complexities","such","as","OpenType","layout","(","``","GSUB","``","\/","``","GPOS","``",")","tables","and","cross-font","metrics","(","e.g",".","``","hhea.ascent","``","is","set","to","the","maximum","value","across","all","the","fonts",")",".","If","multiple","glyphs","map","to","the","same","Unicode","value",",","and","the","glyphs","are","considered","sufficiently","different","(","that","is",",","they","differ","in","any","of","paths",",","widths",",","or","height",")",",","then","subsequent","glyphs","are","renamed","and","a","lookup","in","the","``","locl","``","feature","will","be","created","to","disambiguate","them",".","For","example",",","if","the","arguments","are","an","Arabic","font","and","a","Latin","font","and","both","contain","a","set","of","parentheses",",","the","Latin","glyphs","will","be","renamed","to","``","parenleft","#","1","``","and","``","parenright","#","1","``",",","and","a","lookup","will","be","inserted","into","the","to","``","locl","``","feature","(","creating","it","if","necessary",")","under","the","``","latn","``","script","to","substitute","``","parenleft","``","with","``","parenleft","#","1","``","etc",".","Restrictions",":","-","All","fonts","must","have","the","same","units","per","em",".","-","If","duplicate","glyph","disambiguation","takes","place","as","described","above","then","the","fonts","must","have","a","``","GSUB","``","table",".","Attributes",":","options",":","Currently","unused","."]
code: def _openFonts(self, fontfiles):
      fonts = [ttLib.TTFont(fontfile) for fontfile in fontfiles]
      for font, fontfile in zip(fonts, fontfiles):
          font._merger__fontfile = fontfile
          font._merger__name = font["name"].getDebugName(4)
      return fonts
  
file_path: catboost/contrib/python/fonttools/fontTools/merge/__init__.py
imports: from fontTools import ttLib
  import fontTools.merge.base
  from fontTools.merge.cmap import computeMegaGlyphOrder, computeMegaCmap, renameCFFCharStrings
  from fontTools.merge.layout import layoutPreMerge, layoutPostMerge
  from fontTools.merge.options import Options
  import fontTools.merge.tables
  from fontTools.misc.loggingTools import Timer
  from functools import reduce
  import sys
  import logging
label_desc: Use image node_id 2 for calling the Merger obj's underlying member method code with example usage: obj._openFonts(fontfiles) and returns: fonts