Commit 18aaa914 authored by Loraine Furter's avatar Loraine Furter

Establishing a big clean up that makes these files accessible for workshops that come after

parent c26637f9
Pipeline #365 failed with stages

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

File deleted
......@@ -3,6 +3,41 @@ OSP Morphologic @ Merz Akademie, Stuttgart
A five day workshop in which students get to grips with command line tools,
collaboratively creating a font through drawing instructions, and changing
existing libre fonts throug Python scripts.
existing libre fonts through Python scripts.
- Source Files: <http://osp.constantvzw.org/workshop/morphologic/>
- Photo Gallery: <http://ospublish.constantvzw.org/images/Morphologic-Workshop-Merz-Akademie>
### Day 1
- Introduction to the work of OSP Open Source Publishing
- Tutorial of command line interfaces.
- Tools: Terminal, Homebrew
- _Homebrew is a package manager that allows to easily install command line Unix software. Cygwin is the Windows equivalent, but offers less packages. In Windows we found running Linux in Virtualbox a better option._
### Day 2
- Procedural drawing. Using the Robofab library, students draw a letter using drawing instructions for an imaginary pen.
- Tools: Robofab, Python
- _Python is a programming language known for its clear syntax. Robofab is a programming library that makes it easy to deal with font objects in Python._
The final font as Morphologic.otf
### Day 3
- Design of a procedural transformation of a typeface
- _Designing a recipe for a software procedure is more explicit than for a human. You can tell a human to cut of all serifs of a typeface. A software interface will often see a font as just a collection of points, and if you want it to do something with the serifs you will first have to find a way to define to the software what then is a serif._
### Day 4
- Implementing a procedural transformation of a typeface
- Tools: Robofab, the GhostScript Fonts
- _The Ghostscript Fonts is a set of typefaces created to replace (and mimic) the proprietary typefaces present in the specification of Adobe PostScript (Helvetica, Times, Courier and several others). As such they represent the DNA of desktop publishing. Thus, while none of the fonts are extremely interesting in their own right, they form a great backdrop for showing procedural transformations on typefaces. And because of their free and open source license, you are actually allowed to alter and redistribute them._
### Day 5
- Presentation of the transformation on a poster
- Tools: free choice
# intro to OSP
- the world
- lady picture show
- univers else, sans guilt,
- cosic, radio panik, vj12
A simple script combining different techniques of procedural
image generation.
Using the Ruby scripting language we generate snippets of
the PostScript vector language, which we convert into pngs
by feeding them to the ImageMagick command (called `convert`).
Because we change certain variables every time we generate
the PostScripts, the illusion of motion is created.
#!/usr/bin/env python
from robofab.world import RFont
font = RFont()
font.info.familyName = "Morphologic"
font.info.styleName = "Regular"
font.info.postscriptFullName = font.info.familyName + ' ' + font.info.styleName
font.info.postscriptFontName = font.info.familyName + '-' + font.info.styleName
font.info.ascender = 750
font.info.descender = -250
font.info.xHeight = 500
font.info.capHeight = 750
font.info.unitsPerEm = 1000
font.save('Morphologic.ufo')
from robofab.world import RFont
font = RFont ('Morphologic.ufo')
try:
glyph = font ['percent']
except KeyError:
glyph = font.newGlyph ('percent')
pen = glyph.getPen()
pen.moveTo((225,100))
pen.lineTo((225,150))
pen.lineTo((475,400))
pen.lineTo((525,400))
pen.lineTo((525,350))
pen.lineTo((275,100))
pen.closePath()
font.save()
pen = glyph.getPen()
pen.moveTo((250,325))
pen.lineTo((225,350))
pen.lineTo((225,375))
pen.lineTo((250,400))
pen.lineTo((275,400))
pen.lineTo((300,375))
pen.lineTo((300,350))
pen.lineTo((275,325))
pen.closePath()
font.save()
pen = glyph.getPen()
pen.moveTo((475,100))
pen.lineTo((450,125))
pen.lineTo((450,150))
pen.lineTo((475,175))
pen.lineTo((500,175))
pen.lineTo((525,150))
pen.lineTo((525,125))
pen.lineTo((500,100))
pen.closePath()
font.save()
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ascender</key>
<integer>750</integer>
<key>capHeight</key>
<integer>750</integer>
<key>descender</key>
<integer>-250</integer>
<key>familyName</key>
<string>Morphologic</string>
<key>postscriptBlueValues</key>
<array>
</array>
<key>postscriptFamilyBlues</key>
<array>
</array>
<key>postscriptFamilyOtherBlues</key>
<array>
</array>
<key>postscriptOtherBlues</key>
<array>
</array>
<key>postscriptStemSnapH</key>
<array>
</array>
<key>postscriptStemSnapV</key>
<array>
</array>
<key>styleName</key>
<string>Regular</string>
<key>unitsPerEm</key>
<integer>1000</integer>
<key>xHeight</key>
<integer>500</integer>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="B" format="1">
<advance width="500"/>
<unicode hex="0042"/>
<outline>
<contour>
<point x="100" y="0" type="line"/>
<point x="100" y="500" type="line"/>
<point x="150" y="500" type="line"/>
<point x="150" y="300" type="line"/>
<point x="350" y="500" type="line"/>
<point x="400" y="500" type="line"/>
<point x="175" y="275" type="line"/>
<point x="400" y="50" type="line"/>
<point x="400" y="0" type="line"/>
<point