docs: def build_masters(
      filename,
      master_dir,
      designspace_instance_dir=None,
      designspace_path=None,
      family_name=None,
      propagate_anchors=True,
      minimize_glyphs_diffs=False,
      normalize_ufos=False,
      create_background_layers=False,
      generate_GDEF=True,
      store_editor_state=True,
  ):
      """Write and return UFOs from the masters and the designspace defined in a
      .glyphs file.
  
      Args:
          master_dir: Directory where masters are written.
          designspace_instance_dir: If provided, a designspace document will be
              written alongside the master UFOs though no instances will be built.
          family_name: If provided, the master UFOs will be given this name and
              only instances with this name will be included in the designspace.
  
      Returns:
          A named tuple of master UFOs (`ufos`) and the path to the designspace
          file (`designspace_path`).
      """
  
      font = GSFont(filename)
  
      if not os.path.isdir(master_dir):
          os.mkdir(master_dir)
  
      if designspace_instance_dir is None:
          instance_dir = None
      else:
          instance_dir = os.path.relpath(designspace_instance_dir, master_dir)
  
      designspace = to_designspace(
          font,
          family_name=family_name,
          propagate_anchors=propagate_anchors,
          instance_dir=instance_dir,
          minimize_glyphs_diffs=minimize_glyphs_diffs,
          generate_GDEF=generate_GDEF,
          store_editor_state=store_editor_state,
      )
  
      # Only write full masters to disk. This assumes that layer sources are always part
      # of another full master source, which must always be the case in a .glyphs file.
      ufos = {}
      for source in designspace.sources:
          if source.filename in ufos:
              assert source.font is ufos[source.filename]
              continue
  
          if create_background_layers:
              ufo_create_background_layer_for_all_glyphs(source.font)
  
          ufo_path = os.path.join(master_dir, source.filename)
          clean_ufo(ufo_path)
          source.font.save(ufo_path)
  
          if normalize_ufos:
              import ufonormalizer
  
              ufonormalizer.normalizeUFO(ufo_path, writeModTimes=False)
  
          ufos[source.filename] = source.font
  
      if not designspace_path:
          designspace_path = os.path.join(master_dir, designspace.filename)
      designspace.write(designspace_path)
  
      return Masters(ufos, designspace_path)