code: def _build_production_name(self, glyph):
          
  
          # use PostScript names from UFO lib if available
          if self._postscriptNames:
              production_name = self._postscriptNames.get(glyph.name)
              return production_name if production_name else glyph.name
  
          # use name derived from unicode value
          unicode_val = glyph.unicode
          if glyph.unicode is not None:
              return '%s%04X' % (
                  'u' if unicode_val > 0xffff else 'uni', unicode_val)
  
          # use production name + last (non-script) suffix if possible
          parts = glyph.name.rsplit('.', 1)
          if len(parts) == 2 and parts[0] in self.glyphSet:
              return '%s.%s' % (
                  self._build_production_name(self.glyphSet[parts[0]]), parts[1])
  
          # use ligature name, making sure to look up components with suffixes
          parts = glyph.name.split('.', 1)
          if len(parts) == 2:
              liga_parts = ['%s.%s' % (n, parts[1]) for n in parts[0].split('_')]
          else:
              liga_parts = glyph.name.split('_')
          if len(liga_parts) > 1 and all(n in self.glyphSet for n in liga_parts):
              unicode_vals = [self.glyphSet[n].unicode for n in liga_parts]
              if all(v and v <= 0xffff for v in unicode_vals):
                  return 'uni' + ''.join('%04X' % v for v in unicode_vals)
              return '_'.join(
                  self._build_production_name(self.glyphSet[n]) for n in liga_parts)
  
          return glyph.name
docs: Build a production name for a single glyph.