docstr: Add a multilingual name, returning its name ID
  
  'names' is a dictionary with the name in multiple languages,
  such as {'en': 'Pale', 'de': 'Blaß', 'de-CH': 'Blass'}.
  The keys can be arbitrary IETF BCP 47 language codes;
  the values are Unicode strings.
  
  'ttFont' is the TTFont to which the names are added, or None.
  If present, the font's 'ltag' table can get populated
  to store exotic language codes, which allows encoding
  names that otherwise cannot get encoded at all.
  
  'nameID' is the name ID to be used, or None to let the library
  find an existing set of name records that match, or pick an
  unused name ID.
  
  If 'windows' is True, a platformID=3 name record will be added.
  If 'mac' is True, a platformID=1 name record will be added.
  
  If the 'nameID' argument is None, the created nameID will not
  be less than the 'minNameID' argument.
docstr_tok: ["Add","a","multilingual","name",",","returning","its","name","ID","'names","'","is","a","dictionary","with","the","name","in","multiple","languages",",","such","as","{","'en","'",":","'Pale","'",",","'de","'",":","'Bla\u00df","'",",","'de-CH","'",":","'Blass","'","}",".","The","keys","can","be","arbitrary","IETF","BCP","47","language","codes",";","the","values","are","Unicode","strings",".","'ttFont","'","is","the","TTFont","to","which","the","names","are","added",",","or","None",".","If","present",",","the","font","'s","'ltag","'","table","can","get","populated","to","store","exotic","language","codes",",","which","allows","encoding","names","that","otherwise","can","not","get","encoded","at","all",".","'nameID","'","is","the","name","ID","to","be","used",",","or","None","to","let","the","library","find","an","existing","set","of","name","records","that","match",",","or","pick","an","unused","name","ID",".","If","'windows","'","is","True",",","a","platformID=3","name","record","will","be","added",".","If","'mac","'","is","True",",","a","platformID=1","name","record","will","be","added",".","If","the","'nameID","'","argument","is","None",",","the","created","nameID","will","not","be","less","than","the","'minNameID","'","argument","."]
code: def addMultilingualName(
      self,
      names,
      ttFont=None,
      nameID=None,
      windows=True,
      mac=True,
      minNameID=0,
  ):
      """Add a multilingual name, returning its name ID
  
      'names' is a dictionary with the name in multiple languages,
      such as {'en': 'Pale', 'de': 'Blaß', 'de-CH': 'Blass'}.
      The keys can be arbitrary IETF BCP 47 language codes;
      the values are Unicode strings.
  
      'ttFont' is the TTFont to which the names are added, or None.
      If present, the font's 'ltag' table can get populated
      to store exotic language codes, which allows encoding
      names that otherwise cannot get encoded at all.
  
      'nameID' is the name ID to be used, or None to let the library
      find an existing set of name records that match, or pick an
      unused name ID.
  
      If 'windows' is True, a platformID=3 name record will be added.
      If 'mac' is True, a platformID=1 name record will be added.
  
      If the 'nameID' argument is None, the created nameID will not
      be less than the 'minNameID' argument.
      """
      if not hasattr(self, "names"):
          self.names = []
      if nameID is None:
          # Reuse nameID if possible
          nameID = self.findMultilingualName(
              names,
              windows=windows,
              mac=mac,
              minNameID=minNameID,
              ttFont=ttFont,
          )
          if nameID is not None:
              return nameID
          nameID = self._findUnusedNameID()
      # TODO: Should minimize BCP 47 language codes.
      # https://github.com/fonttools/fonttools/issues/930
      for lang, name in sorted(names.items()):
          if windows:
              windowsName = _makeWindowsName(name, nameID, lang)
              if windowsName is not None:
                  self.names.append(windowsName)
              else:
                  # We cannot not make a Windows name: make sure we add a
                  # Mac name as a fallback. This can happen for exotic
                  # BCP47 language tags that have no Windows language code.
                  mac = True
          if mac:
              macName = _makeMacName(name, nameID, lang, ttFont)
              if macName is not None:
                  self.names.append(macName)
      return nameID
  
imports: from fontTools.misc import sstruct
  from fontTools.misc.textTools import bytechr, byteord, bytesjoin, strjoin, tobytes, tostr, safeEval
  from fontTools.misc.encodingTools import getEncoding
  from fontTools.ttLib import newTable
  from fontTools.ttLib.ttVisitor import TTVisitor
  from fontTools import ttLib
  import fontTools.ttLib.tables.otTables
  from fontTools.ttLib.tables import C_P_A_L_
  from .None import DefaultTable
  import struct
  import logging
label_desc: Use image node_id 16 for calling the table__n_a_m_e obj's underlying member method code with example usage: obj.addMultilingualName(names, ttFont, nameID, windows, mac, minNameID) and returns: nameID, nameID