code: def fromXML(self, name, attrs, content, ttFont):
      if name == "version":
          self.version = safeEval(attrs["value"])
          return
      if name != "kernsubtable":
          return
      if not hasattr(self, "kernTables"):
          self.kernTables = []
      format = safeEval(attrs["format"])
      if format not in kern_classes:
          subtable = KernTable_format_unkown(format)
      else:
          apple = self.version == 1.0
          subtable = kern_classes[format](apple)
      self.kernTables.append(subtable)
      subtable.fromXML(name, attrs, content, ttFont)
  
imports: from fontTools.ttLib import getSearchRange
  from fontTools.misc.textTools import safeEval, readHex
  from fontTools.misc.fixedTools import fixedToFloat, floatToFixed
  from .None import DefaultTable
  import struct
  import sys
  import array
  import logging
label_desc: Use image node_id 5 for calling the table__k_e_r_n obj's underlying member method code with example usage: obj.fromXML(name, attrs, content, ttFont) without return types