Metadata-Version: 2.4
Name: fontbakery
Version: 1.1.0
Summary: A font quality assurance tool for everyone
Author: Jens Kutilek, Lasse Fister, Marc Foley, Miguel Sousa, Nikolaus Waxweiler, Rosalie Wagner, Simon Cozens, Vitaly Volkov, Viviana Monsalve, Yanone
Author-email: Chris Simpkins <csimpkins@google.com>, Dave Crossland <dcrossland@google.com>, Felipe Sanches <juca@members.fsf.org>
Maintainer-email: Felipe Sanches <juca@members.fsf.org>
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.txt
License-File: AUTHORS.txt
Requires-Dist: beziers==0.6.*,>=0.6.0
Requires-Dist: cmarkgfm>=0.4
Requires-Dist: defcon
Requires-Dist: dehinter>=3.1.0
Requires-Dist: fontTools[ufo]>=4.47.0
Requires-Dist: freetype-py<2.4.0
Requires-Dist: Jinja2>=3.0.0
Requires-Dist: munkres
Requires-Dist: opentypespec>=1.9.2
Requires-Dist: opentype-sanitizer==9.*,>=9.1.0
Requires-Dist: packaging>=14.5
Requires-Dist: pip-api
Requires-Dist: PyYAML
Requires-Dist: requests>=2.19
Requires-Dist: rich
Requires-Dist: toml
Requires-Dist: typing_extensions; python_version < "3.11"
Requires-Dist: ufolint
Requires-Dist: ufo2ft>=2.25.2
Requires-Dist: uharfbuzz
Requires-Dist: vharfbuzz>=0.2.0
Provides-Extra: beautifulsoup4
Requires-Dist: beautifulsoup4>=4.7.1; extra == "beautifulsoup4"
Provides-Extra: shaperglot
Requires-Dist: shaperglot==1.*,>=1.0.0a1; extra == "shaperglot"
Provides-Extra: googlefontsalwayslatest
Requires-Dist: axisregistry==0.4.*,>=0.4.16; extra == "googlefontsalwayslatest"
Requires-Dist: gflanguages==0.7.*,>=0.7.7; extra == "googlefontsalwayslatest"
Requires-Dist: gfsubsets>=2024.9.25; extra == "googlefontsalwayslatest"
Requires-Dist: glyphsets==1.*,>=1.1.0; extra == "googlefontsalwayslatest"
Requires-Dist: shaperglot==1.*,>=1.2.0; extra == "googlefontsalwayslatest"
Provides-Extra: adobefonts
Provides-Extra: fontval
Requires-Dist: lxml; extra == "fontval"
Provides-Extra: fontwerk
Requires-Dist: fontbakery[googlefonts]; extra == "fontwerk"
Provides-Extra: googlefonts
Requires-Dist: collidoscope>=0.5.2; extra == "googlefonts"
Requires-Dist: fonttools[lxml,unicode]; extra == "googlefonts"
Requires-Dist: protobuf<4,>=3.7.0; extra == "googlefonts"
Requires-Dist: stringbrewer; extra == "googlefonts"
Requires-Dist: unicodedata2; extra == "googlefonts"
Requires-Dist: fontbakery[beautifulsoup4]; extra == "googlefonts"
Requires-Dist: fontbakery[googlefontsalwayslatest]; extra == "googlefonts"
Requires-Dist: fontbakery[shaperglot]; extra == "googlefonts"
Provides-Extra: iso15008
Provides-Extra: microsoft
Provides-Extra: notofonts
Requires-Dist: fontbakery[googlefonts]; extra == "notofonts"
Provides-Extra: typenetwork
Requires-Dist: unicodedata2; extra == "typenetwork"
Requires-Dist: fontbakery[beautifulsoup4]; extra == "typenetwork"
Requires-Dist: fontbakery[shaperglot]; extra == "typenetwork"
Provides-Extra: docs
Requires-Dist: myst-parser==2.*,>=2.0.0; extra == "docs"
Requires-Dist: sphinx==7.1.*,>=7.1.2; extra == "docs"
Requires-Dist: sphinx_rtd_theme==2.*,>=2.0.0; extra == "docs"
Requires-Dist: m2r==0.3.*,>=0.3.1; extra == "docs"
Provides-Extra: all
Requires-Dist: fontbakery[docs]; extra == "all"
Requires-Dist: fontbakery[adobefonts]; extra == "all"
Requires-Dist: fontbakery[fontval]; extra == "all"
Requires-Dist: fontbakery[fontwerk]; extra == "all"
Requires-Dist: fontbakery[googlefonts]; extra == "all"
Requires-Dist: fontbakery[iso15008]; extra == "all"
Requires-Dist: fontbakery[notofonts]; extra == "all"
Requires-Dist: fontbakery[typenetwork]; extra == "all"
Provides-Extra: tests
Requires-Dist: black==23.12.1; extra == "tests"
Requires-Dist: pylint==3.0.3; extra == "tests"
Requires-Dist: pytest-cov==4.1.0; extra == "tests"
Requires-Dist: pytest-xdist==3.5.0; extra == "tests"
Requires-Dist: requests-mock==1.10.0; extra == "tests"
Requires-Dist: fontbakery[all]; extra == "tests"
Dynamic: license-file

[![Latest PyPI Version](https://img.shields.io/pypi/v/fontbakery.svg?style=flat)](https://pypi.python.org/pypi/fontbakery/)
[![Python](https://img.shields.io/pypi/pyversions/fontbakery.svg?style=flat)](https://pypi.python.org/pypi/fontbakery/)
[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-brightgreen.svg)](https://github.com/fonttools/fontbakery/blob/main/LICENSE.txt)

# [![Font Bakery](data/logo.png)](http://fontbakery.com)

Font Bakery is a command-line tool for checking the quality of font projects.

See also: [Fontspector](https://github.com/fonttools/fontspector) (the Rust port of Font Bakery).

For a quick overview, check out the [list of checks](https://fontbakery.readthedocs.io/en/latest/fontbakery/profiles/index.html) currently offered.
And for a full written introduction [check out our documentation at Read The Docs.](https://fontbakery.readthedocs.io/en/stable)

For video introductions, see the [TypeCon 2018](https://www.youtube.com/watch?v=5S3cN3VHfBg) and [ATypI 2020](https://www.youtube.com/watch?v=6OKE6p9E0eY)  FontBakery presentations.

Font Bakery has an active community of contributors from foundries around the world, including Adobe Fonts, Dalton Maag, Type Network, and Google Fonts.

Font Bakery is not an official Google project, and Google provides no support for it.
However, throughout 2018-2025 a project maintainer, Felipe Corrêa da Silva Sanches ([@felipesanches](https://github.com/felipesanches)), is commissioned by the Google Fonts team to maintain it.
The original software architecture (and maintenance of it) is by Lasse Fister ([@graphicore](https://github.com/graphicore)).

## Run Font Bakery automatically on Github Actions

Simon Cozens prepared a [template git repo](https://github.com/googlefonts/Unified-Font-Repository) that makes it easy to build, check and proof fonts. He's also prepared a nice [1 minute video](https://youtu.be/OyCOnY9BP94) showcasing it.

## License

Font Bakery is available under the Apache 2.0 license.

All comments on the issue tracker or on pull requests will be treated as also licensed under this license such that they can be incorporated into the project code.

## Install

See the Font Bakery Installation Guide for your platform:

- [GNU + Linux](https://fontbakery.readthedocs.io/en/latest/user/installation/install-gnu-linux.html)
- [macOS](https://fontbakery.readthedocs.io/en/latest/user/installation/install-macos.html)
- [Windows](https://fontbakery.readthedocs.io/en/latest/user/installation/install-windows.html)

## Usage

Font Bakery is primarily a Terminal app, learn more in the [Command Line Usage Guide](https://fontbakery.readthedocs.io/en/latest/user/USAGE.html).

If you write little Python scripts in your workflow, you can easily [write custom checks](https://fontbakery.readthedocs.io/en/latest/developer/writing-profiles.html).

For full developer documentation, check out [fontbakery.readthedocs.io](https://fontbakery.readthedocs.io) (a hosted and compiled copy of contents in the `/docs` directory.)

## Contributing

See the guide to [Getting Started as a Contributor](https://fontbakery.readthedocs.io/en/latest/developer/contrib-getting-started.html).

## History

The project was initiated by Dave Crossland in 2013 to accelerate the onboarding process for Google Fonts. 
In 2017 Lasse Fister and Felipe Sanches rewrote it into a modern, modular architecture suitable for both individuals and large distributors.
Felipe has maintained the check contents since 2016.

In 2017, Lasse began a sister project, [Font Bakery Dashboard](https://GitHub.com/GoogleFonts/Fontbakery-Dashboard):
A UI and a cloud system that scales up for checking 1,000s of font files super fast and in parallel, by using 1,000s of "container" virtual machines.
See his [TypoLabs 2018 talk on YouTube](https://www.youtube.com/watch?v=Kqhzg89zKYw) and its [presentation deck](https://docs.google.com/presentation/d/14dU3cUXelwvpVokhKYmJ6jT51AASDaOFyEUSdxb0RAg/).
However, the project was halted at the end of 2019.

Most of the checks are for OpenType binary files, and project metadata files. 
(Currently, the Google Fonts `METADATA.pb` files are supported.)

If you are developing a font project publicly with Github (or a similar host) you can set up a Continuous Integration service (such as GHActions) to run Font Bakery on each commit, so that with each update all checks will be run on your files.

## Trivia

* [Advances in Continuous Integration Testing at Google](https://ai.google/research/pubs/pub46593) - 2018 presentation
