Skip to content

Instantly share code, notes, and snippets.

View connordavenport's full-sized avatar

Connor Davenport connordavenport

View GitHub Profile
@connordavenport
connordavenport / AutoCommit.py
Last active October 11, 2023 20:58
Automatic Git Commiter
from AppKit import NSBeep,NSTimer,NSRunLoop,NSRunLoopCommonModes
import git
import os
from mojo.extensions import setExtensionDefault, getExtensionDefault
import re
from mojo.UI import PostBannerNotification
'''
A startup script for RoboFont to automatically commit to Git every 5 minutes.
To use, run the following script with your GitHub email:
@connordavenport
connordavenport / RGlyph_markColorName.py
Last active October 18, 2024 20:19
a fontparts add on to allow one to mark a glyph by the color name
from mojo.roboFont import RGlyph
from mojo.UI import getDefault
'''
g = CurrentGlyph()
g.markColorName = "Red"
'''
def _setColorName(self, color=None):
if not isinstance(color, str):
@connordavenport
connordavenport / LayerSinker.py
Created October 12, 2023 17:09
sync layer metrics when a font opens
from mojo.subscriber import Subscriber, registerRoboFontSubscriber
class LayerSinker(Subscriber):
def fontDocumentDidOpen(self,info):
font = info["font"]
font.lib['com.typemytype.robofont.syncGlyphLayers'] = 'metrics'
registerRoboFontSubscriber(LayerSinker)
@connordavenport
connordavenport / makeAlternatesMenu.py
Last active November 17, 2023 18:06
a contextual menu for the font overview that adds an alternate glyph next to the default glyph
from mojo.events import addObserver
import ezui
from mojo.subscriber import Subscriber, registerFontOverviewSubscriber
from mojo.UI import CurrentFontWindow
class alternatesController(ezui.WindowController):
def build(self, parent):
content = """
@connordavenport
connordavenport / frontAndCenterPopover.py
Last active December 7, 2023 20:27
a simply RF popover to jump between fonts
import ezui
from merz.tools.drawingTools import NSImageDrawingTools
from mojo.UI import AllFontWindows, CurrentFontWindow, AllWindows, CurrentGlyphWindow
class frontAndCenter(ezui.WindowController):
def build(self, parent, viewType):
self.buttonMap = {}
self.parent = parent
@connordavenport
connordavenport / PrintExtensionDateOrder.py
Created December 2, 2023 20:53
a rf script to print extensions in order of building
from mojo.extensions import ExtensionBundle as bb
import datetime
import collections
from pprint import pprint
ext = bb.allExtensions()
i = {}
for e in ext:
time = bb(e).infoDictionary.get("timeStamp")
formatted_date = datetime.datetime.utcfromtimestamp(time).strftime('%Y-%m-%d %H:%M:%S')
i[time] = (e,formatted_date)
@connordavenport
connordavenport / CentroidHull.py
Created December 3, 2023 17:08
a RF script to preview a glyphs "convex hull" and "centroid"...
from mojo.roboFont import RGlyph
from fontTools.pens.basePen import BasePen
from mojo.subscriber import Subscriber, registerGlyphEditorSubscriber, unregisterGlyphEditorSubscriber, listRegisteredSubscribers
from fontPens.flattenPen import flattenGlyph
from scipy.spatial import ConvexHull
class MyCopyDecomposingPen(BasePen):
def __init__(self, glyphSet, outPen):
super(MyCopyDecomposingPen, self).__init__(glyphSet)
self._moveTo = outPen.moveTo
@connordavenport
connordavenport / PairListSetter.py
Created December 15, 2023 19:20
a little script to switch pair lists super fast!
import ezui
from mm4.tools.pairListParser import *
import metricsMachine
from mm4.mmScripting import MetricsMachineScriptingError
class PairListSetter(ezui.WindowController):
def build(self):
content = """
@connordavenport
connordavenport / CatDog.py
Created December 21, 2023 23:03
a subclass of EditingTool for adjusting the /Ldot spacing
#!/usr/bin/env python3
import AppKit
from mojo.subscriber import Subscriber, WindowController
from mojo.UI import getDefault
from mojo.events import EditingTool, installTool
from mojo.subscriber import registerGlyphEditorSubscriber, unregisterGlyphEditorSubscriber
from mojo.roboFont import OpenWindow
from mojo.tools import IntersectGlyphWithLine
@connordavenport
connordavenport / SetHighGamutPairList.py
Created January 15, 2024 20:40
a script to set MetricsMachine pair lists with high gamut ranges. functions taken from Frank's Kern-a-lytics
import metricsMachine as mm
# --------------------------------
# functions taken from Kern-a-lytics
# --------------------------------
import itertools
import collections
def high_gamut_dict(cmb_kerning, approx_amount=100):