Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
fd613ae
automatic (and flawed) changes
frankrolf Jul 21, 2025
b7f22ff
fix main() mistakes
frankrolf Jul 21, 2025
a108c64
comparisonProof – make multiprocessing more robust
frankrolf Jul 21, 2025
2f9ebe2
textProof - fix tempFonts problem
frankrolf Jul 21, 2025
ba939b7
textProof – fix variable names
frankrolf Jul 21, 2025
390fd75
waterfallProof – remove os import
frankrolf Jul 21, 2025
9af9eea
fontSorter – improve imports
frankrolf Jul 21, 2025
7d634e4
update readme-maker and README.md
frankrolf Jul 21, 2025
62f4f59
overlayFontProof – more robust
frankrolf Jul 21, 2025
ec83205
overlayFontProof – report font pairs
frankrolf Jul 21, 2025
5c46dec
move from os.path to pathlib.Path
frankrolf Jul 22, 2025
cb1998f
figureSpacingProof – support proofing font files
frankrolf Jul 22, 2025
c113564
consequence of figureSpacingProof update
frankrolf Jul 22, 2025
4971189
figureSpacingProof – minor improvements
frankrolf Jul 22, 2025
b8adc8b
glyphProofUFO – column calculation, get glyph names
frankrolf Jul 31, 2025
2fcbe8e
glyphProofUFO – use functions for input filtering
frankrolf Aug 1, 2025
30712e0
glyphProofUFO – make get_glyph_order universal
frankrolf Aug 1, 2025
aafa70d
get_overlap_index – fix logic
frankrolf Aug 1, 2025
f62d095
glyphProofUFO – more fixes
frankrolf Aug 1, 2025
b69e75d
glyphProofUFO – accept fonts in default mode
frankrolf Aug 1, 2025
cf0d7db
make finding of font files case-insensitive
frankrolf Aug 1, 2025
80c51a8
glyphProofUFO – accept fonts in overlay mode
frankrolf Aug 2, 2025
dc5fc27
glyphProofUFO – accept fonts in single-page mode
frankrolf Aug 3, 2025
8b9ad22
glyphProofUFO – add make_anchor_dict function
frankrolf Aug 3, 2025
97bc173
glyphProofUFO – reorganize functions, make gradient UPM-sensitive
frankrolf Aug 3, 2025
a68bde7
glyphProofUFO – finalize anchor drawing feature
frankrolf Aug 3, 2025
ec821e0
rename glyphProofUFO → glyphProof
frankrolf Aug 3, 2025
b4c6e7c
glyphProof – make anchor_dict more robust
frankrolf Aug 3, 2025
b0ab7ba
some fonts might not have a PS name
frankrolf Aug 3, 2025
d5ac46e
make FontContainer and ProofingFont classes
frankrolf Aug 4, 2025
4cd3e7b
minor fixes
frankrolf Aug 4, 2025
2fd452b
update README.md
frankrolf Aug 4, 2025
f4f3a16
comparisonProof → referenceProof
frankrolf Aug 4, 2025
ba7ca05
share the same argparse formatter class
frankrolf Aug 4, 2025
b3e2100
now with enough rows!
frankrolf Aug 4, 2025
40e2e73
remove outdated file names
frankrolf Aug 5, 2025
4843485
glyphProof – fix glyph_order hiccup
frankrolf Aug 5, 2025
b07b8d9
glyphProof – allow fonts with differing UPMs
frankrolf Aug 5, 2025
6336f0e
glyphProof – fix filtering for glyphs with contours
frankrolf Aug 5, 2025
3bf3f12
Oxford comma
frankrolf Aug 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions INSTALLATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# Installation Guide

This guide explains how to install the DrawBot Proofing Tools package.

## Installation

### Option 1: Install from GitHub (Recommended)

```bash
pip install git+https://github.com/adobe-type-tools/drawBotProofing.git
```

### Option 2: Install from Local Source

If you have cloned or downloaded the repository:

```bash
# Navigate to the repository directory
cd drawBotProofing

# Install in development mode (for development)
pip install -e .

# Or install normally
pip install .
```

## Requirements

- Python 3.8 or higher
- macOS (required for DrawBot)

## Dependencies

The package will automatically install the following dependencies:
- `defcon`
- `drawbot` (from GitHub)
- `fonttools`
- `fontParts`
- `unicodedataplus`

## Available Commands

After installation, the following commands will be available:

### Core Proofing Tools
- `text-proof` - Create example paragraphs for character sets
- `alphabet-proof` - Create alphabet proofs for different writing systems
- `charset-proof` - Generate character set proofs
- `context-proof` - Create contextual proofs for specific characters
- `reference-proof` - Compare multiple fonts side by side

### Advanced Tools
- `glyph-proof` - Generate various glyph proofs
- `glyphset-proof` - Create comprehensive glyphset proofs
- `unicode-chart-proof` - Generate Unicode character charts
- `vertical-metrics-proof` - Analyze vertical metrics
- `vertical-metrics-comparison-proof` - Compare vertical metrics across fonts
- `waterfall-proof` - Create waterfall proofs
- `accent-proof` - Generate accent proofs
- `figure-spacing-proof` - Create figure spacing proofs
- `overlay-font-proof` - Create overlay comparisons between fonts

## Quick Start

After installation, you can start using the tools immediately:

```bash
# Create a text proof using a font
text-proof -f /path/to/your/font.otf -c al3

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

## Troubleshooting

### DrawBot Installation Issues

If you encounter issues with DrawBot installation, make sure you're on macOS and have the latest version of pip:

```bash
pip install --upgrade pip
```

### Missing Dependencies

If you get import errors, try reinstalling with force-reinstall:

```bash
pip install --force-reinstall git+https://github.com/adobe-type-tools/drawBotProofing.git
```

### Command Not Found

If the commands are not found after installation, make sure your Python scripts directory is in your PATH, or try:

```bash
python -m pip install --user git+https://github.com/adobe-type-tools/drawBotProofing.git
```

Then restart your terminal.

## Development Installation

For development work:

```bash
git clone https://github.com/adobe-type-tools/drawBotProofing.git
cd drawBotProofing
pip install -e .
```

This installs the package in "editable" mode, so changes to the source code are immediately reflected.

## Uninstallation

To remove the package:

```bash
pip uninstall drawbot-proofing
```
17 changes: 17 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Include content and font files
recursive-include drawbot_proofing/_content *
recursive-include drawbot_proofing/_fonts *

# Include documentation and license files
include README.md
include LICENSE.md
include CODE_OF_CONDUCT.md

# Include requirements file for reference
include requirements.txt

# Exclude development and build files
exclude makeReadme.py
global-exclude *.pyc
global-exclude __pycache__
global-exclude .DS_Store
127 changes: 70 additions & 57 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,28 @@

## Prerequisites

- we recommend using a Python virtual environment. You can easily create and activate one with the
following commands in Terminal:
```
- we recommend using a Python virtual environment. You can easily create
and activate one with the following commands in Terminal:

```bash
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
- once you have a virtual environment activated, the proofing tools themselves
can be installed via `pip`:

```bash
pip install git+https://github.com/adobe-type-tools/drawBotProofing.git
```
Further installation instructions can be found in [INSTALLATION.md](INSTALLATION.md).

You're now ready to run the scripts!
Youre now ready to start proofing!

----


### `accentProof.py`
### `accent-proof`

Proof of all accents with a representation of all glyphs using that accent,
and example words for each accent (both upper- and lowercase).
Expand All @@ -35,7 +38,7 @@ Input: single font or folder containing font files.

----

### `alphabetProof.py`
### `alphabet-proof`

Creates example pages for:

Expand All @@ -56,7 +59,7 @@ Input: one or more font files.

----

### `charsetProof.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
Expand All @@ -78,27 +81,7 @@ Input: font file(s) or folder of fonts.

----

### `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](_images/comparisonProof_1.png)

![comparisonProof.py](_images/comparisonProof_2.png)

![comparisonProof.py](_images/comparisonProof_3.png)

----

### `contextProof.py`
### `context-proof`

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

Expand All @@ -113,45 +96,60 @@ Input: font file(s) or folder of fonts.

----

### `figureSpacingProofUFO.py`
### `figure-spacing-proof`

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.
Input (pick one):
* folder(s) containing UFO files or font files
* individual UFO- or font files
* designspace file (UFO sources)

![figureSpacingProofUFO.py](_images/figureSpacingProofUFO.png)
![figureSpacingProof.py](_images/figureSpacingProof.png)

----

### `glyphProofUFO.py`
### `glyph-proof`

Creates PDF document which helps comparing glyphs of different weights
to each other. Various modes are possible – the default is an
[Autopsy](https://vimeo.com/116063612)-like showing of glyphs side-by-side.
Other modes include `gradient`, `single`, `overlay`.
Creates a PDF document which helps comparing glyphs to each other.
Various modes are possible – the default is an
[Autopsy](https://vimeo.com/116063612)-like showing of glyphs in a grid view.
Other modes include
* `gradient` (horizontal waterfall)
* `single` (page-by-page)
* `overlay` (superimposed outline view)

Input: folder with UFO files or individual UFOs
Input (pick one):
* folder(s) containing UFO files or font files
* individual UFO- or font files
* designspace file (UFO sources)

![glyphProofUFO.py](_images/glyphProofUFO_1.png)
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.

![glyphProofUFO.py](_images/glyphProofUFO_2.png)
![glyphProof.py](_images/glyphProof_1.png)

![glyphProofUFO.py](_images/glyphProofUFO_3.png)
![glyphProof.py](_images/glyphProof_2.png)

![glyphProofUFO.py](_images/glyphProofUFO_4.png)
![glyphProof.py](_images/glyphProof_3.png)

![glyphProof.py](_images/glyphProof_4.png)

----

### `glyphsetProof.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: folder containing UFO or font files, or individual font- or UFO files.
Input (pick one):
* folder(s) containing UFO files or font files
* individual UFO- or font files
* designspace file (UFO sources)

![glyphsetProof.py](_images/glyphsetProof_1.png)

Expand All @@ -161,15 +159,27 @@ Input: folder containing UFO or font files, or individual font- or UFO files.

----

### `makeReadme.py`
### `reference-proof`

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.

![referenceProof.py](_images/referenceProof_1.png)

Create/update the README.md file for this repository.
![referenceProof.py](_images/referenceProof_2.png)

python3 makeReadme.py
![referenceProof.py](_images/referenceProof_3.png)

----

### `textProof.py`
### `text-proof`

Create example paragraphs corresponding to a given character set.

Expand Down Expand Up @@ -198,7 +208,7 @@ Input:

----

### `unicodeChartProof.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).
Expand All @@ -215,18 +225,21 @@ CLI Inputs: see help

----

### `verticalMetricsComparisonProof.py`
### `vertical-metrics-comparison-proof`

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

Input: folder containing font or UFO files.
Input (pick one):
* folder(s) containing UFO files or font files
* individual UFO- or font files
* designspace file (UFO sources)

![verticalMetricsComparisonProof.py](_images/verticalMetricsComparisonProof.png)

----

### `verticalMetricsProof.py`
### `vertical-metrics-proof`

Creates simple view which illustrates all vertical metrics
set in the font metadata. Additionally, tallest and lowest glyphs are shown.
Expand All @@ -243,13 +256,13 @@ Input: font file

----

### `waterfallProof.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.
files found in the `_content` folder.

Input: folder containing font files.

Expand Down
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
12 changes: 12 additions & 0 deletions drawbot_proofing/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
"""
DrawBot Proofing Tools

A collection of font proofing tools using DrawBot for type designers and developers.
"""

__version__ = "1.0.0"
__author__ = "Adobe"
__email__ = "opensource@adobe.com"

# Import key modules for easier access
from . import proofing_helpers
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading