Robothon 2009: day 2
Just van Rossum: TTX and FontTools
TTX is the XML-based file format that Just van Rossum’s FontTools package likes to operate with. It is also the name of the command-line application used to convert font files into this format.
Running ttx Arial.ttf on the command line produces a .ttx file with all the dumped tables and features, as well as disassembled TrueType instructions. The TTX command-line tool also works for OpenType fonts, and there’s also the option to dump each table onto a separate font file. After tweaking the resulting TTX files, they can be re-assembled back into the TrueType format.
TTX’s soul is the ttLib library, which unfortunately is not very well documented (even though the Python docstrings inside the code are really detailed). It deals with various TrueType tables, binary and other internal data. Just went through the code, showing some parts of ttLib such as the transformation module and the Pen element, which is used to draw Bézier data.
After some technical details, Just proceeded to demo fontTools using DrawBot through a small script he wrote on the spot to draw a glyph into the DrawBot canvas using the FontTools library.
He also showed a Robofab module which implements the Pen object in the Quartz backend. Pens are abstractions of the drawing process and do not necessarily draw stuff on screen; there’s many pens available in Robofab, which is based on FontTools — MarginPen, PointPen, PointToSegmentPen, DigestPointPen, ControlBoundsPen, TransformPen, ThresholdPen, FlattenPen. The ‘pen’ abstraction is a bit confusing in the sense that it corresponds to any path operation, not only drawing; after Just’s explanations, it looks like a very clean-cut and Pythonic way to control Bézier drawing — maybe there’s something for Shoebot here.
After the talk, Gustavo pointed out a detail that i had missed — that there’s an FFPen by Erik van Blokland which is made for Fontforge; this is something i totally have to dive in when i get back to Rotterdam.
Georg Seifert: Glyphs
Glyphs is a font editor made by Georg Seifert made for the purpose of trying out new ideas, editing stuff in context and mainly showing that font editors can look nice. It’s not complete yet and some features are yet to be implemented, but there’s already a good plugin interface, UFO support, Python and AppleScript scripting, Unicode glyph info, and most of the final GUI is already done. Now we switch to a demo of the app.
The app looks really minimal, but the interface is actually very well thought out, unlike the usual large toolboxes of Fontographer and Fontforge. There’s also very good typographic taste in the UI.
Now things are getting really interesting: there’s multi-glyph editing! One can type the characters to see in the glyph window, just like a text editor, and they can be edited separately while the others sit there for comparison — a deceptively simple feature but the kind of thing you’d ask “Why don’t other editors do this?”. Inside this multiglyph window, kerning can also be set without switching to another part of the interface — this is really clever.
Murphy reared his ugly head and forced Georg to do a quick live debug of his application, which was fun and impressive :-)
Georg keeps the good stuff coming: when working with slanted characters, the kerning bounding box is slanted as well, which frees the user from having to compensate for the extra space at one side of the glyph. There’s also wonderful features for accented characters — their anchor/reference points can be manipulated and the result can be seen live in the other glyphs inside the glyph window.
Autopsy is a set of font auditing tools for use with FontLab.
There’s some pretty graph generators for getting specific features and variations inside a font family. Yanone showed the installation procedure and went on to show how Autopsy can work with a Multiple Master font; running Autopsy offers the option to generate a PDF with the final report; this report can include graphs for widths, bounding box properties, spacing, metrics and guidelines, as well as a selector for specifying the Multiple Master instances to compare. There’s also an X-Ray mode to check for outline errors.
Some fun can be had with the PDF comments feature in Adobe Reader to send messages and indications back to the font designer. The tool is made particularly for quality assurance and design help, and takes advantage of the PDF notes to facilitate communication between designer and client.
Apparently it was downloaded over a thousand times but only 2 licenses were ever purchased. You could feel his frustration, and he went on to announce a cut on the app’s price (now 49euro) and that he will open source Autopsy after 20 licenses were acquired.
Yuri Yarmola & Adam Twardoch: The reason is not clear (a message from the Russian programmers)
Adam Twardoch fell sick and joined the conference via Skype; Yuri Yarmola is the main Russian programmer of FontLab and developed FontLab on Windows.
FontLab 3 was released in 1998; in 3 years version 4 came out, and finally FontLab Studio 5 was revealed in 2005. Other apps like TypeTool were made by the Russian programmers at FL.
TransType 4 will be released this year, as well as Fontographer 5 and FontLab Studio 6. In parallel, FontLab are working on what they call the ‘Victoria codebase’, which appears to be a deep rewrite of parts of the code (which will be integrated in Fontographer 6 and FL Studio 7). Their wishlist includes universal binaries for OSX, preinstalled Robofab, native reading and writing of UFO2, Robofab compatible pen objects, AFDKO integration, streamlined font naming and auto-generation of OpenType features.
Yuri now moved to ‘his’ presentation, and is now talking about Python integration in Studio 5. This is important for having direct access to FL’s internal data structures, UI integration, dialog construction (which is still quite limited) and platform independence. Stability is desired but not always a reality.
‘Fontlab Soon’/Leningrad, the codename for the current FL engine, will have Photofont plugins (free, for QuarkXPress and InDesign), zipfile support and improved UI in TransType 4. Studio 6 will not be a major release, ‘just’ an upgrade: it will have FDK 2.5 support, AFS (?) will be dropped, Fontographer code will be gradually integrated into FLStudio; in the metrics field, it will have bettter OpenType feature support, kerning classes preview and Multiple Master axis preview (maybe an algorithm for auto detection of kerning exceptions will come up); there will be better support for keyboard input (shortcuts), a Unicode database will be included, the notes feature will have a nicer interface and glyph preview will have the option for multi-coloring for reference. There will also be point-level interpolation, Fontographer algorithms for bold and simplify will be included, true hinting samples will be introduced (with source code from Microsoft) and FontAudit will be augmented.
‘Fontlab Next’, based on the Victoria codebase, will come with a total redesign and new UI, engine, tools, storage and more. Their aim is for maximum freedom (no integer point values anymore) and a lean, minimal and non-intrusive user interface. The production part of the application will be automated — no need to think about OpenTypeXXXXname and so on, this should all be done behind the scenes. The current messy UI will be revamped — no more windows, no more toolbars: the UI ought to be task and content-based. Storage will be based on open standards and support versioning and collaborative work, as well as online access. All this Victoria code is still in the design stage, and user feedback is welcomed.
Most of the media aimed for print uses color; FL has been considering color fonts support for 10 years, and that is still under the works.
Adam is now coming back to the screen to help answer questions.
The internal format could be switched to SVGfont (wow, did i get this right?) — Adam clarified that they really care about interoperability, and a format for storing font sources that can be shared with different applications (Fontforge, DTL Fontmaster); apparently switching to UFO would be a problem, and there is the need to find a standard way to support proprietary extensions [XFO], for which there will be a meeting tomorrow with the font vendors and producers.
FontLab and Fontographer will be brought together into a common engine, with Fontographer focusing on design — no worries about internals –, while FL Studio will include this hardcore technical stuff in addition to FOG’s capabilities. FLS is a lab, FOG would be a design studio (they distinguish between type designers and font engineers).
Frederik Berlaen: UFO Stretch, RoundUFO and friends
‘Type&Media hero’ Frederik Berlaen is first showing roundingUFO, an application to automatically round the corners of a font (Beowolf rounded was interesting :-)
A demo ensued: one opens a UFO and tweaks the sliders for black corners, white corners and inktrap length. Besides rounding one can ‘spike’ the corners. Then, Superpolator can be used to refine the rounding operations. Glyphs can also be individually tweaked in addition to the global parameter settings.
We move to UFOoutliner, which is meant to create outline fonts, with sliders for thickness, contrast, miter limit and rotation. After creating the outlined font one can place it back into roundingUFO and make even more pretty stuff. RoundingUFO and UFOoutliner are built around Robofab’s pens.
Now, UFOstretch: this tool was created to solve the small caps issue; one loads two interpolatable masters, defines a ‘stretch set’ (a list of glyph names) and then on to the sliders: possibilities are scaling, interpolation, tracking, skewing and baseline shifting. It’s remarkable how smooth the application responds. There’s also a great feature for measuring each letter’s thickness with a draggable guide that returns the glyph section widths.
FontBridge (open source) is a helper Python tool to dynamically activate and deactivate system fonts. UfoText is a small and lean UFO text previewer.
Mini is a promising tool to generate HTML layouts, sporting a canvas with the ability to place primitives, images, PDF import and text; but the most interesting part is importing a font for use in a text field, along with an OpenType feature list generator. The HTML output is remarkable, rendering character sets as images and including some fancy AJAX controls.
TypeCast is a visual type design version control system; you input a zipped UFO and can manipulate points and features from inside a browser, keeping revisions as you go. For type designers, there’s a ‘animate revisions’ feature to generate an animation from all existing versions. It also works from inside FontLab via a 5-line Python scripts. It’s still a proof of concept, no support for kerning.
TypeActivator, also in proof-of-concept stage, is an app to allow one to upload OTF’s and access them using a local application from a remote server.
- ufostretch.typemytype.com (not online yet?)
Tim Ahrens: Font Remix tools
Tim came up with a few FontLab macros not only intended for programmers but any FL user. Because of the word ‘macro’, he named his collection a set of ‘plugins’, which is a term more palatable to a larger audience. Installation is simple: drag the .flw to FL Studio, accept the license (free for personal use, pay for commercial) and you’re done. He keeps making the point that people are scared of new stuff (the reason for him not working with Robofab since it’s not that easy to install).
The installation file (.flw) is a simple Python file which includes all subscripts inside it as text. The installer takes those text strings and writes them into files.
He mentioned how design notes for production are usually not accurate or objective (he gave the example of Zapf’s notes on Optima). The ___ plugin’s function is to add a Multiple Master width axis for automatic condensed/expanded instance generations. Apparently his RMX tools are mostly dependent of Multiple Masters.
He went to delve on technical details regarding Multiple Masters and interpolation in general. He presented a wonderful cocktail metaphor to explain interpolation, in the sense that you weigh the amount of each ingredient to have an optimal mix. Interpolation is ‘stupid’, in the sense that it doesn’t take into account what a letter or its features are, it just shifts points; this stupidity makes, however, for a powerful tool. RMX Scaler uses this principle to, through some proportion control, generate proper small caps by interpolating widths and thicknesses.
My head was feeling very heavy at this point — too much input! — so i jotted down a few loose notes on the remainder of Tim’s talk:
- anisotropic interpolation (non-proportional x/y scaling)
- lots of math and geometry
- Tuner (sliders), Slanter (italic maker), Monospacer (good for tabular figures), MultiUpdater (merge tool)
- a novel approach to color specification: ‘YYR’ = orange! (as in two portions of yellow and one red, genius!)
- New stuff: Preparing for interpolation. De-kinking mechanism. Meet RMX Equalizer: it corrects the handle lengths between two glyphs to be interpolated.
- How to make nice curves: RMX Harmonizer. Automagic curve improvement. Beziers are always beautiful, problem shows when many are joined together. Shift or rotate the node according to the curve radius solves this.
- Telling the design intent to the computer.
- RMX SpotOn: auto curve fitter; shifting the node creates a smooth curve; smart outline drag (drag lines instead of points according to cursor position)
- remix-tools.com (there’s some good screencasts there)
I was totally exhausted by the end of the talks and had to skip the Gerrit Noordzij Prize ceremony and exhibition opening.
In a moment i’ll be filling this post with photos, as well as a wrap-up of my thoughts on the conference and the Saturday GNP seminar.