Subscribe to RSS Subscribe to Comments

freesoftwhere.org

The Font BoF at Libre Graphics Meeting 2018

(Call it What’s New in Open Fonts, № 003 if you must. At least this one didn’t take as long as the LibrePlanet one to get pushed out into the street.)

Libre Graphics Meeting (LGM) is the annual shindig for all FOSS creative-graphics-and-design projects and users. This year’s incarnation was held in Sevilla, Spain at the end of April. I barely got there in time, having been en route from Typo Labs in Berlin a week earlier.

I put a “typography BoF” onto the schedule, and a dozen-ish people turned up. BoFs vary wildly across instances; this one featured a lot of developers…

Help

…which is good. I got some feedback to a question I posed in my talk: where is the “right” place for a font package to integrate into a Linux/FOSS help system? I could see that working within an application (i.e., GIMP ingests any font-help files and makes them available via the GIMP help tool) or through the standard desktop “help.”

Currently, font packages don’t hook into the help system. At best, some file with information might get stuffed somewhere in /usr/share/doc/, but you’ll never get told about that. But they certainly could hook in properly, to provide quick info on the languages, styles, and features they support. Or, for newer formats like variable fonts or multi-layer color fonts, to provide info on the axes, layers, and color palettes. I doubt anyone could use Bungee without consulting its documentation first.

But a big question here (particularly for feature support) is what’s the distinction between this “help” documentation and the UI demo strings that Matthias is working on showing in the GTK+ font explorer (as discussed in the LibrePlanet post).

The short answer is that “demo strings” show you “what you will get” (and do so at a glance); help documentation tells you the “why this is implemented” … and, by extension, makes it possible to search for a use case. For example: SIL Awami implements a set of features that do Persian stylistic swashes etc.

You could show someone the affected character strings, but knowing the intent behind them is key, and that’s a help issue. E.g., you might open the help box and search for “Persian fonts” and you’d find the Awami help entry related to it. That same query wouldn’t work by just searching for the Arabic letters that happen to get the swash-variant treatment.

Anyway, GIMP already has hooks in place to register additions to its built-in help system; that’s how GIMP plug-ins get supported by the help framework. So, in theory, the same hooks could be used for a font package to let GIMP know that help docs are available. Inkscape doesn’t currently have this, but Tavmjong Bah noted that it wouldn’t be difficult to add. Scribus does not seem to have an entry point.

In any case, after just a couple of minutes it seemed clear that putting such help documentation into every application is the wrong approach (in addition to not currently being possible). It ought to be system wide. For desktop users, that likely means hooking into the GNOME or KDE help frameworks.

Styles and other human-centric metadata

The group (or is it birds?) also talked about font management. One of the goals of the “low hanging fruit” improvements to font packaging that I’ve been cheerleading for the past few months is that better package-level features will make it possible for *many* application types and/or utilities to query, explore, and help the user make font decisions. So you don’t get just the full-blown FontMatrix-style manager, but you might also get richer font exploration built into translation tools, and you might get a nice “help me find a replacement for the missing font in this document” extension for LibreOffice, etc. Maybe you could even get font identification.

Someone brought up the popular idea that users want to be able to search their font library via stylistic attributes. This is definitely true; the tricky part is that, historically, it’s proven to be virtually impossible to devise a stylistic-classification scheme that (a) works for more than just one narrow slice of the world’s typefaces and (b) works for more than just a small subset of users. PANOSE is one such system that hasn’t take the world over yet; another guy on Medium threw Machine Learning at the Google Fonts library and came up with his own classification set … although it’s not clear that he intends to make that data set accessible to anybody else.

And, even with a schema, you’d still have to go classify and tag all of the actual fonts. It’d be a lot of additional metadata to track; one person suggested that Fontbakery could include a check for it — someone else commented that you’d really want to track whether or not a human being had given those tags a QA/sanity check.

Next, you’d have to figure out where to store that stylistic metadata. Someone asked whether or not fontconfig ought to offer an interface to request fonts by style. Putting that a little more abstractly, let’s say that you have stylistic tags for all of your fonts (however those tags are generated); should they get stored in the font binary? In fonts.conf? Interestingly enough, a lot of old FontMatrix users still have their FontMatrix tags on their system, so they say, and supporting them is kind of a de-facto “tagging solution” for new development projects. Style tags (however they’re structured) are just a subset of user-defined tags anyway: people are certainly going to want to amend, adjust, overwrite, and edit tags until they’re useful at a personal level.

Of course, the question of where to store font metadata is a recurring issue. It’s also come up in Matthias Clasen’s work on implementing smart-font–feature previews for GTK+ and in the AppStream project <font>-object discussion. Storing everything in the binary is nice ‘n’ compact, but it means that info is only accessible where the binary is — not, for example, when you’re scrolling through a package manager trying to find a font you want to install. Storing everything in a sidecar file helps that problem, but it means you’ve got two files to lose instead of one. And, of course, we all die a little on the inside whenever we see “XML”.

Dave Crossland pointed out one really interesting tidbit here: the OpenType STAT table, which was ostensibly created in conjunction with the variable-fonts features, can be used in every single-master, non-variable font, too. There, it can store valuable metadata about where each individual font file sits on the standard axes of variation within a font family (like the weight, width, and optical size in relation to other font files). I wrote a brief article about STAT in 2016 for LWN if you want more detail. It would be a good thing to add to existing open fonts, certainly. Subsequently, Marc Foley at Google has started adding STAT tables to Google Fonts families; it started off as a manual process, but the hope is that getting the workflow worked out will lead to proper tooling down the line.

Last but not least, the Inkscape team indicated that they’re interested in expanding their font chooser with an above-the-family–level selector; something that lets the user narrow down the fonts to choose from in high-level categories like “text”, “handwriting”, “web”, and so on. That, too, requires tracking some stylistic information for each font.

The unanswered question remains whose job it should be to fix or extend this sort of metadata in existing open fonts? Particularly those that haven’t been updated in a while. Does this work rise to the level of taking over maintainership of the upstream source? That could be controversial, or at least complicated.

Specimens, collections, and more

We also revisited the question of specimen creation. We discussed several existing tools for creating specimens; when considering the problem of specimen creation for the larger libre font universe, however, the problem is more one of time x peoplepower. Some ideas were floated, including volunteer sprints, drives conducted in conjunction with Open Source Design, and design teachers encouraging/assigning/forcing(?)/cajoling students to work on specimens as a project. It would also certainly help matters to have several specimen templates of different varieties to help interested contributors get started.

Other topics included curated collections of open fonts. This is one way to get over the information-overload problem, and it has come up before; this time it was was Brendan Howell who broached the subject. Similar ideas do seem to work for Adobe Typekit. Curated collections could be done at the Open Font Library, but it would require reworking the site. That might be possible, but it’s a bit unclear at the moment how interested Fabricatorz (who maintains the site) would be in revisiting the project in such a disruptive way — much less devoting a big chunk of “company time” to it. More discussion needed.

I also raised the question of reverse-engineering the binary, proprietary VFB font-source format (from older versions of FontLab). Quite a few OFL-licensed fonts have source  available in VFB format only. Even if the design of the outlines is never touched again, this makes them hard to debug or rebuild. It’s worse for binary-only fonts, of course, but extending a VFB font is not particularly doable in free software.

The VFB format is deprecated, now replaced by VFC (which has not been widely adopted by OFL projects, so far). FontLab has released a freeware CLI utility that converts VFB smoothly to UFO, an open format. While VFB could perhaps be reverse-engineered by (say) the Document Liberation Project, that might be unnecessary work: batch converting all OFL-VFB fonts once and publishing the UFO source may suffice. It would be a static resource, but could be helpful to future contributors.

It probably goes without saying, but, just in case, the BoF attendees did find more than a few potential uses for shoehorning blockchain technology into fonts. Track versioning of font releases! Track the exact permission set of each font license sold! Solve all your problems! None of these may be practical, but don’t let that stand in the way of raking in heaps of VC money before the Bitcoin bubble crashes.

That about wraps it up. There is an Etherpad with notes from the session, but I’m not quite sure I’ve finished cleaning it up yet (for formatting and to reflect what was actually said versus what may have been added by later edits). I’ll append that once it’s done. For my part, I’m looking forward to GUADEC in a few weeks, where there will inevitably be even more excitement to report back on. Stay tuned.

Fontstuff at LibrePlanet 2018

I’m going to try and capture some thoughts from recent conferences, since otherwise I fear that so much information gets lost in the fog.

* (If you want to think of it this way, consider this post “What’s New in Open Fonts, № 002”)

I went to LibrePlanet a few weeks ago, for the first time. One of the best outcomes from that trip (apart from seeing friends) was the hallway track.

[FYI, I was happy to see that LWN had some contributors on hand to provide coverage; when I was an editor there we always wanted to go, but it was never quite feasible, between the cost and the frequent overlap with other events. Anyway, do read the LWN coverage to get up to speed on the event.]

RFNs

Dave Crossland and I talked about Reserved Font Names (RFNs), an optional feature of the SIL Open Font License (OFL) in which the font publisher claims a reservation on a portion of their font’s name. Anyone’s allowed to make a derivative of the OFL-licensed font (which is true regardless of the RFN-invocation status), but if they do so they cannot use *any* portion of the RFN in their derivative font’s name.

The intent of the clause is to protect the user-visible “mark” (so to speak; my paraphrase) of the font publisher, so that users do not confuse any derivatives with the original when they see it in menus, lists, etc.

A problem arises, however, for software distributors, because the RFN clause is triggered by making any change to the upstream font — a low bar that includes a lot of functions that happen automatically when serving a font over HTTP (like Google Fonts does) and when rebuilding fonts from source (like Debian does).

There’s not a lot of good information out there on the effects that RFN-invocation has on downstream software projects. SIL has a section in its FAQ document, but it doesn’t really address the downstream project’s needs. So Dave and I speculated that it might be good to write up such a document for publication … somewhere … and help ensure that font developers think through the impact of the decision on downstream users before they opt to invoke an RFN.

My own experience and my gut feeling from other discussions is that most open-font designers, especially when they are new, plonk an RFN statement in their license without having explored its impact. It’s too easy to do, you might say; it probably seems like it’s built into the license for a reason, and there’s not really anything educating you about the impact of the choice going forward. You fill in a little blank at the very top of the license template, cause it’s there, and there’s no guidance.  That’s what needs to change.

Packages

We also chatted a little about font packaging, which is something I’m keen to revisit. I’ve been giving a talk about “the unsolved problems in FOSS type” the past couple of months, a discussion that starts with the premise that we’ve had open-source web fonts for years now, but that hasn’t helped open fonts make inroads into any other areas of typography: print, EPUB, print-on-demand, any forms of marketing product, etc. The root cause is that Google Fonts and Open Font Library are focused on providing a web service (as they should), which leaves a
lot of ground to be covered elsewhere, from installation to document templates to what ships with self-contained application bundles (hint: essentially nothing does).

To me, the lowest-hanging fruit at present seems to be making font packages first-class objects in the distribution packaging systems. As it is, they’re generally completely bare-bones: no documentation, no system integration, sketchy or missing metadata, etc. I think a lot can be done to improve this, of course. One big takeaway from the conversation was that Lasse Fister from the Google Fonts crew is working on a specimen micro-site generator.

That would fill a substantial hole in current packages: fonts tend to ship with no document that shows the font in use — something all proprietary, commercial fonts include, and
that designers use to get a feel for how the font works in a real document setting.

Advanced font features in GTK+ and GNOME

Meanwhile Matthias Clasen has been forging ahead with his own work enhancing the GNOME font-selection experience. He’s added support for showing what variation axes a variable font contains and for exposing the OpenType / smart-font features that the font includes.

He did, however, bring up several pain points he’s encountered. The first is that many of the OpenType features are hard to preview/demonstrate because they’re sparsely documented. The only substantive docs out there are ancient Microsoft material definitely written by committee(s) — then revised, in piecemeal format, by multiple unrelated committees. For example, go to the link above, then try and tell me the difference between `salt` (stylistic alternates), `ccNN` (character variants) and `ssNN` (stylistic sets). I think there’s an answer, but it’s detective work.

A more pressing concern Matthias raised was the need to create “demo strings” that show what actually changes when you enable or disable one of the features. The proper string for some features is obvious (like `onum` (oldstyle numerals): the digits 0 to 9). For others, it’s anybody’s guess. And the font-selector widget, ideally, should not have to parse every font’s entire GSUB feature table, look for all affected codepoints, and create a custom demo string. That might be arbitrarily complex, since GSUB substitutions can chain together, and might still be incorrect (not to mention the simpler case, of that method finding you random letters that add up to unhelpful gibberish).

At lunch on Sunday, Matthias, Dave, Owen Taylor, Felipe Sanches, and a few others … who I’m definitely drawing a blank on this far after the fact (go for the comments) … hashed through several other topics. The discussion turned to Pango, which (like several other storied GNOME libraries), isn’t exactly unmaintained, but certainly doesn’t get attention anymore … see also Cairo….). There are evidently still some API mismatches between what a Pango font descriptor gives you and the lower-level handles you need to work with newer font internals like
variation axes.

A longer-term question was whether or not Pango can do more for applications — there are some features it could add, but major work like building in hyphenation or justification would entail serious effort. It’s not clear that anyone is available to take on that role.

Interfaces

Of course, that ties into another issue Matthias raised, which is that it’s hard to specify a feature set for a “smart” font selector widget/framework/whathaveyou for GTK+ when there are not many GTK-based applications that will bring their own demands. GIMP is still using GTK2, Inkscape basically does its own font selection, LibreOffice has a whole cross-platform layer of its own, etc. The upshot is that application developers aren’t bringing itches needing to be scratched. There is always Gedit, as Matthias said (which I think was at least somewhat satirical). But it complicates the work of designing a toolkit element, to be sure.

The discussion also touched on how design applications like Inkscape might want to provide a user interface for the variable-font settings that a user has used before. Should you “bookmark” those somehow (e.g., “weight=332,width=117,slant=10” or whatnot)? If so, where are they saved? Certainly you don’t want users to have to eyeball a bunch of sliders in order to hit the same combination of axes twice; not providing a UI for this inevitably leads to documents polluted with 600-odd variable-font-setting regions that are all only slightly off from each other. Consensus seemed to lean towards saving variable-axes-settings in sort of “recently used” palette, much as many applications already do with the color picker. Still waiting to see the first implementations of this, however.

As we were leaving, Matthias posed a question to me — in response to a comment I’d made about there needing to be a line between a “generic” font selector and a “full-featured” font selector. The question was what sort of UI was I envisioning in the “generic” case, particularly where variable fonts are concerned, as I had suggested that a full set of sliders for the fonts variation axes was too complex.

I’m not sure. On the one hand, the simple answer would be “none” or “list the variation axes in the font”, but that’s not something I have any evidence for: it’s just a easy place to draw a line.

Perhaps I’m just worried that exposing too many dials and controls will turn users off — or slow them down when they’re trying to make a quick choice. The consumer/pro division is a  common tactic, evidently, for trying to avert UI overload. And this seems like a place where it’s worth keeping a watchful eye, but I definitely don’t have answers.

It may be that “pro” versus “consumer” user is not the right plane on which to draw a line anyway: when I was working on font-packaging questions, I found it really helpful to be document-first in my thinking (i.e., let the needs of the document the user is working on reveal what information you want to get from the font package). It’s possible that the how-much-information-do-you-show-in-the-UI question could be addressed by letting the document, rather than some notion of the “professionalism” of the user, be the guide. More thinking is required.

Have typography, will travel

Howdy!

I realize that I’m a bit late in publishing this news but, to be honest, I never was great about the blogging regularly anyway.

In any case, this post is a bit of a public announcement: I’m happy to say that I recently completed an extremely busy year working on my Master of Arts in Typeface Design (MATD) degree at the University of Reading. Consequently, I am now back out in the real world, and I am looking for interesting and engaging employment opportunities. Do get in touch if you have ideas!

For a bit of additional detail, the MATD program combines in-depth training about letterforms, writing, non-Latin scripts, and typeface development with rigorous academic research. On the practical side, we each developed a large, multi-style, mutli-script family of fonts (requiring the inclusion of at least one script that we do not read).

My typeface is named Sark; you can see a web and PDF specimen of it here at the program’s public site. It covers Latin, Greek, Cyrillic, and Bengali; there is a serif subfamily tailored for long-form documents and there is a sans-serif subfamily that incorporates features to make it usable on next-generation display systems like transparent screens and HUDs.

My dissertation was research into software models for automatic (and semi-automatic) spacing and kerning of fonts. It’s not up for public consumption yet (in any formal way), as we are still awaiting the marking and review process. But if you’re interested in the topic, let me know.

Anyway, it was a great experience and I’m glad to have done it. I’m also thrilled that it’s over, because it was intense.

Moving ahead from here, I am looking forward to reconnecting with the free-software community, which I only had tangential contact with during my studies. That was hard; I spent more than thirteen years working full-time as a journalist exclusively covering the free-and-open-source software movement. I did get to see a lot of my friends who work on typography and font-related projects, because I still overlapped with those circles; I look forward to seeing the rest of you at the next meetup, conference, hackathon, or online bikeshedding session.

As for what sort of work I’m looking for, I’m keeping an open mind. What I would really love to find is a way (or ways) to help improve the state of type, typography, and documents within free-software systems. The proprietary software world has typefaces and text-rendering technology that is determined by things like sales figures; free software has no such limitations. The best typesetting systems in the world (like TeX and SILE) are free software; our documents and screens and scripts have no reason to look second-best, compared to anyone.

So if I can do that, I’ll be a happy camper. But by all means, I’m still going to remain a camper with a lot of diverse and peculiar interests, so if there’s a way I can help you out in some other fashion, don’t be shy; let me know.

I have a few contract opportunities I’m working on at the moment, and I am contributing to LWN (the best free-software news source in the dimension) as time allows. And I’m gearing up to tell you all about the next editions of Texas Linux Fest and Libre Graphics Meeting. Oh, and there are some special secret projects that I’m saving for next time….

So that’s it from me; how are you?

Danger, Will Robinson! Trefoil history and alternate history

Danger and hazard symbols are a funny thing. They’re a deadly serious topic (or else they would not be necessary), but they seem to spark quite a bit of fanciful creativity. They inherently need to communicate dangerousness without the use of words (or else we would just write the words instead…), but in many cases they take context if not full-blown interpretation to understand.

Adapted from https://commons.wikimedia.org/wiki/File:Radiation_warning_symbol-US.svg Public domain

Hot hot hot!

The classic example is the “trefoil” radiation symbol, which has inspired scores of imitators. It is iconic to the point where it gets copied, but somehow most of the copies fail to convey their message of impending peril as effectively as the original.

 

Berkeley beamers

The trefoil as we know it today was invented, so we’re told, in 1946 by a group of brainstormers holed up at the University of California Berkeley’s Radiation Laboratory. The design brief was to communicate the presence of hazardous ionizing radiation. That’s radiation that packs enough energy to knock the electrons off of atoms that it hits, which in turn fouls up the chemical bonds that those atoms can form and, when those atoms are you, seriously ruins your day. Non-ionizing radiation is the harmless stuff like radio waves and flashlight beams that bounces off of solid objects, gets lost in the drapes, and generally does no one any harm (apart from your step-uncle in Idaho who picks up demonic transmissions whenever he knowingly drives past a cell tower and tells you on Facebook about the alleged “road crew” that was out pulling reels of heavy-duty cable on the edge of town where he knows there isn’t any electric service to need cable, so what were they really doing out there?).

Anyway, the Berkeley Radiation Lab doodled up several possibilities, but they settled on the trefoil design and, eventually, went with a magenta-on-yellow color combination. Red and white was too similar to the fire department, blue did not signify “danger” and it faded too easily, and so on. In 1948, Brookhaven National Laboratory also decided it was in need of an ionizing-radiation symbol, so J.H.B. Kuper wrote to Berkeley asking for details on that symbol. Meetings were held, samples were scrutinized, and what came out of it all was the symbol we hold near & dear to our hearts today.

Radiation prototype on green

Reject from a green-field deployment at Berkeley.

An interesting factoid about the trefoil symbol (as Nels Garden related it to Lloyd Stephens and Rosemary Barrett for their 1978 article A Brief History of a “20th Century Danger Sign”) is that the Berkeley brainstormers chose the design we’re familiar with because it suggested rays or radiation shooting out of the nucleus of an atom. Other possibilities were recorded by Stephens and Barrett, including a skull-and-crossbones, a mushroom cloud, something a little harder to discern from the sketches, and a combination skull-and-crossbones-and-trefoil.

Radiation trefoil discussion

For the last time, Hanford, draw with your whole arm not just the wrist.

A second interesting factlet is that the group seems to have rejected several alternate versions of the trefoil design that sound more complicated, especially “signs that incorporated straight or wavy arrows between, or inside, the propeller blades.” Examples are hard to come by, but here are two:

Radiation trefoil prototype

Radiation goes out; fear goes in.

Radiation trefoil prototypes

Wave–particle duality: solved.

Simplicity wins when the opponent is headed toward your internal organs at the speed of light, evidently.

 

One has to be civil

So we’ve had the radiation trefoil for 70 solid years now. About a dozen years after the trefoil’s adoption, we got its first spin-off. Much to our collective surprise, it turned out that friendly folks here in the US of A weren’t the only ones with ionizing radiation sitting around, and once someone lobs theirs in your direction, you’d better have some place suitable to duck and cover. So, in 1961, the Office of Civil Defense rolled out the “fallout shelter” symbol. It copied the three-armed skeleton of the radiation trefoil, but without the central “source” circle and with an enclosing exterior circle.

You don't have to mutate at home but you can't stay here.

You don’t have to mutate at home but you can’t stay here.

Bill Geerhart reports that the design of the symbol was commissioned to Blair, Inc of Fairfax, VA—and that the trefoil-derived design was added to a shortlist of options sent up for CD management to choose from primarily because it looked familiar, not because it was the favorite.

Credit for the design goes to Robert W. Blakeley of Blair, Inc. Unfortunately, it seems that the other proposed designs have been lost to Father Time, but Geerhart favors us with one description of an alternate design for the full fallout-shelter sign: “one of them…showed a family of three, holding hands, moving graphically across the center…” In a subsequent e-mail he expanded upon this description slightly: “[it] showed a family of three moving in depth perspective to a shelter, had a small trefoil, without the center dot, in shadow background.”  Think that sounds rough? Hey, you try describing a graphic design project on the phone sometime.

 

Extreme biology

Given a favorable mood and the right background music, one could easily forgive the Office of Civil Defense for its act of sparking the now rampant trefoil-derivatives market. After all, ionizing radiation and fallout shelters are but two sides of the same coin, particularly when it’s a 1961 coin.

Where things took an irrevocable turn toward toothpaste-out-of-the-tube territory, though, is with the biohazard symbol. In 2001, The New York Times reported that the symbol was invented by the fun-loving folks at Dow Chemical in 1966. The process involved a series of focus groups led by Dow’s Charles Baldwin, in which participants were shown a variety of symbol proposals over a few days. The creepy-looking symbol that won was the one that scored highest on the metrics of ‘being memorable’ and ‘not reminding you of something else.’

Biological hazard trefoil symbol

Look out: it’s got biology!

What’s notable, though, is that unlike the radiation trefoil, the biohazard trefoil has no symbolic meaning; the shape at the center and the arms jutting out do not represent anything, although they are somewhat suggestive of “something alive.” They’ve been variously described as insectoid mandibles, antennae, some sort of bacterial flagella, or simply something that’s spreading.

All of those images are encompassed in the “biohazard” category, which is itself another change. Unlike ionizing radiation, there is not a single, well-agreed-upon definition for “biological hazard.” Certainly it includes infectious agents like viruses, but it also includes medical waste and various toxic compounds that could cause sickness or disease. In truth, there is a lot of overlap between things that are deemed biological hazards and things that are deemed “poisons”—though, when you dig into it, there isn’t a universally accepted definition for what qualifies as a poison, either.

Sadly, records of what the other candidate symbols tested against Dow’s biohazard trefoil were are also hard to come by. But Harvard Medical School did reprint a copy of the Times story, which itself is now only accessible through the Internet Archive’s Wayback Machine, and that copy of the story included one picture showing three alternate designs:

Rejected biohazard symbols

In this tub are all my hopes and dreams and also some Ebola.

One factor that seems fairly clear by this point is that the trefoil arrangement had already become identified with the notion of “danger,” which helps explain why it was the model for this first non-radiation-related hazard symbol. Beyond that, it’s hard to say where the alternate candidates miss the mark. The one on the left is clearly an iteration on the same design eventually selected, but the other two, absent of years of context, appear strangely non-threatening.

Rejected biohazard symbol 1

Do not open: high risk of jesterification.

Rejected biohazard symbol 2

Yeah but if you stare long enough then anything looks like a beaker.

Rejected biohazard symbol 3

Doing the things a triangle can.

Deciding what these other candidate symbols suggest can be a fun party game, if you go to parties with infectious-disease researchers or whomever the Tom Hanks character from The DaVinci Code was based on.

One final note about the abstractness of the biohazard trefoil is that it bears a perplexing similarity to the Bordeaux area of France’s regional coat-of-arms. Although, depending on how you feel about wine, perhaps there’s no coincidence to explain away at all. Either way, it seems to be no conspiracy (at least for now).

Bordeaux symbol

Captain, these culture readings are off the charts.

 

Man vs chemical

So, for the benefit of those of you nodding off, with the fallout-shelter symbol we lost a little of the radiation trefoil’s direct connection to the source of the threat (beams of energy), and with the biohazard symbol we moved a bit further away still: the symbol has no graphical connection to the danger at all; it only looks scary and can ride the coattails of the original symbol’s established connection to “something bad.”

The next iteration (and, as far as I can tell, the most current) of the hazard trefoil is the “chemical weapons” symbol. Here again, the design is constructed on a trefoil frame, but using geometric shapes. This is the symbol you might find plastered on the sides of containers of nerve gas or Sarin, or perhaps really strong acid (not that kind, hippie). Or, at least, Wikipedia calls it the “chemical weapons” symbol and gives it an appropriate color as proof:

How will they know it's military if it's not green?

Well, we do know that the army buys a lot of green paint.

Turns out it was meant to be more general than that, although it was created by the military. The US Army Office of the Surgeon General runs (or ran) a training program call the Nuclear, Biological, and Chemical Casualty Training System (NBC CTS). Though offline today, the Wayback Machine has a copy of a page from the site explaining that the symbol was created to match the design of the existing radiation and biohazard trefoils.

“When NBC CTS was first created, it bothered us not only that the chemical symbols differed so greatly in design from the nuclear hazard and biological hazard symbols, but also that there was more than one standard in use. It was for this reason that we constructed our own chemical hazard symbol, as seen above. It has an atom-like look to it, which is appropriate for chemicals.”

Indeed, the most obvious connection the chemical hazard symbol has is to ball-and-stick models of atoms, which are often used to visualize chemical compounds. But it’s interesting that this connection sounds like a happy coincidence. So, too, we should note that the page does not describe the symbol as being reserved for chemical weapons, but for hazardous chemicals in general. The only other design note available is a tibit on the downloads page that calls out the biohazard symbol for being “just plain cool.” Hey, you get no argument here, doc.

Ask your doctor if chemicals are right for you.

Ask your doctor if chemicals are right for you.

It’s hard to say exactly when the design was created (at least it is for me, unwilling as I am to do more than search around online for part of a day), but the NBC CTS has been around since at least 2000, although there are not a lot of records predating that time period. So the symbol could be rather new. It also has not caught on to the same degree as its elder siblings—perhaps due to time, perhaps since there is already a wide variety of other symbols that the lab-coat crowd uses to mark dangerous chemical substances. And if we may speculate a touch, “chemical” is perhaps just a bit too broad for a single clear sign to cover all the possibilities. After all, cyanide, hydrochloric acid, and nitroglycerin are all dangerous chemicals, but what each does (and how you need to protect yourself from them) varies considerably.

The archived page does not show or describe any alternate design concepts, but it does mention what was in use before. “A few years ago, there had been three variations of the chemical hazard symbol in use. One was a picture of a death’s head, or skull and crossbones. The other was a beaker. The last was a pair of beakers with their necks crossed.” That latter two don’t sound like we’re missing out on much, but the first does indicate the acceptance problem: the skull-and-crossbones already represents “poison” to most people who have a skeleton or know what one is.

The radiation trefoil, on the other hand, was invented because researchers needed a new symbol to represent a new type of danger. It’s hard to say if the biohazard symbol meets that same criteria or not; there were certainly viruses prior to 1966, but perhaps our perception of them changed as they became something to study or, even, create in laboratory conditions. One thing is for sure, though: the radiation trefoil was so successful that its three-fold design was assumed to be the right starting place when NBC CTS started its own design process.

 

Caution: speculative fiction sighted

Most interesting of all, however, is the fact that this same assumption continues to this day. The trefoil’s iconic shape inspires people to develop their own danger signs, representing more recent hazards and even threats that are entirely hypothetical. In particular, the science-fiction industry (Big SciFi, as your step uncle calls them) has developed a penchant for spawning trefoil-like hazard symbols regularly, for every looming threat from antimatter to zombies. But that’s a subject for part two, next week.

In the meantime, if you do happen to know of additional historical or rejected trefoil hazard designs—or if you have any more information about the design process for the symbols shown—please do get in touch.  Until then, here’s a gallery of all of the symbol designs seen so far, partly to serve as a convenient article thumbnail, but mostly just to leave you with something to think about.

Trefoils past and present

So much danger; so many choices.

The OpenType in Open Source workshop at LGM 2015

This year at Libre Graphics Meeting, we held a workshop / discussion session about OpenType support in open-source graphics applications. I proposed the session, but really only to act as cheerleader.

OpenType features have been possible (and available) in fonts for well over a decade. But few if any applications make them easy to access and use. At the ATypI meeting in October 2014, type designers got so upset at how bad Adobe’s OpenType feature support is in things like Illustrator and InDesign that they actually started a petition in protest.  That raised a red flag with me, since open-source applications aren’t any better in this regard. So I proposed on the CREATE list that we get together and talk about it.

Turnout was excellent—we didn’t do a full headcount, but representatives from every large free-software graphics tool at LGM were there (and several of the smaller ones, too).  The meeting room was packed. That’s good news, because it indicates a lot of interest in getting proper OpenType support working and in coming up with implementation approaches that will feel consistent from app to app.

To be more specific (for anyone with the misfortune to stumble onto this post from outside), we were there to look at how application projects could add support for optional advanced OpenType features that the user should be allowed to switch on and off as desired.  That turns out to be a bit complicated.

A little background

OpenType features come in two general forms: look-up rules that change the positioning of one or more glyphs (which you’ll see called GPOS lookups), and rules that substitute glyphs for other glyphs (which would be GSUB lookups).  There is a big, public list of “tag” names that font developers can use to designate their various GSUB and GPOS rule sets with some semantic meaning.

For instance, replacing the “f” and “i” glyphs with the “fi” ligature glyph is a GSUB rule that is usually listed under the “standard ligatures” tag, ‘liga’.  Semantically, liga is supposed to be for ligature substitutions that are active by default.  In contrast, the “discretionary ligatures” tag ‘dlig’ is supposed to designate ligatures that are not required, but that the user might want to enable for decorative purposes.  A lot of historical fonts have a “Qu” ligature that would fall under this category, with the tail of the Q sweeping out way under the u.  Similarly, there are GPOS rule sets like “case-sensitive forms” or ‘case’ that are supposed to be always on: ‘case’ is meant to adjust the vertical position of punctuation like hyphens and parentheses so that they line up correctly for ALL CAPITAL TEXT instead of for lowercase.  Then there are GPOS rules that are optional, like “tabular numerals” or ‘tnum’—which shifts all numeric digits to make sure they line up in columns.

[Side note: there’s also a large set of these features that are defined specifically to enable shaping of complex scripts (like Arabic and Indic scripts), where the context of the letters and words requires a lot of flexibility for shape and placement when compared with scripts like European alphabets or CJK text.  Consensus was clear that these features are meant to be handled by the shaping engine, not the application, and the shaping engine is already doing a good job here.]

First tricky bit is, though, that what’s “supposed” to always be on and what’s supposed to be left up to the user as an option is kind of arbitrary.  The creators of OpenType don’t even agree.  Adobe has one list with such advice; Microsoft has another, and Adam Twardoch of FontLab has yet another.

Discussion and analysis

So we spent some time discussing the various types of OpenType features—at least those on the “official” lists of “registered” tags linked to just above. The question came up how often that list of registered feature tags gets expanded; the answer is evidently “not often.” Then we talked a lot about the different kinds of features and how they may be used.  Some of them a user might apply only to a few selected characters (even one); others would be desirable for whole blocks of text or documents.

But it’s not that simple.  An “default on” feature cannot be trusted to work flawlessly in every font and every situation, so the user needs some way to switch it off. And a contextual feature like “smart fractions” (‘frac’) might match some text pattern but actually be semantically different in the document. My example was when a user writes “I’m working 24/7″—that numeric sequence looks like a fraction, but in reality it isn’t one. [Note: part of the complication has to do with the fact that there are two slash-like Unicode characters, the ‘slash’ itself (U+002F, “SOLIDUS”) and the ‘fraction bar’ (U+2044). Usually only the ‘solidus’ slash is on the keyboard.]

We also looked at several UI proposals (1234567) related to OpenType features that had been previously published by others, just to see what the landscape looked like.  Here (as well as in all of the discussion about when and how a user might want to access a particular feature), we got a lot of good feedback from interaction designer Peter Sikking.  For starters, Peter pointed out that many of the UI suggestions’ complaints are more reactionary about what isn’t working right than they are carefully-considered interface rules, so they may be interesting, but are not work to copy.

Peter also pointed out that the application projects represented have very different needs: an interface that works for Scribus—which is text-centric and offers lots of typography features—would not work for GIMP, where the text tool is a less important component (and one that has far less screen real estate available to its user interface). The best we can hope to do, he said, is come up with some “best practices” that apply to different scenarios, and let each application project implement them on their own as best they can.

Someone (and I think it was Peter, but I’m not 100% sure this many days later; please let me know if it was you) then pointed out that a few of the features amount to typeface-wide choices that are often implemented (at present) in separate fonts.  The prime example is small caps, which is frequently available as an OpenType feature (‘smcp’) but even more frequently is pulled out into a separate font, e.g. “Foo Serif SC”.  Though less used, there is an italics feature tag, too (‘ital’).

Making matters worse, many applications also allow “fake” small caps and italics. The user, however, will likely not care whether small caps or italics are implemented as an OpenType feature or in separate font files; they just want to apply them as a text style. That both presents a UI issue and impacts implementations.

We also briefly discussed whether supporting OpenType features in text markup would affect file formats.  Generally speaking, everyone seemed to think this would not be a difficult problem. There was a general desire to implement something that follows the approach used by CSS.  It seems to be working well for users (and developers), so that looks good.

Among the other points raised:

  • Behdad Esfahbod pointed out that CSS feature support is frequently accessed with a simple slider option that turns features on and off without significant headaches or dependency problems. For example, contextual ligatures, historical ligatures, and discretionary ligatures are all just “ligatures.”  The users don’t care (nor need to know) which feature provides the ligature they want. Similarly, its irrelevant to users that the ‘frac’ feature has a hidden dependency on separate numerator and denominator features.
  • Some of the features, like stylistic sets and character variants, come not just with a set of GPOS/GSUB rules, but also a human-friendly name that is encoded into the font.  For example, a font that includes ornamental caps in a stylistic set might name that set “Ornaments”.  This name would be a string in the uiLabelNameId field within the font file; so the application will need a way to access that and expose it to the user.
  • There should probably be some way to specify an “on by default” set, since it seems to be expected, but also a way for the user to switch it off.
  • There should be controls for the common (and well-defined, publicly “registered”) features, but there should also be a fallback mechanism that allows the user or application to access any feature via the feature’s four-letter tag.

Where to now?

Looking forward, we settled on a few “next action” items. For starters, we are going to try and coordinate our future discussions through the CREATE mailing list, which was invented to be a home for just this sort of collaboration.

Regarding the UI and UX questions, Peter agreed to work on developing what will eventually form the “best practices” and related recommendations for different applications.  The first step, however, is to spend some time talking with typographers and other graphic-designer-like users (who care about OpenType feature support) to study their processes and expectations.  This sort of process is what Peter does professionally; he most recently has been undertaking a similar systematic approach to interaction development with the Metapolator project (which he gave a talk on at LGM).  I mention this to explain that there are several steps between getting started and actually seeing prototypes, much less full-blown recommendations.

Regarding the lower-level plumbing layer: Fontconfig already catches the presence of OpenType feature tables when it indexes a font.  To get access to such a feature, though, the shaping engine (i.e., the software library that takes Unicode text characters, looks them up in the active font, and returns the right glyphs) also needs a way to report the presence of OpenType features, and a way for applications to request that the feature be turned on or turned off.  HarfBuzz is the shaping engine used by almost all free-software tools, and Behdad agreed to take on adding the necessary functions and API calls.

Moving one level up, some applications use HarfBuzz directly, but a lot of applications (including GIMP and Inkscape) use an intermediate text-layout library called Pango.  So Pango will also need hooks for OpenType features.  Behdad indicated that he is on top of this feature request as well.

Application projects, at the moment, do not have a lot that they need to do.  However, since the eventual ‘best practices’ are going to require using HarfBuzz, any application project that has been considering porting its text handling to HarfBuzz would save a lot of trouble later by getting started on that project now.  Earlier in the week, we held a HarfBuzz documentation sprint to develop a “porting manual” so to speak.  It isn’t quite finished yet, but the core example is there and will hopefully prove useful.

The exception to the above is that FontForge may need some work to support access to all of the OpenType features that may be exposed to the applications. The eventual plan was that FontForge (or other font editors) ought to provide a way to test features that somewhat resembles how feature usage is implemented in applications, but getting there may require some groundwork in advance.  The same may also be true for apps like GNOME Characters or the KDE and GNOME font managers, but I don’t think those developers were on hand at LGM.

Similarly, the thinking was that Fontconfig may also require some tweaking in order to allow testing of OpenType features.  During the smallcaps discussion mentioned above, Behdad noted that Fontconfig already lets the user define, in essence, “virtual fonts” that are simply fonts.conf references to existing fonts but with different OpenType features switched on or off.  A quick test revealed that this feature works to a degree, but has some bugs that need attention.  Here again, though, Behdad said he’s happy to take them on.

There were also open questions about real-world font implementations of several features. Google Web Fonts and Open Font Library, unfortunately, don’t index which fonts have these features. I agreed to do some research here.

We may also need to gather some good test cases: fonts with a variety of features implemented, and perhaps fonts that we will add features to (e.g., ‘ital’, which seems pretty rare).  If you’d like to help me that, get in touch, of course.

As for a web presence, I have tentatively set up a GitHub organization to use—at this point, primarily for the wiki and progress-tracking functionality.  You can find it at https://github.com/opensource-opentype … you may need to request membership if you want to contribute, although I’m new to “organizations” so bear with me if I have the details a bit off.  We’ll see.

Onward and openward!

For everyone else: if you want to keep up with the discussion, you can follow (or join) the CREATE mailing list. You can also take a look at the Etherpad notes from the session, although I cannot guarantee that they’re free of typos.  If you find any … someone else made those.

More will surely come. If you work on open fonts—or if you use or develop free software—I hope you’ll stayed tuned or even get involved.

Next Page »

Based on FluidityTheme Redesigned by Kaushal Sheth