All Projects → source-foundry → ufolint

source-foundry / ufolint

Licence: other
UFO source format linter

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to ufolint

perplexed
OTF monospace typeface, a derivative of IBM Plex Mono with Powerline glyphs added
Stars: ✭ 23 (+0%)
Mutual labels:  font, typeface
Giotto
Theme manager for your app: apply styles to anything you want through a plist file
Stars: ✭ 18 (-21.74%)
Mutual labels:  font, plist
alt-hack
A stylistic alternate glyph library for the Hack typeface
Stars: ✭ 85 (+269.57%)
Mutual labels:  font, typeface
Typefaces
NPM packages for Open Source typefaces
Stars: ✭ 2,581 (+11121.74%)
Mutual labels:  font, typeface
Iosevka-Mayukai
Font based on Iosevka Custom Build, with combination from Iosevka SS04 Menlo, SS07 Monaco, SS09 Source Code Pro, SS12 Ubuntu Mono, SS14 Jetbrains Mono, Hack Style, and some Nerd Font Patching.
Stars: ✭ 149 (+547.83%)
Mutual labels:  font, typeface
Playfair Display
Playfair Display is an Open Source typeface family for display and titling use.
Stars: ✭ 237 (+930.43%)
Mutual labels:  font, typeface
system-fonts
Which fonts can I use?
Stars: ✭ 29 (+26.09%)
Mutual labels:  font, typeface
Inter
The Inter font family
Stars: ✭ 13,303 (+57739.13%)
Mutual labels:  font, typeface
LxgwNewClearGothic
A Simplified Chinese sans-serif font derived from IPAex Gothic. 一款衍生于「IPAexゴシック」的简体中文黑体字型。
Stars: ✭ 203 (+782.61%)
Mutual labels:  font, typeface
basement-grotesque
The basement grotesque typeface.
Stars: ✭ 219 (+852.17%)
Mutual labels:  font, typeface
Hack
A typeface designed for source code
Stars: ✭ 14,543 (+63130.43%)
Mutual labels:  font, typeface
farro
Farro is an artsy, four-weighted, display typeface that has a peculiar personality flowing through its European humanist silhouette.
Stars: ✭ 26 (+13.04%)
Mutual labels:  font, typeface
Optician Sans
Typeface based on the historical eye charts and optotypes used by opticians world wide.
Stars: ✭ 203 (+782.61%)
Mutual labels:  font, typeface
Urbanist
Urbanist is a low-contrast, geometric sans-serif inspired by Modernist design and typography.
Stars: ✭ 374 (+1526.09%)
Mutual labels:  font, typeface
Techna Sans
Sharp, geometric typeface
Stars: ✭ 189 (+721.74%)
Mutual labels:  font, typeface
yaldevi-font
A Font family supporting Sinhala, Tamil and Latin.
Stars: ✭ 14 (-39.13%)
Mutual labels:  font, typeface
San Francisco Family
All the fonts in San Francisco family font, developed by Apple. Including new SF Camera font from iOS 13!
Stars: ✭ 141 (+513.04%)
Mutual labels:  font, typeface
Iosevka
Versatile typeface for code, from code.
Stars: ✭ 13,137 (+57017.39%)
Mutual labels:  font, typeface
helmet
Neo-grotesque typeface
Stars: ✭ 133 (+478.26%)
Mutual labels:  font, typeface
Hauora-Sans
Neo-grotesque sans-serif font originally designed for an open-sourced health research project
Stars: ✭ 83 (+260.87%)
Mutual labels:  font, typeface

PyPI Python CI Python Lints codecov Codacy Badge

ufolint is a source file linter for typeface development in Unified Font Object (UFO) source code. It was designed for continuous integration testing of UFO source contributions to typeface projects.

The application performs a UFO version specific static analysis of the source text files against the UFO v2 and v3 specifications for issues that include:

  • supported UFO version
  • mandatory files and directories
  • mandatory file path naming conventions
  • source defined file path and directory path consistency across source files
  • valid XML file format
  • *.plist file property list value checks
  • *.plist file property list value type checks
  • fontinfo.plist OpenType property naming conventions
  • fontinfo.plist OpenType property data validations
  • *.glif file format version testing
  • *.glif file outline, attribute, anchor, guideline, image, note validations
  • images follow UFO v3+ png specification
  • source files import into ufoLib library with ufoLib public methods

These tests are performed through a combination of public methods in the fontTools.ufoLib library and additional tests that are implemented in the ufolint application. ufolint catches exceptions raised in the ufoLib public read methods for all _.plist file types and all ufoLib validations performed on _.glif files. These are returned to users with informative error messages that indicate the filepath(s) of concern and exit status code 1.

Install and Upgrade

ufolint can be run locally or with remote CI testing services.

Local Install and Upgrade

Use the command:

$ pip install ufolint

Upgrade to a new version of the application with the command:

$ pip install --upgrade ufolint

Local Usage

The process is fully automated. Simply point ufolint to one or more UFO source directories and it takes care of the rest. ufolint exits with status code 0 if all tests pass and exits with status code 1 if any tests fail.

$ ufolint [UFO source path] ([UFO path 2] [UFO path3]...)
Example
$ ufolint Awesome-Regular.ufo Awesome-Bold.ufo

For critical failures that prevent the completion of further testing, ufolint exits immediately and other tests are aborted. In all other circumstances, failures are collected across the entire analysis and displayed at the completion of all tests.

ufolint provides verbose, useful error messages that include the file(s) of concern, the error type, and in many cases, the problematic line in the file.

Travis CI Setup

To continuously test your UFO source changes on Travis with each commit pushed or pull request submitted to your Github repository, use these initial two steps from the Travis Getting Started Guide:

  • Step 1: Sign in to Travis with your Github account
  • Step 2: Go to your Travis Profile page and enable Travis for the typeface repository where you would like to enable ufolint testing

Then in your Github repository,

  • Step 3: Add a file on the path .travis.yml in the root of your Github repository that includes the following text:
.travis.yml
sudo: false
language: python

env:
  - VARIANT=src/Test-Regular.ufo
  - VARIANT=src/Test-Bold.ufo
  - VARIANT=src/Test-Italic.ufo
  - VARIANT=src/Test-BoldItalic.ufo

before_script: pip install ufolint

script: "ufolint $VARIANT"

notifications:
  email: false
  • Step 4: Replace the VARIANT=src/Test-*.ufo lines in the .travis.yml file with the actual paths to your UFO source files after the = character. Use one line per variant and add or subtract lines as necessary to test the desired source UFO directories in the repository. These should be relative paths from the root of your git repository.

This Travis setting structure performs the variant tests in parallel for each of the variants specified under the env field of the Travis settings file. Each variant will be labeled on the Travis testing page like this:

  • Step 5: With each new commit pushed to your Github repository (or any new pull request submitted by others) Travis is automatically notified and performs the ufolint tests on the modified (or proposed modifications for pull requests) UFO source. You can view the test results on your Travis account page for the repository.

  • Optional: To add a Travis test result badge to your repository README page, insert the following Markdown in your README page and modify [ACCOUNT] and [REPOSITORY] with your Travis account and repository details:

[![Build Status](https://travis-ci.org/[ACCOUNT]/[REPOSITORY].svg?branch=master)](https://travis-ci.org/[ACCOUNT]/[REPOSITORY])

Acknowledgments

Built with the fantastic fontTools ufoLib library where a majority of the UFO validation work has been performed!

License

MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].