Skip to content

Instantly share code, notes, and snippets.

View arrowtype's full-sized avatar

Stephen Nixon arrowtype

View GitHub Profile
@arrowtype
arrowtype / proof-T-kerns.drawbot.py
Created April 17, 2024 22:12
A drawbot script used to proof kerns against the letter T
"""
This script requires some edits to be useful. Originally written for proofing Name Sans.
Demoed at https://www.youtube.com/watch?v=3a9KIPi_rTU
MIT License. Go ahead and use it!
Goals:
- Test `T` and `T.ultra` against basic lowercase: `TaTbTcT` etc, across full designspace, and especially around where it swaps to `T.ultra`
- Test `T` and `T.ultra` against relatively common diacritics
@arrowtype
arrowtype / draw-glyph-outline.drawbot.glyphsapp.py
Last active March 29, 2024 16:51
For DrawBot in GlyphsApp: Draw a glyph's outlines & nodes, for presentation / social media purposes
"""
Script to create an image of a glyph in the current layer.
Instructions:
- Use within the Drawbot plugin of GlyphsApp.
- Get this plugin via Window > Plugin Manager, then search for "Drawbot" and install it.
- Then, go to File > New Drawbot, and paste in this code and run it.
- You may need to restart glyphs for the Plugin to work.
@arrowtype
arrowtype / remove-overlap-selected-contours.py
Last active September 23, 2023 19:39
RoboFont script to remove overlap in selected contours, or else current glyph
# menutitle: Remove Overlap in Selected Contours
# shortcut: control+command+o
g = CurrentGlyph()
with g.undo("Remove overlap"):
d_glyph = g.asDefcon()
sel = d_glyph.selection
sel.removeOverlap()
@arrowtype
arrowtype / add-ufo2ft-filters-to-ufos_in_dir.py
Last active July 31, 2023 19:37
A Python script to set ufo2ft filters in UFOs, in order to run them on FontMake builds
"""
A script to set ufo2ft filters for all fonts in a directory.
DIRECTIONS: Set up the dict below with filters you would like to use in your UFO builds. Then, run it in the command
line like this, replacing the <content surrounded by angle brackets> with relavent paths:
python3 "<path_to_this_script>/add-ufo2ft-filters-to-ufos_in_dir.py" "<path_to_a_folder_containing_UFO_fonts>"
See https://github.com/googlefonts/fontmake/blob/a4c83a0693ae7c629db9385a9e68d8641d85718e/USAGE.md#outline-filtering
for more information.
@arrowtype
arrowtype / LICENSE.txt
Created September 21, 2020 14:52
A RoboFont script to generate a faux-italic font
Copyright 2020 Arrow Type / Stephen Nixon
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
@arrowtype
arrowtype / example-designspace.designspace
Last active June 30, 2023 14:20
A script to help sync spacing & shaping for support sources within a large designspace.
<?xml version='1.0' encoding='UTF-8'?>
<designspace format="5.0">
<axes elidedfallbackname="Regular">
<axis tag="opsz" name="Optical Size" minimum="8" maximum="72" default="8">
<labelname xml:lang="en">Optical Size</labelname>
<map input="72" output="72"/>
<map input="20" output="40"/>
<map input="8" output="8" name="Text" elidable="true"/>
</axis>
<axis tag="wght" name="Weight" minimum="1" maximum="1000" default="700">
@arrowtype
arrowtype / README.md
Last active June 27, 2023 16:48
Example script that helps keep support sources up to date between full sources of a designspace.
@arrowtype
arrowtype / compute-remaining-unicodes.py
Last active June 26, 2023 17:03
A command-line tool to produce a "trial font" for input OTF or TTF font files, using Python 3 & FontTools
"""
From
https://github.com/arrowtype/recursive/blob/eb821735e66402b4b485ce97ed32b09a8555341e/src/build-scripts/make-release/compute-remaining-unicodes-in-font.py
The FontTools Subsetter expects unicode ranges for *inclusion*, but
often you just know which ranges you want to *exclude* from a font subset.
So, this script will accept a font, then report what Unicode values
it includes *beyond* given Unicode ranges.
@arrowtype
arrowtype / fonttools-recording-pen-example.py
Created June 23, 2023 22:05
Basic example of how to use the FontTools Recording Pen
"""
A basic example of how to open a UFO and print out the bezier curve values from a glyph.
Example expanded from:
https://fonttools.readthedocs.io/en/latest/pens/recordingPen.html
Requires FontTools and FontParts.
"""
from fontParts.fontshell import RFont as Font
@arrowtype
arrowtype / zipit.sh
Created June 7, 2023 22:04
A shell function to zip folders, excluding macOS metadata files. Add to your .bash_profile (or similar) to have a "zipit" command.
function zipit {
currentDir=$(pwd) # get current dir so you can return later
cd $(dirname $1) # change to target’s dir (works better for zip)
target=$(basename $1) # get target’s name
zip -r $target.zip $target -x '*/.DS_Store' # make a zip of the target, excluding macOS metadata
echo "zip made of " $1 # announce completion
cd $currentDir # return to where you were
}