code: def setupTable_name(self):
          if "name" not in self.tables:
              return
          font = self.ufo
          self.otf["name"] = name = newTable("name")
          name.names = []
          for nameRecord in getAttrWithFallback(
                  font.info, "openTypeNameRecords"):
              nameId = nameRecord["nameID"]
              platformId = nameRecord["platformID"]
              platEncId = nameRecord["encodingID"]
              langId = nameRecord["languageID"]
              nameVal = tounicode(nameRecord["string"], encoding='ascii')
              name.setName(nameVal, nameId, platformId, platEncId, langId)
          familyName = getAttrWithFallback(font.info, "styleMapFamilyName")
          styleName = getAttrWithFallback(font.info, "styleMapStyleName").title()
          preferredFamilyName = getAttrWithFallback(
              font.info, "openTypeNamePreferredFamilyName")
          preferredSubfamilyName = getAttrWithFallback(
              font.info, "openTypeNamePreferredSubfamilyName")
          fullName = "%s %s" % (preferredFamilyName, preferredSubfamilyName)
          nameVals = {
              0: getAttrWithFallback(font.info, "copyright"),
              1: familyName,
              2: styleName,
              3: getAttrWithFallback(font.info, "openTypeNameUniqueID"),
              4: fullName,
              5: getAttrWithFallback(font.info, "openTypeNameVersion"),
              6: getAttrWithFallback(font.info, "postscriptFontName"),
              7: getAttrWithFallback(font.info, "trademark"),
              8: getAttrWithFallback(font.info, "openTypeNameManufacturer"),
              9: getAttrWithFallback(font.info, "openTypeNameDesigner"),
              10: getAttrWithFallback(font.info, "openTypeNameDescription"),
              11: getAttrWithFallback(font.info, "openTypeNameManufacturerURL"),
              12: getAttrWithFallback(font.info, "openTypeNameDesignerURL"),
              13: getAttrWithFallback(font.info, "openTypeNameLicense"),
              14: getAttrWithFallback(font.info, "openTypeNameLicenseURL"),
              16: preferredFamilyName,
              17: preferredSubfamilyName,
          }
          if nameVals[1] == nameVals[16]:
              del nameVals[16]
          if nameVals[2] == nameVals[17]:
              del nameVals[17]
          if nameVals[6]:
              nameVals[6] = normalizeStringForPostscript(nameVals[6])
          for nameId in sorted(nameVals.keys()):
              nameVal = nameVals[nameId]
              if not nameVal:
                  continue
              nameVal = tounicode(nameVal, encoding='ascii')
              platformId = 3
              platEncId = 10 if _isNonBMP(nameVal) else 1
              langId = 0x409
              if name.getName(nameId, platformId, platEncId, langId):
                  continue
              name.setName(nameVal, nameId, platformId, platEncId, langId)