Skip to content

Repository files navigation

DrawBot scripts for proofing fonts and/or UFOs.

This is a collection of scripts to facilitate making proofing PDFs for fonts – proofs are an inherent part of the typeface design process. I found these scripts useful in my day-to-day work, and I figured they may be useful for a bigger audience. Please understand that this collection of scripts grew organically, so they may not all follow the exact same structure – some scripts will accept both font and UFO files, while others will accept only fonts (for details, see the Usage section.)

NB: While this repository is called DrawBot Proofing, the scripts will not run in the DrawBot desktop application. The DrawBot part comes from the use of the DrawBot Python module. Execute all scripts on the command line (run in Terminal) – see Quick Start.

Installation

Read full installation instructions in INSTALLATION.md.

Usage

After installation, the following commands will be available:

Proofing Tools accepting fonts and UFOs:

  • glyph-proof - compare glyphs
  • glyphset-proof - the whole glyphset on one page
  • figure-spacing-proof - compare figure spacing proofs
  • vertical-metrics-comparison-proof - compare vertical metrics across fonts

Proofing Tools accepting fonts:

  • accent-proof - check accents and their use accent proofs
  • alphabet-proof - various basic proofs for different writing systems
  • charset-proof - check for a given charset on one page
  • context-proof - see characters in context
  • text-proof - pages with example paragraphs
  • unicode-chart-proof - generate Unicode character charts
  • vertical-metrics-proof - visualize vertical metrics
  • waterfall-proof - create various waterfalls

Other Proofing Tools:

  • overlay-font-proof - overlay two fonts
  • reference-proof - compare multiple fonts side by side

Quick Start

Once the package is installed, you can start using the tools immediately:

# Make an Alphabet Proof
alphabet-proof /path/to/your/font.otf

# Make an proof to compare glyphs in 2 UFOs
glyph-proof /path/to/one.ufo /path/to/another.ufo

# Make a text proof using character set AL3
text-proof -c al3 -f /path/to/your/font.otf 

# Get help for any command
text-proof --help
alphabet-proof --help

Tools

accent-proof

Proof of all Latin accents supported by a given font, with example words for each accent (both upper- and lowercase). Additionally, words with “atomic” Latin base glyphs (such as æðøß) will be shown.

Input:

  • font file(s), or folder(s) containing font files

accentProof.py


alphabet-proof

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, ara, tha, and figures. By default, supported writing systems are automatically chosen on a per-font basis.

Kerning can be toggled off (-k).

Optionally, a sample string (-s), or an input text file file (-t) can be specified. When using an input a text file, there will be no reflow (which may mean that lines exceed the right edge of the page). A double-line break in the text file translates to a new page in the proof.

Input:

  • font file(s), or folder(s) containing font files

alphabetProof.py

alphabetProof.py

alphabetProof.py


charset-proof

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(s) containing font files

charsetProof.py

charsetProof.py

charsetProof.py


context-proof

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(s) containing font files

contextProof.py

contextProof.py


figure-spacing-proof

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

Input (pick one):

  • folder(s) containing UFO- or font files
  • individual UFO- or font files
  • designspace file (for proofing UFO sources)

figureSpacingProof.py


glyph-proof

Creates a PDF document which helps comparing glyphs to each other. Various modes are possible – the default is an Autopsy-like showing of glyphs in a grid view. Other modes include

  • gradient (horizontal waterfall)
  • single (page-by-page)
  • overlay (superimposed outline view)

Input (pick one):

  • folder(s) containing UFO- or font files
  • individual UFO- or font files
  • designspace file (for proofing UFO sources)

In the input filtering process, UFO files are preferred to fonts, OTFs to TTFs. If results are unexpected, it helps to specify input files one-by-one.

glyphProof.py

glyphProof.py

glyphProof.py

glyphProof.py


glyphset-proof

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 (pick one):

  • folder(s) containing UFO- or font files
  • individual UFO- or font files
  • designspace file (for proofing UFO sources)

glyphsetProof.py

glyphsetProof.py

glyphsetProof.py


overlay-proof

Proofing tool for overlaying releated fonts on top of each other. Some smartness is used to make sure fonts end up on the same baseline.

To-Do:

  • make font pairing smarter
  • allow overlaying static and VF

Input (pick one):

  • folder(s) containing font files
  • individual font files

overlayProof.py


reference-proof

Create samples 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?”

Input:

  1. sample characters
  2. folder containing font files (or no argument, which means parsing all installed fonts)

referenceProof.py

referenceProof.py

referenceProof.py


text-proof

Create example paragraphs corresponding to a given character set.

Default mode is creating single-page PDF with a random subset of the requested charset. Optionally, a full charset can be consumed systematically, to show as many characters as possible. The alternative mode is using a text file as input, to achieve more predictable (and comparable) output. In text-mode, the output is limited to a single page (no matter how long the text file may be).

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:

  • font file(s), or folder(s) containing font files

Optional input:

  • choice of text file (-t) or charset name (-c)
  • secondary font(s) (-s) (for mixing Roman/Italic, for example)

textProof.py

textProof.py

textProof.py


unicode-chart-proof

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


vertical-metrics-comparison-proof

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

Input (pick one):

  • folder(s) containing UFO files or font files
  • individual UFO- or font files
  • designspace file (for proofing UFO sources)

verticalMetricsComparisonProof.py


vertical-metrics-proof

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

Using the -e option, the number of reported extreme glyphs can be modified.

Input:

  • font file(s), or folder(s) containing font files

verticalMetricsProof.py

verticalMetricsProof.py

verticalMetricsProof.py


waterfall-proof

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.

About

No description, website, or topics provided.

Resources

Code of conduct

Stars

56 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages