Example #1
0
def glyphs2ufo(options):
    """Converts a Glyphs.app source file into UFO masters and a designspace file."""
    if options.output_dir is None:
        options.output_dir = os.path.dirname(options.glyphs_file)

    if options.designspace_path is None:
        options.designspace_path = os.path.join(
            options.output_dir,
            os.path.basename(os.path.splitext(options.glyphs_file)[0]) +
            ".designspace",
        )

    # If options.instance_dir is None, instance UFO paths in the designspace
    # file will either use the value in customParameter's FULL_FILENAME_KEY or be
    # made relative to "instance_ufos/".
    glyphsLib.build_masters(
        options.glyphs_file,
        options.output_dir,
        options.instance_dir,
        designspace_path=options.designspace_path,
        minimize_glyphs_diffs=options.no_preserve_glyphsapp_metadata,
        propagate_anchors=options.propagate_anchors,
        normalize_ufos=options.no_normalize_ufos,
        create_background_layers=options.create_background_layers,
    )
Example #2
0
def glyphs2ufo(options):
    """Converts a Glyphs.app source file into UFO masters and a designspace file."""
    if options.output_dir is None:
        options.output_dir = os.path.dirname(options.glyphs_file) or "."

    if options.designspace_path is None:
        options.designspace_path = os.path.join(
            options.output_dir,
            os.path.basename(os.path.splitext(options.glyphs_file)[0]) +
            ".designspace",
        )

    # If options.instance_dir is None, instance UFO paths in the designspace
    # file will either use the value in customParameter's UFO_FILENAME_CUSTOM_PARAM or
    # be made relative to "instance_ufos/".
    glyphsLib.build_masters(
        options.glyphs_file,
        options.output_dir,
        options.instance_dir,
        designspace_path=options.designspace_path,
        minimize_glyphs_diffs=options.no_preserve_glyphsapp_metadata,
        propagate_anchors=options.propagate_anchors,
        normalize_ufos=options.normalize_ufos,
        create_background_layers=options.create_background_layers,
        generate_GDEF=options.generate_GDEF,
        store_editor_state=not options.no_store_editor_state,
        write_skipexportglyphs=options.write_public_skip_export_glyphs,
    )
def main(args=None):
    opt = parse_options(args)
    if opt.glyphs is not None:
        if opt.instances is None:
            glyphsLib.build_masters(opt.glyphs, opt.masters)
        else:
            glyphsLib.build_instances(opt.glyphs, opt.masters, opt.instances)
Example #4
0
def main():
    parser = argparse.ArgumentParser(
        "Translate all .glyphs files into UFO+designspace in the specified directories."
    )
    parser.add_argument(
        "-o", "--out", metavar="OUTPUT_DIR", default="ufos", help="Output directory"
    )
    parser.add_argument("directories", nargs="*")
    args = parser.parse_args()

    for directory in args.directories:
        files = glyphs_files(directory)
        for filename in files:
            try:
                # Code for glyphsLib with roundtrip
                from glyphsLib.builder import to_designspace

                font = glyphsLib.GSFont(filename)
                designspace = to_designspace(font)
                dsname = font.familyName.replace(" ", "") + ".designspace"
                designspace.write(os.path.join(args.out, dsname))
            except ImportError:
                # This is the version that works with glyphsLib 2.1.0
                glyphsLib.build_masters(
                    filename, master_dir=args.out, designspace_instance_dir=args.out
                )
Example #5
0
def test_designspace_generation_on_disk(datadir, tmpdir):
    glyphsLib.build_masters(str(datadir.join("BraceTestFont.glyphs")),
                            str(tmpdir))

    ufo_paths = list(tmpdir.visit(fil="*.ufo"))
    assert len(ufo_paths) == 4  # Source layers should not be written to disk.
    for ufo_path in ufo_paths:
        ufo = defcon.Font(str(ufo_path))
        # Check that all glyphs have contours (brace layers are in "b" only, writing
        # the brace layer to disk would result in empty other glyphs).
        for layer in ufo.layers:
            for glyph in layer:
                if glyph.name == "space":
                    assert not glyph
                else:
                    assert glyph
Example #6
0
    def build_master_ufos(self, glyphs_path, family_name=None):
        """Build UFOs and MutatorMath designspace from Glyphs source."""
        import glyphsLib

        master_dir = self._output_dir('ufo')
        instance_dir = self._output_dir('ufo', is_instance=True)
        return glyphsLib.build_masters(
            glyphs_path, master_dir, designspace_instance_dir=instance_dir,
            family_name=family_name)
Example #7
0
    def build_ufos(self, glyphs_path, interpolate=False):
        """Build UFOs from Glyphs source."""

        master_dir = self._output_dir('ufo')
        instance_dir = self._output_dir('ufo', is_instance=True)
        if interpolate:
            return build_instances(glyphs_path, master_dir, instance_dir)
        else:
            return build_masters(glyphs_path, master_dir,
                                 designspace_instance_dir=instance_dir)
Example #8
0
    def build_master_ufos(self, glyphs_path, family_name=None):
        """Build UFOs and MutatorMath designspace from Glyphs source."""
        import glyphsLib

        master_dir = self._output_dir('ufo')
        instance_dir = self._output_dir('ufo', is_instance=True)
        return glyphsLib.build_masters(glyphs_path,
                                       master_dir,
                                       designspace_instance_dir=instance_dir,
                                       family_name=family_name)
Example #9
0
    def build_ufos(self, glyphs_path, interpolate=False):
        """Build UFOs from Glyphs source."""

        master_dir = self._output_dir('ufo')
        instance_dir = self._output_dir('ufo', is_instance=True)
        if interpolate:
            return build_instances(glyphs_path, master_dir, instance_dir)
        else:
            return build_masters(glyphs_path, master_dir,
                                 designspace_instance_dir=instance_dir)
Example #10
0
 def build_master_ufos(self,
                       glyphs_path,
                       family_name=None,
                       mti_source=None):
     """Build UFOs and MutatorMath designspace from Glyphs source."""
     import glyphsLib
     master_dir = self._output_dir('ufo')
     instance_dir = self._output_dir('ufo', is_instance=True)
     masters, designspace_path, instances = glyphsLib.build_masters(
         glyphs_path,
         master_dir,
         designspace_instance_dir=instance_dir,
         family_name=family_name)
     if mti_source:
         self.add_mti_features_to_master_ufos(mti_source, masters)
     return designspace_path, instances
Example #11
0
    def build_ufos(
            self, glyphs_path, interpolate=False, masters_as_instances=False,
            family_name=None):
        """Build UFOs from Glyphs source."""

        master_dir = self._output_dir('ufo')
        instance_dir = self._output_dir('ufo', is_instance=True)
        ufos = []
        if not interpolate or masters_as_instances:
            ufos.extend(build_masters(
                glyphs_path, master_dir, designspace_instance_dir=instance_dir,
                family_name=family_name))
        if interpolate:
            ufos.extend(build_instances(
                glyphs_path, master_dir, instance_dir, family_name=family_name))
        return ufos
Example #12
0
    def build_ufos(
            self, glyphs_path, interpolate=False, masters_as_instances=False,
            family_name=None):
        """Build UFOs from Glyphs source."""

        master_dir = self._output_dir('ufo')
        instance_dir = self._output_dir('ufo', is_instance=True)
        ufos = []
        if not interpolate or masters_as_instances:
            ufos.extend(build_masters(
                glyphs_path, master_dir, designspace_instance_dir=instance_dir,
                family_name=family_name))
        if interpolate:
            ufos.extend(build_instances(
                glyphs_path, master_dir, instance_dir, family_name=family_name))
        return ufos
    def convertion(self):
        if not os.path.exists(self.destination):
            os.makedirs(self.destination)
        self.ufos, self.designspace_path = glyphsLib.build_masters(
            self.sourcePath, self.destination)
        self.cleanedUfos = self.cleanUfos()
        self.addSkipExport2designspace()

        for i in os.listdir(self.destination):
            if i.endswith(".designspace") and "-" in i:
                old = os.path.abspath(os.path.join(self.destination, i))
                new = os.path.abspath(
                    os.path.join(
                        self.destination,
                        i.split(".")[0].replace("MM", "").strip("-") +
                        ".designspace"))
                if "Regular" in new:
                    new = new.replace("-Regular", "")
                os.rename(old, new)

        return self.designspace_path, self.cleanUfos
Example #14
0
def main():
    parser = argparse.ArgumentParser(description="Build Reem Kufi fonts.")
    parser.add_argument("file", metavar="FILE", help="input font to process")
    parser.add_argument("--out-file",
                        metavar="FILE",
                        help="output font to write",
                        required=True)

    args = parser.parse_args()

    with TemporaryDirectory() as tempdir:
        ufos, designspace = build_masters(args.file, tempdir, tempdir)

        doc = DesignSpaceDocument()
        doc.read(designspace)
        doc.instances = [i for i in doc.instances if i.styleName == "Regular"]
        assert len(doc.instances) == 1
        instance = doc.instances[0]
        instance.location = dict(Weight=108)
        instance.path = args.out_file
        doc.write(designspace)

        build(designspace, outputUFOFormatVersion=3)
Example #15
0
import glyphsLib

master_dir = "master_ufos"
ufos, designspace_path = glyphsLib.build_masters("Lexend.glyphs", master_dir)
Example #16
0
import glyphsLib

glyphsLib.build_masters('mono.glyphs', './')