summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-03-09 11:32:02 +0000
committerCoprDistGit <infra@openeuler.org>2023-03-09 11:32:02 +0000
commit35237a930bd7d2f3d3319813aaa7f13c78555f67 (patch)
tree44d18443547a83a3893d3f0be8a1433750682a30
parent3ef091c42ab5446014cfa5c84f6cb3c0286a45de (diff)
automatic import of python-glyphsLib
-rw-r--r--.gitignore1
-rw-r--r--python-glyphsLib.spec390
-rw-r--r--sources1
3 files changed, 392 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..2fce6d6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/glyphsLib-6.1.0.tar.gz
diff --git a/python-glyphsLib.spec b/python-glyphsLib.spec
new file mode 100644
index 0000000..2059b61
--- /dev/null
+++ b/python-glyphsLib.spec
@@ -0,0 +1,390 @@
+%global _empty_manifest_terminate_build 0
+Name: python-glyphsLib
+Version: 6.1.0
+Release: 1
+Summary: A bridge from Glyphs source files (.glyphs) to UFOs
+License: Apache Software License 2.0
+URL: https://github.com/googlefonts/glyphsLib
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/e3/67/021c078aeb8592f669cdd4b91bc1d74d157c28ec62dfd86013e6ea96b43e/glyphsLib-6.1.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-ufoLib2
+Requires: python3-fonttools[ufo,unicode]
+Requires: python3-openstep-plist
+Requires: python3-skia-pathops
+Requires: python3-defcon
+Requires: python3-ufonormalizer
+
+%description
+This Python 3.7+ library provides a bridge from Glyphs source files (.glyphs) to
+UFOs and Designspace files via `defcon <https://github.com/typesupply/defcon/>`__ and `designspaceLib <https://github.com/fonttools/fonttools>`__.
+The main methods for conversion are found in ``__init__.py``.
+Intermediate data can be accessed without actually writing UFOs, if
+needed.
+Write and return UFOs
+^^^^^^^^^^^^^^^^^^^^^
+The following code will write UFOs and a Designspace file to disk.
+ import glyphsLib
+ master_dir = "master_ufos"
+ ufos, designspace_path = glyphsLib.build_masters("MyFont.glyphs", master_dir)
+If you want to interpolate instances, please use fontmake instead. It uses this library under the hood when dealing with Glyphs files.
+Load UFO objects without writing
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ import glyphsLib
+ ufos = glyphsLib.load_to_ufos("MyFont.glyphs")
+Read and write Glyphs data as Python objects
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ from glyphsLib import GSFont
+ font = GSFont(glyphs_file)
+ font.save(glyphs_file)
+The ``glyphsLib.classes`` module aims to provide an interface similar to
+Glyphs.app's `Python Scripting API <https://docu.glyphsapp.com>`__.
+Note that currently not all the classes and methods may be fully
+implemented. We try to keep up to date, but if you find something that
+is missing or does not work as expected, please open a issue.
+ and what is not supported yet.
+Go back and forth between UFOs and Glyphs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+1. You can use the ``ufo2glyphs`` and ``glyphs2ufo`` command line scripts to
+ round-trip your source files. By default, the scripts try to preserve as
+ much metadata as possible.
+ # Generate master UFOs and Designspace file
+ glyphs2ufo Example.glyphs
+ # Go back
+ ufo2glyphs Example.designspace
+ # You can also combine single UFOs into a Glyphs source file.
+ ufo2glyphs Example-Regular.ufo Example-Bold.ufo
+2. Without a designspace file, using for example the
+ `Inria fonts by Black[Foundry] <https://github.com/BlackFoundry/InriaFonts/tree/master/masters/INRIA-SANS>`__:
+ import glob
+ from defcon import Font
+ from glyphsLib import to_glyphs
+ ufos = [Font(path) for path in glob.glob("*Italic.ufo")]
+ # Sort the UFOs because glyphsLib will create masters in the same order
+ ufos = sorted(ufos, key=lambda ufo: ufo.info.openTypeOS2WeightClass)
+ font = to_glyphs(ufos)
+ font.save("InriaSansItalic.glyphs")
+ `Here is the resulting glyphs file <https://gist.githubusercontent.com/belluzj/cc3d43bf9b1cf22fde7fd4d2b97fdac4/raw/3222a2bfcf6554aa56a21b80f8fba82f1c5d7444/InriaSansItalic.glyphs>`__
+3. With a designspace, using
+ `Spectral from Production Type <https://github.com/productiontype/Spectral/tree/master/sources>`__:
+ import glob
+ from fontTools.designspaceLib import DesignSpaceDocument
+ from glyphsLib import to_glyphs
+ doc = DesignSpaceDocument()
+ doc.read("spectral-build-roman.designspace")
+ font = to_glyphs(doc)
+ font.save("SpectralRoman.glyphs")
+ `Here is the resulting glyphs file <https://gist.githubusercontent.com/belluzj/cc3d43bf9b1cf22fde7fd4d2b97fdac4/raw/3222a2bfcf6554aa56a21b80f8fba82f1c5d7444/SpectralRoman.glyphs>`__
+4. In both programmatic cases, if you intend to go back to UFOs after modifying
+ the file with Glyphs, you should use the ``minimize_ufo_diffs`` parameter to
+ minimize the amount of diffs that will show up in git after the back and
+ forth. To do so, the glyphsLib will add some bookkeeping values in various
+ ``userData`` fields. For example, it will try to remember which GSClass came
+ from groups.plist or from the feature file.
+The same option exists for people who want to do Glyphs->UFOs->Glyphs:
+``minimize_glyphs_diffs``, which will add some bookkeeping data in UFO ``lib``.
+For example, it will keep the same UUIDs for Glyphs layers, and so will need
+to store those layer UUIDs in the UFOs.
+ import glob
+ import os
+ from fontTools.designspaceLib import DesignSpaceDocument
+ from glyphsLib import to_glyphs, to_designspace, GSFont
+ doc = DesignSpaceDocument()
+ doc.read("spectral-build-roman.designspace")
+ font = to_glyphs(doc, minimize_ufo_diffs=True)
+ doc2 = to_designspace(font, propagate_anchors=False)
+ # UFOs are in memory only, attached to the doc via `sources`
+ # Writing doc2 over the original doc should generate very few git diffs (ideally none)
+ doc2.write(doc.path)
+ for source in doc2.sources:
+ path = os.path.join(os.path.dirname(doc.path), source.filename)
+ # You will want to use ufoNormalizer after
+ source.font.save(path)
+ font = GSFont("SpectralRoman.glyphs")
+ doc = to_designspace(font, minimize_glyphs_diffs=True, propagate_anchors=False)
+ font2 = to_glyphs(doc)
+ # Writing font2 over font should generate very few git diffs (ideally none):
+ font2.save(font.filepath)
+In practice there are always a few diffs on things that don't really make a
+difference, like optional things being added/removed or whitespace changes or
+things getting reordered...
+Make a release
+^^^^^^^^^^^^^^
+Use ``git tag -a`` to make a new annotated tag, or ``git tag -s`` for a GPG-signed
+annotated tag, if you prefer.
+Name the new tag with with a leading ‘v’ followed by three ``MAJOR.MINOR.PATCH``
+digits, like in semantic versioning. Look at the existing tags for examples.
+In the tag message write some short release notes describing the changes since the
+previous tag.
+Finally, push the tag to the remote repository (e.g. assuming your upstream is
+called ``origin``):
+ $ git push origin v0.4.3
+This will trigger the CI to build the distribution packages and upload them to
+the Python Package Index automatically, if all the tests pass successfully.
+
+%package -n python3-glyphsLib
+Summary: A bridge from Glyphs source files (.glyphs) to UFOs
+Provides: python-glyphsLib
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-glyphsLib
+This Python 3.7+ library provides a bridge from Glyphs source files (.glyphs) to
+UFOs and Designspace files via `defcon <https://github.com/typesupply/defcon/>`__ and `designspaceLib <https://github.com/fonttools/fonttools>`__.
+The main methods for conversion are found in ``__init__.py``.
+Intermediate data can be accessed without actually writing UFOs, if
+needed.
+Write and return UFOs
+^^^^^^^^^^^^^^^^^^^^^
+The following code will write UFOs and a Designspace file to disk.
+ import glyphsLib
+ master_dir = "master_ufos"
+ ufos, designspace_path = glyphsLib.build_masters("MyFont.glyphs", master_dir)
+If you want to interpolate instances, please use fontmake instead. It uses this library under the hood when dealing with Glyphs files.
+Load UFO objects without writing
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ import glyphsLib
+ ufos = glyphsLib.load_to_ufos("MyFont.glyphs")
+Read and write Glyphs data as Python objects
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ from glyphsLib import GSFont
+ font = GSFont(glyphs_file)
+ font.save(glyphs_file)
+The ``glyphsLib.classes`` module aims to provide an interface similar to
+Glyphs.app's `Python Scripting API <https://docu.glyphsapp.com>`__.
+Note that currently not all the classes and methods may be fully
+implemented. We try to keep up to date, but if you find something that
+is missing or does not work as expected, please open a issue.
+ and what is not supported yet.
+Go back and forth between UFOs and Glyphs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+1. You can use the ``ufo2glyphs`` and ``glyphs2ufo`` command line scripts to
+ round-trip your source files. By default, the scripts try to preserve as
+ much metadata as possible.
+ # Generate master UFOs and Designspace file
+ glyphs2ufo Example.glyphs
+ # Go back
+ ufo2glyphs Example.designspace
+ # You can also combine single UFOs into a Glyphs source file.
+ ufo2glyphs Example-Regular.ufo Example-Bold.ufo
+2. Without a designspace file, using for example the
+ `Inria fonts by Black[Foundry] <https://github.com/BlackFoundry/InriaFonts/tree/master/masters/INRIA-SANS>`__:
+ import glob
+ from defcon import Font
+ from glyphsLib import to_glyphs
+ ufos = [Font(path) for path in glob.glob("*Italic.ufo")]
+ # Sort the UFOs because glyphsLib will create masters in the same order
+ ufos = sorted(ufos, key=lambda ufo: ufo.info.openTypeOS2WeightClass)
+ font = to_glyphs(ufos)
+ font.save("InriaSansItalic.glyphs")
+ `Here is the resulting glyphs file <https://gist.githubusercontent.com/belluzj/cc3d43bf9b1cf22fde7fd4d2b97fdac4/raw/3222a2bfcf6554aa56a21b80f8fba82f1c5d7444/InriaSansItalic.glyphs>`__
+3. With a designspace, using
+ `Spectral from Production Type <https://github.com/productiontype/Spectral/tree/master/sources>`__:
+ import glob
+ from fontTools.designspaceLib import DesignSpaceDocument
+ from glyphsLib import to_glyphs
+ doc = DesignSpaceDocument()
+ doc.read("spectral-build-roman.designspace")
+ font = to_glyphs(doc)
+ font.save("SpectralRoman.glyphs")
+ `Here is the resulting glyphs file <https://gist.githubusercontent.com/belluzj/cc3d43bf9b1cf22fde7fd4d2b97fdac4/raw/3222a2bfcf6554aa56a21b80f8fba82f1c5d7444/SpectralRoman.glyphs>`__
+4. In both programmatic cases, if you intend to go back to UFOs after modifying
+ the file with Glyphs, you should use the ``minimize_ufo_diffs`` parameter to
+ minimize the amount of diffs that will show up in git after the back and
+ forth. To do so, the glyphsLib will add some bookkeeping values in various
+ ``userData`` fields. For example, it will try to remember which GSClass came
+ from groups.plist or from the feature file.
+The same option exists for people who want to do Glyphs->UFOs->Glyphs:
+``minimize_glyphs_diffs``, which will add some bookkeeping data in UFO ``lib``.
+For example, it will keep the same UUIDs for Glyphs layers, and so will need
+to store those layer UUIDs in the UFOs.
+ import glob
+ import os
+ from fontTools.designspaceLib import DesignSpaceDocument
+ from glyphsLib import to_glyphs, to_designspace, GSFont
+ doc = DesignSpaceDocument()
+ doc.read("spectral-build-roman.designspace")
+ font = to_glyphs(doc, minimize_ufo_diffs=True)
+ doc2 = to_designspace(font, propagate_anchors=False)
+ # UFOs are in memory only, attached to the doc via `sources`
+ # Writing doc2 over the original doc should generate very few git diffs (ideally none)
+ doc2.write(doc.path)
+ for source in doc2.sources:
+ path = os.path.join(os.path.dirname(doc.path), source.filename)
+ # You will want to use ufoNormalizer after
+ source.font.save(path)
+ font = GSFont("SpectralRoman.glyphs")
+ doc = to_designspace(font, minimize_glyphs_diffs=True, propagate_anchors=False)
+ font2 = to_glyphs(doc)
+ # Writing font2 over font should generate very few git diffs (ideally none):
+ font2.save(font.filepath)
+In practice there are always a few diffs on things that don't really make a
+difference, like optional things being added/removed or whitespace changes or
+things getting reordered...
+Make a release
+^^^^^^^^^^^^^^
+Use ``git tag -a`` to make a new annotated tag, or ``git tag -s`` for a GPG-signed
+annotated tag, if you prefer.
+Name the new tag with with a leading ‘v’ followed by three ``MAJOR.MINOR.PATCH``
+digits, like in semantic versioning. Look at the existing tags for examples.
+In the tag message write some short release notes describing the changes since the
+previous tag.
+Finally, push the tag to the remote repository (e.g. assuming your upstream is
+called ``origin``):
+ $ git push origin v0.4.3
+This will trigger the CI to build the distribution packages and upload them to
+the Python Package Index automatically, if all the tests pass successfully.
+
+%package help
+Summary: Development documents and examples for glyphsLib
+Provides: python3-glyphsLib-doc
+%description help
+This Python 3.7+ library provides a bridge from Glyphs source files (.glyphs) to
+UFOs and Designspace files via `defcon <https://github.com/typesupply/defcon/>`__ and `designspaceLib <https://github.com/fonttools/fonttools>`__.
+The main methods for conversion are found in ``__init__.py``.
+Intermediate data can be accessed without actually writing UFOs, if
+needed.
+Write and return UFOs
+^^^^^^^^^^^^^^^^^^^^^
+The following code will write UFOs and a Designspace file to disk.
+ import glyphsLib
+ master_dir = "master_ufos"
+ ufos, designspace_path = glyphsLib.build_masters("MyFont.glyphs", master_dir)
+If you want to interpolate instances, please use fontmake instead. It uses this library under the hood when dealing with Glyphs files.
+Load UFO objects without writing
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ import glyphsLib
+ ufos = glyphsLib.load_to_ufos("MyFont.glyphs")
+Read and write Glyphs data as Python objects
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ from glyphsLib import GSFont
+ font = GSFont(glyphs_file)
+ font.save(glyphs_file)
+The ``glyphsLib.classes`` module aims to provide an interface similar to
+Glyphs.app's `Python Scripting API <https://docu.glyphsapp.com>`__.
+Note that currently not all the classes and methods may be fully
+implemented. We try to keep up to date, but if you find something that
+is missing or does not work as expected, please open a issue.
+ and what is not supported yet.
+Go back and forth between UFOs and Glyphs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+1. You can use the ``ufo2glyphs`` and ``glyphs2ufo`` command line scripts to
+ round-trip your source files. By default, the scripts try to preserve as
+ much metadata as possible.
+ # Generate master UFOs and Designspace file
+ glyphs2ufo Example.glyphs
+ # Go back
+ ufo2glyphs Example.designspace
+ # You can also combine single UFOs into a Glyphs source file.
+ ufo2glyphs Example-Regular.ufo Example-Bold.ufo
+2. Without a designspace file, using for example the
+ `Inria fonts by Black[Foundry] <https://github.com/BlackFoundry/InriaFonts/tree/master/masters/INRIA-SANS>`__:
+ import glob
+ from defcon import Font
+ from glyphsLib import to_glyphs
+ ufos = [Font(path) for path in glob.glob("*Italic.ufo")]
+ # Sort the UFOs because glyphsLib will create masters in the same order
+ ufos = sorted(ufos, key=lambda ufo: ufo.info.openTypeOS2WeightClass)
+ font = to_glyphs(ufos)
+ font.save("InriaSansItalic.glyphs")
+ `Here is the resulting glyphs file <https://gist.githubusercontent.com/belluzj/cc3d43bf9b1cf22fde7fd4d2b97fdac4/raw/3222a2bfcf6554aa56a21b80f8fba82f1c5d7444/InriaSansItalic.glyphs>`__
+3. With a designspace, using
+ `Spectral from Production Type <https://github.com/productiontype/Spectral/tree/master/sources>`__:
+ import glob
+ from fontTools.designspaceLib import DesignSpaceDocument
+ from glyphsLib import to_glyphs
+ doc = DesignSpaceDocument()
+ doc.read("spectral-build-roman.designspace")
+ font = to_glyphs(doc)
+ font.save("SpectralRoman.glyphs")
+ `Here is the resulting glyphs file <https://gist.githubusercontent.com/belluzj/cc3d43bf9b1cf22fde7fd4d2b97fdac4/raw/3222a2bfcf6554aa56a21b80f8fba82f1c5d7444/SpectralRoman.glyphs>`__
+4. In both programmatic cases, if you intend to go back to UFOs after modifying
+ the file with Glyphs, you should use the ``minimize_ufo_diffs`` parameter to
+ minimize the amount of diffs that will show up in git after the back and
+ forth. To do so, the glyphsLib will add some bookkeeping values in various
+ ``userData`` fields. For example, it will try to remember which GSClass came
+ from groups.plist or from the feature file.
+The same option exists for people who want to do Glyphs->UFOs->Glyphs:
+``minimize_glyphs_diffs``, which will add some bookkeeping data in UFO ``lib``.
+For example, it will keep the same UUIDs for Glyphs layers, and so will need
+to store those layer UUIDs in the UFOs.
+ import glob
+ import os
+ from fontTools.designspaceLib import DesignSpaceDocument
+ from glyphsLib import to_glyphs, to_designspace, GSFont
+ doc = DesignSpaceDocument()
+ doc.read("spectral-build-roman.designspace")
+ font = to_glyphs(doc, minimize_ufo_diffs=True)
+ doc2 = to_designspace(font, propagate_anchors=False)
+ # UFOs are in memory only, attached to the doc via `sources`
+ # Writing doc2 over the original doc should generate very few git diffs (ideally none)
+ doc2.write(doc.path)
+ for source in doc2.sources:
+ path = os.path.join(os.path.dirname(doc.path), source.filename)
+ # You will want to use ufoNormalizer after
+ source.font.save(path)
+ font = GSFont("SpectralRoman.glyphs")
+ doc = to_designspace(font, minimize_glyphs_diffs=True, propagate_anchors=False)
+ font2 = to_glyphs(doc)
+ # Writing font2 over font should generate very few git diffs (ideally none):
+ font2.save(font.filepath)
+In practice there are always a few diffs on things that don't really make a
+difference, like optional things being added/removed or whitespace changes or
+things getting reordered...
+Make a release
+^^^^^^^^^^^^^^
+Use ``git tag -a`` to make a new annotated tag, or ``git tag -s`` for a GPG-signed
+annotated tag, if you prefer.
+Name the new tag with with a leading ‘v’ followed by three ``MAJOR.MINOR.PATCH``
+digits, like in semantic versioning. Look at the existing tags for examples.
+In the tag message write some short release notes describing the changes since the
+previous tag.
+Finally, push the tag to the remote repository (e.g. assuming your upstream is
+called ``origin``):
+ $ git push origin v0.4.3
+This will trigger the CI to build the distribution packages and upload them to
+the Python Package Index automatically, if all the tests pass successfully.
+
+%prep
+%autosetup -n glyphsLib-6.1.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-glyphsLib -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Thu Mar 09 2023 Python_Bot <Python_Bot@openeuler.org> - 6.1.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..6c65e96
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+985a45623b61697e681837ffba9bf0aa glyphsLib-6.1.0.tar.gz