code: def setupTable_cmap(self):
          if "cmap" not in self.tables:
              return
          from fontTools.ttLib.tables._c_m_a_p import cmap_format_4
          nonBMP = dict((k,v) for k,v in self.unicodeToGlyphNameMapping.items() if k > 65535)
          if nonBMP:
              mapping = dict((k,v) for k,v in self.unicodeToGlyphNameMapping.items() if k <= 65535)
          else:
              mapping = dict(self.unicodeToGlyphNameMapping)
          cmap4_0_3 = cmap_format_4(4)
          cmap4_0_3.platformID = 0
          cmap4_0_3.platEncID = 3
          cmap4_0_3.language = 0
          cmap4_0_3.cmap = mapping
          cmap4_3_1 = cmap_format_4(4)
          cmap4_3_1.platformID = 3
          cmap4_3_1.platEncID = 1
          cmap4_3_1.language = 0
          cmap4_3_1.cmap = mapping
          self.otf["cmap"] = cmap = newTable("cmap")
          cmap.tableVersion = 0
          cmap.tables = [cmap4_0_3, cmap4_3_1]
          if nonBMP:
              from fontTools.ttLib.tables._c_m_a_p import cmap_format_12
              nonBMP.update(mapping)
              cmap12_0_4 = cmap_format_12(12)
              cmap12_0_4.platformID = 0
              cmap12_0_4.platEncID = 4
              cmap12_0_4.language = 0
              cmap12_0_4.cmap = nonBMP
              cmap12_3_10 = cmap_format_12(12)
              cmap12_3_10.platformID = 3
              cmap12_3_10.platEncID = 10
              cmap12_3_10.language = 0
              cmap12_3_10.cmap = nonBMP
              cmap.tables = [cmap4_0_3, cmap4_3_1, cmap12_0_4, cmap12_3_10]