code: def parse_manifest(self, fp):
          
          # Given a string for file path to open
          if isinstance(fp, string_types):
              fp = io.open(fp, 'r', encoding='utf-8')
  
          with fp as json_file:
              webfont_manifest = json.load(json_file)
  
          # Get the font set prefix to know the css classname
          icon_prefix = webfont_manifest.get('preferences').get('fontPref').get('prefix')
  
          # Get sorted icons
          icons_map = OrderedDict()
          sorted_entries = sorted(webfont_manifest.get('icons'), key=self.get_icon_key)
          for icon_entry in sorted_entries:
              name = icon_entry.get('properties').get('name')
              code = icon_entry.get('properties').get('code')
              hexa_code = hex(code)
  
              icons_map[name] = {
                  'class_name': icon_prefix + name,
                  'int': code,
                  'hex': hexa_code,
                  'unicode': 'U+'+''.join(hex(code).split('x')[1:]).upper(),
                  'utf8': '\\'+''.join(hex(code).split('x')[1:]).lower(),
              }
  
          return icons_map
docs: Open manifest JSON file and build icon map
  
          Args:
              fp (string or fileobject): Either manifest filepath to open or
                  manifest File object.
  
          Returns:
              dict: Webfont icon map. Contains:
  
              * ``class_name``: Builded icon classname with prefix configured
                in manifest (from parameters in Icomoon interface);
              * ``int``: Icon integer code like ``59649``;
              * ``hex``: Icon hexadecimal code like ``0xe901``;
              * ``unicode``: Icon unicode like ``U+E901``;
              * ``utf8``! Icon UTF8 code like ``\e901``;