Skip to content

Instantly share code, notes, and snippets.

View connordavenport's full-sized avatar

Connor Davenport connordavenport

View GitHub Profile
@connordavenport
connordavenport / CleanGroups.py
Created March 11, 2022 21:57
A simply script to purge a font's groups of any glyphs that aren't in the font anymore.
for f in AllFonts():
fix = []
fixed = {}
todel = []
for name,contents in f.groups.items():
for gs in contents:
if gs not in f.keys():
fix.append(name)
for n in list(set(fix)):
@connordavenport
connordavenport / swapFigs.py
Created April 12, 2022 14:23
Swap onum and lnum features in SFNT file
import os
from fontTools.ttLib import TTFont
'''
list of SFNTs
'''
fontList = []
for path in fontList:
@connordavenport
connordavenport / swapFigs.py
Created April 12, 2022 14:24
Swap onum and lnum features in SFNT file. Written for Robin Mientjes
import os
from fontTools.ttLib import TTFont
'''
list of SFNTs
'''
fontList = []
for path in fontList:
@connordavenport
connordavenport / CanCloser.py
Created May 11, 2022 15:03
A series of scripts that add "open last font" functionality to RoboFont. Set the CanCloser.py as a startup script and CanCloser.py uses command+shift+T to open the last font.
from mojo.extensions import getExtensionDefault, setExtensionDefault
from mojo.events import addObserver
'''
Must set this as a start-up script!
This observer adds the font path to a list that can be accessed later
'''
DEFAULTSKEY = "com.connordavenport.CanOpener"
@connordavenport
connordavenport / AnchorPlacer.py
Created September 19, 2022 20:43
Visualize and place an anchor based on another font
from fontTools.misc import bezierTools as bT
import math
import mojo.drawingTools as d
from lib.tools.notifications import PostNotification
from mojo.events import addObserver, removeObserver, EditingTool, installTool, BaseEventTool
from defconAppKit.windows.baseWindow import BaseWindowController
from mojo.UI import PostBannerNotification, getDefault, setDefault, CurrentGlyphWindow, UpdateCurrentGlyphView, getGlyphViewDisplaySettings, setGlyphViewDisplaySettings, preferencesChanged
from vanilla import HUDFloatingWindow, Slider, SquareButton,Group
from defcon import Contour, Font
import AppKit
@connordavenport
connordavenport / bitmapFont-Drawbot.py
Last active January 26, 2024 06:29
bitmapFont-Drawbot
w = h = 1000
newPage(w,h)
fill(0)
rect(0,0,w,h)
# -------- change these -------- #
pixelSize = 7
copy = "Testing"
@connordavenport
connordavenport / video.html
Created November 8, 2022 21:20 — forked from kubarskii/video.html
Render video as ascii — use a variable font instead of ascii characters
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
@connordavenport
connordavenport / reorderDesignspaceFiles.py
Created February 7, 2023 16:26
reorder a designspace file based on values
from fontTools.designspaceLib import DesignSpaceDocument
dspPath = 'path/to/file.designspace'
tempPath = dspPath.replace(".designspace","-reordered.designspace")
dsp = DesignSpaceDocument.fromfile(dspPath)
instanceMap = {}
for instance in dsp.instances:
instanceMap[instance] = tuple(instance.designLocation.values())
reordered = sorted(instanceMap.items(), key=lambda x: x[1])
@connordavenport
connordavenport / RGlyph_GetCommits.py
Last active March 13, 2023 19:39
a custom fontparts function to get the git commits of a specific glyph. adapted from Mathieu Reguer's robofont-git tool
from git import Repo
import os
from fontTools.ufoLib.glifLib import readGlyphFromString, GlyphSet
import time
def getCommits(self,):
glif_path = get_glif_path_from_glyph(self)
commits = get_all_commit_for_file(glif_path)
history = {GlyphCommit(b):GlyphCommit(b).hash for b in commits}
return history
@connordavenport
connordavenport / gitMachineMini.py
Last active August 8, 2023 16:27
A simple git UI for robofont. Commit faster and spend more time drawing your nice fonts:)
# menuTitle : GitMachineMini
# shortCut : command+shift+c
from AppKit import NSBeep
import git
import os
import ezui
from mojo.extensions import setExtensionDefault, getExtensionDefault
import webbrowser
import re