code: def fromXML(self, name, attrs, content, ttFont):
      if name != "hdmxData":
          return
      content = strjoin(content)
      lines = content.split(";")
      topRow = lines[0].split()
      assert topRow[0] == "ppem:", "illegal hdmx format"
      ppems = list(map(int, topRow[1:]))
      self.hdmx = hdmx = {}
      for ppem in ppems:
          hdmx[ppem] = {}
      lines = (line.split() for line in lines[1:])
      for line in lines:
          if not line:
              continue
          assert line[0][-1] == ":", "illegal hdmx format"
          glyphName = line[0][:-1]
          if "\\" in glyphName:
              from fontTools.misc.textTools import safeEval
  
              glyphName = safeEval('"""' + glyphName + '"""')
          line = list(map(int, line[1:]))
          assert len(line) == len(ppems), "illegal hdmx format"
          for i in range(len(ppems)):
              hdmx[ppems[i]][glyphName] = line[i]
  
file_path: catboost/contrib/python/fonttools/fontTools/ttLib/tables/_h_d_m_x.py
imports: from fontTools.misc import sstruct
  from fontTools.misc.textTools import bytechr, byteord, strjoin
  from .None import DefaultTable
  import array
  from collections.abc import Mapping
label_desc: Use image node_id 4 for calling the table__h_d_m_x obj's underlying member method code with example usage: obj.fromXML(name, attrs, content, ttFont) without return types