/drawBotProofing

Adobe's clone repo

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. Either prints a single page with random subset of the charset, or consumes the full charset systematically, to create a multipage document.

Known bug: line spacing may become inconsistent (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 the Unicode.org charts for 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.