diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-05 06:13:08 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 06:13:08 +0000 |
commit | e87237a5f3004e42235db54e2259348d320c5c9e (patch) | |
tree | a795de62a2354f43a70281460d9035cb8c97d153 | |
parent | c029087a88c692408b83a2987970834c8995e4e1 (diff) |
automatic import of python-glyphslibopeneuler20.03
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-glyphslib.spec | 390 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 392 insertions, 0 deletions
@@ -0,0 +1 @@ +/glyphsLib-6.2.2.tar.gz diff --git a/python-glyphslib.spec b/python-glyphslib.spec new file mode 100644 index 0000000..758995b --- /dev/null +++ b/python-glyphslib.spec @@ -0,0 +1,390 @@ +%global _empty_manifest_terminate_build 0 +Name: python-glyphsLib +Version: 6.2.2 +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/00/66/ea8c20168200afbe1f7e2a87ac2bfe413ad2c3ab94f0d362aaa9630aeecc/glyphsLib-6.2.2.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.2.2 + +%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 +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 6.2.2-1 +- Package Spec generated @@ -0,0 +1 @@ +2a3f3be69ae7945960c6c4177e1ac272 glyphsLib-6.2.2.tar.gz |