docstr: Add OpenType features to the font from a string containing
  Feature File syntax.
  
  The `filename` argument is used in error messages and to determine
  where to look for "include" files.
  
  The optional `tables` argument can be a list of OTL tables tags to
  build, allowing the caller to only build selected OTL tables. See
  `fontTools.feaLib` for details.
  
  The optional `debug` argument controls whether to add source debugging
  information to the font in the `Debg` table.
code: def addOpenTypeFeatures(
      self, features, filename=None, tables=None, debug=False
  ):
      """Add OpenType features to the font from a string containing
      Feature File syntax.
  
      The `filename` argument is used in error messages and to determine
      where to look for "include" files.
  
      The optional `tables` argument can be a list of OTL tables tags to
      build, allowing the caller to only build selected OTL tables. See
      `fontTools.feaLib` for details.
  
      The optional `debug` argument controls whether to add source debugging
      information to the font in the `Debg` table.
      """
      from .feaLib.builder import addOpenTypeFeaturesFromString
  
      addOpenTypeFeaturesFromString(
          self.font,
          features,
          filename=filename,
          tables=tables,
          debug=debug,
      )
  
imports: from .ttLib import TTFont, newTable
  from .ttLib.tables._c_m_a_p import cmap_classes
  from .ttLib.tables._g_l_y_f import flagCubic
  from .ttLib.tables.O_S_2f_2 import Panose
  from .misc.timeTools import timestampNow
  import struct
  from collections import OrderedDict
label_desc: Use image node_id 28 for calling the FontBuilder obj's underlying member method code with example usage: obj.addOpenTypeFeatures(features, filename, tables, debug) without return types