Skip to content

Instantly share code, notes, and snippets.

'''animate individual characters in a variable font'''
fontName = 'Skia'
txt = 'variablefonts'
# steps between min/max range
steps = 12
# variable font range
variations = listFontVariations(fontName)
@gferreira
gferreira / varfonts-css_03.css
Last active April 18, 2023 14:31
Univers in CSS
/*
Exercise 3:
Univers in CSS – a tribute to Adrian Frutiger
39
45 46 47 48 49
53 55 56 57 58 59
63 65 66 67 68
73 75 76
83
@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
@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):
# ----------
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",