/drawBotProofing

Primary LanguagePythonMIT LicenseMIT

DrawBot scripts for proofing fonts and/or UFOs.

Prerequisites

  • we recommend using a Python virtual environment. You can easily create and activate one with the following commands in Terminal:
python3 -m venv my_venv
source my_venv/bin/activate
  • once you have a virtual environment activated, install drawBot and script dependencies by running the following command from the same directory where this file resides:
python -m pip install -r requirements.txt

You're now ready to run the scripts!


accentProof.py

Proof of all accents with a representation of all glyphs using that accent, and example words for each accent (both upper- and lowercase). Additionally, words with “merged” non-abc glyphs (such as æðøß) will be shown.

This script is currently limited to AL-3, an extension to AL-4 and beyond is thinkable.

Input: single font or folder containing font files.

accentProof.py


alphabetProof.py

Creates example pages for:

  • general alphabet (upper- and lowercase)
  • spacing proofs
  • some sample words

Modes (proof, spacing, sample) can be chosen individually, or all at once (all). Writing systems supported are lat, grk, cyr, and figures.

Input: one or more font files.

alphabetProof.py

alphabetProof.py

alphabetProof.py


charsetProof.py

Visualizes a given (Adobe) character set. The default charset is AL-3. Code points not supported in the font at hand will be shown as a .notdef glyph (but are still present as text in the PDF file).

More information on Adobe’s character sets:

Input: font file(s) or folder of fonts.

charsetProof.py

charsetProof.py

charsetProof.py


comparisonProof.py

Create lines for a string of characters, set in all fonts that support it. The choice of fonts is either all installed fonts (no argument), or all fonts in a given folder tree. The font list can be filtered by supplying a regular expression.

This proof helps solving the question: “How do other fonts deal with this weird glyph?”

Slow.

comparisonProof.py

comparisonProof.py

comparisonProof.py


contextProof.py

Creates example pages for usage of a specific letter or letter combination.

Needs a word list as an input file, such as the word lists available at https://github.com/hermitdave/FrequencyWords/tree/master/content/2016

Input: font file(s) or folder of fonts.

contextProof.py

contextProof.py


figureSpacingProofUFO.py

Simple script check figure spacing in UFOs (without kerning). For each figure suffix (such as .tosf), a new spacing page is made.

Input: single UFO or folder containing UFO files.

figureSpacingProofUFO.py


glyphProofUFO.py

Creates PDF document which helps comparing glyphs of different weights to each other. Various modes are possible – the default is an Autopsy-like showing of glyphs side-by-side. Other modes include gradient, single, overlay.

Input: folder with UFO files or individual UFOs

glyphProofUFO.py

glyphProofUFO.py

glyphProofUFO.py

glyphProofUFO.py


glyphsetProof.py

Visualizes the complete glyphset of a font or UFO on a single page. The output is good to use with a diffing tool like diff-pdf in a later step.

The glyphset can be filtered with a regular expression (for example, use -r ".*dieresis" to show all glyphs whose names end with -dieresis).

Input: folder containing UFO or font files, individual fonts or UFOs.

glyphsetProof.py

glyphsetProof.py


makeReadme.py

Create/update the README.md file for this repository.

python3 makeReadme.py

textProof.py

Creates example paragraphs corresponding to a given character set. Default mode is creating single-page PDF with a random subset of the requested charset, alternatively a full charset can be consumed systematically, to show as many characters as possible.

Known bug: line spacing may become inconsistent if a character set beyond the font’s character support is requested (this is a macOS limitation caused by the vertical metrics in a given fallback font).

Input: folder containing fonts, or single font file.

textProof.py

textProof.py

textProof.py


unicodeChartProof.py

Creates character charts similar to those appearing in The Unicode® Standard, but using the supplied font (and only the characters present in the font).

Input: font file or folder containing font files

CLI Inputs: see help

unicodeChartProof.py

unicodeChartProof.py

unicodeChartProof.py


verticalMetricsComparisonProof.py

Creates pages with example characters to visualize the variation of vertical metrics across a typeface family.

Input: folder containing font or UFO files.

verticalMetricsComparisonProof.py


verticalMetricsProof.py

Creates simple view which illustrates all vertical metrics set in the font metadata. Additionally, tallest and lowest glyphs are shown.

Using the -n option, the number of extreme glyphs can be increased.

Input: font file

verticalMetricsProof.py

verticalMetricsProof.py

verticalMetricsProof.py


waterfallProof.py

Creates pages of example words for a list of fonts, arranged in waterfall-like fashion (both vertically and horizontally).

The proof text comes from the waterfall_horizontal and waterfall_vertical text files found in the _content folder.

Input: folder containing font files.

waterfallProof.py

waterfallProof.py


Acknowledgements

  • "en_10k.txt" is based on en_50k.txt from the FrequencyWords project, Copyright (c) 2016 Hermit Dave
  • fonts included in this distribution are subject to the SIL Open Font License, Copyright 2016-2023 Adobe.
  • Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the United States and other countries.