Skip to content

Instantly share code, notes, and snippets.

import ezui
from math import hypot
from mojo.roboFont import OpenWindow
from mojo.subscriber import Subscriber, registerGlyphEditorSubscriber, registerSubscriberEvent, roboFontSubscriberEventRegistry, unregisterGlyphEditorSubscriber
from mojo.events import postEvent
'''
a simple demo tool to define measurements between pairs of points
@gferreira
gferreira / move-RF4.py
Last active October 11, 2021 18:24
a simple move glyph tool for RF4 -- built with Subscriber and Merz
from vanilla import FloatingWindow, CheckBox, Button, TextBox
from mojo.UI import NumberEditText, UpdateCurrentGlyphView
from mojo.roboFont import CurrentGlyph
from mojo.subscriber import Subscriber, WindowController, registerGlyphEditorSubscriber
from mojo.pens import DecomposePointPen
class MoveGlyphsPanel(Subscriber, WindowController):
# ----------
@gferreira
gferreira / fixItalicSlantOffset_AllLayers.py
Last active January 28, 2022 17:48
fixes fonts with Italic Angle but no Italic Slant Offset
import math
### updated version of a script by Lukas Schneider, available from the RoboFont documentation:
### http://robofont.com/documentation/tutorials/making-italic-fonts/#applying-the-italic-slant-offset-after-drawing
### changes in this version:
### - handles all layers of all open fonts
### - fixed syntax for FontParts / RoboFont 3
'''
fixes fonts with Italic Angle but no Italic Slant Offset
from AppKit import NSApp
from vanilla import FloatingWindow, EditText, List, Button
from lib.tools.shortCutTools import getShortCuts
from lib.UI.fileBrowser import shortKeyToString
class CommandPalette:
def __init__(self):
shortcuts = getShortCuts()
@gferreira
gferreira / InterpolationPreviewSpaceCenter.py
Last active April 5, 2020 19:49
Preview interpolation result in the Space Center using representations.
'''
just a proof of concept, name of the second master is hard-coded at the bottom
'''
from vanilla import FloatingWindow, CheckBox, Slider
from defconAppKit.windows.baseWindow import BaseWindowController
from mojo.events import addObserver, removeObserver
from mojo.UI import CurrentSpaceCenter
import mojo.drawingTools as ctx
@gferreira
gferreira / svg-test.html
Last active February 3, 2020 20:42
SVG + HTML + CSS + JS example
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>SVG test</title>
<style>
@keyframes colorChange { from { background-color: yellow; } to { background-color: red; } }
svg { animation: colorChange 3s infinite alternate; }
#circle { fill: grey; } /* cursor: move; */
import os, operator
from fontParts.world import OpenFont
def autoStartPoints(glyph):
if not glyph.bounds:
return
for contour in glyph:
points = [(pt.x, pt.y, pt) for pt in contour.points if pt.type != 'offcurve']
sortedPoints = sorted(points, key=operator.itemgetter(1, 0))
firstPoint = sortedPoints[0][2]
@gferreira
gferreira / vanilla-move-layers-test.py
Last active October 1, 2019 07:10
Q: can vanilla windows talk to each other? A: yes they can!
from AppKit import NSApp
from vanilla import *
class LayersWindow(object):
def __init__(self):
self.w = FloatingWindow((123, 200), title='layers')
self.w.layers = List((10, 10, -10, -10), ['foreground', 'background', 'sketches'])
self.w.bind("close", self.closeCallback)
self.w.vanillaWrapper = self
{
"lastUpdate": "2019-09-20 20:56",
"extensions": [
{
"extensionName": "Add Overlap",
"repository": "https://github.com/roboDocs/AddOverlap",
"extensionPath": "AddOverlap.roboFontExt",
"description": "Creates an overlap for the selected points.",
"developer": "Alexandre Saumier Demers",
"developerURL": "http://asaumierdemers.com",
@gferreira
gferreira / bulk-list.py
Last active August 6, 2019 15:51 — forked from okay-type/bulk-list.py
dropfile-ui
# jackson # [email protected]
import os
from AppKit import NSFilenamesPboardType, NSDragOperationCopy
from vanilla import Window, List, Button
class doThing():
def __init__(self, path):