Planet Open Fonts

Nathan WillisFontstuff 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.]


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.


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.


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.

Caolán McNamaraSome Native GTK Dialogs in LibreOffice

When the GTK3 backend is active in current LibreOffice master (towards 6.1) some of the dialogs are now comprised of fully native GTK dialogs and widgetery. Instead of VCL widgetery themed to look like GTK, they're the real thing.

So for these dialogs this means f.e that the animated effects for radio and checkbuttons work, that the scrolling is overlay scrolling, and that the visual feedbacks that scrolling has reached its limit, or that available content is outside the scrolling region are shown. In the above demo, the GtkNotebook is the real thing.
I'm particularly pleased with the special character dialog because it has a custom character grid widget which comes with accessibility support which remains working when reworked as a native gtk widget with custom drawing and interaction callbacks.

Jakub SteinerBuilder Nightly

One of the great aspects of the Flatpak model, apart from separating apps from the OS, is that you can have multiple versions of the same app installed concurrently. You can rely on the stable release while trying things out in the development or nightly built version. This creates a need to easily identify the two versions apart when launching it with the shell.

I think Mozilla has set a great precendent on how to manage multiple version identities.

Thus came the desire to spend a couple of nights working on the Builder nightly app icon. While we’ve generally tried to simplify app icons to match what’s happening on the mobile platforms and trickling down to the older desktop OSes, I’ve decided to retain the 3D wokflow for the builder icon. Mainly because I want to get better at it, but also because it’s a perfect platform for kit bashing.

For Builder specifically I’ve identified some properties I think should describe the ‘nightly’ icon:

  • Dark (nightly)
  • Modern (new stuff)
  • Not as polished – dangling cables, open panels, dirty
  • Unstable / indicating it can move (wheels, legs …)

Next up is giving a stab at a few more apps and then it’s time to develop some guidelines for these nightly app icons and emphasize it with some Shell styling. Overlaid emblems haven’t particularly worked in the past, but perhaps some tag style for the label could do.

Jakub SteinerWhat 3 Words?

I dig online maps like everyone else, but it is somewhat clumsy sharing a location. The W3W service addesses the issue by chunking up the whole world into 3x3m squares and assigning each a name (Supposedly around 57 trillion). Sometimes it’s a bit of a tongue twister, but most of the time it’s fun to say to meet at a “massive message chuckle” for some fpv flying. I’m really surprised this didn’t take off.

Caolán McNamaranative GTK3 message dialogs

In LibreOffice 6.1, when the GTK3 backend is in use, the message dialogs are now native GTK3 message dialogs rather than vcl message dialogs using GTK theming.

So they are now true GTK dialogs and they look like...

while before they looked like...

We have 475 message dialogs directly instantiated in LibreOffice and 89 indirectly instantiated via GtkBuilder .ui files.

We've changed the format our dialog, etc. translations are stored in from our own legacy custom format to the more commonplace gettext .mo format. In the case of a message dialog described via a GtkBuilder .ui file, we now use GTK's own GtkBuilder to load the .ui, and GTK's own gettext integration to localize it from our new .mo format translations.

Jakub SteinerEverything is Better in Slow Motion

Powerslidin’ Sunday from jimmac on Vimeo.

Superb weather over the weekend, despite the thermometer dipping below 10°C.

Jakub SteinerCSS Grid

This would totally have been a tweet or a facebook post, but I’ve decided to invest a little more energy and post these on my blog, accessible to everybody. Getting old, I guess. We’re all mortal and the web isn’t open by its own.

In the past few days I’ve been learning about CSS grid while redesigning Flatpak and Flathub sites (still coming). And with the knowledge of really grokking only a fraction of it, I’m in love. So far I really dig:

  • Graceful fallback
  • Layout fully controlled by the theme
  • Controlled whitespace (meaning the layout won’t fall apart when you add or remove some whitespace)
  • Reasonable code legibility
  • Responsive layouts even without media queries

Whitespace on the Web

The fact that things are sized and defined very differently and getting grips with implicit sizing will take some time, but it seems to have all the answers to the problems I ran into so far. Do note that I never got super fluent in the flexbox, either.

I love the few video bites that Jen Simmons publishes periodically. The only downside to all this is seeing the mess with the legacy grid systems I have on the numerous websites like this one.

Jakub SteinerShelved Wallpapers

GNOME 3.28 will release with another batch of new wallpapers that only a freaction of you will ever see. Apart from those I also made a few for different purposes that didn’t end up being used, but it would be a shame to keep shelved.

So here’s a bit of isometric goodness I quite enjoy on my desktop, you might as well.

Google (web)fontsWe’ve Moved!

Head over to our new Google Fonts Collection on Google Design to stay up-to-date with the latest and greatest developments at Google Fonts. Here you’ll find articles ranging from technical updates and creative improvements to in-depth case studies and curated fonts collections. You can also follow us on Twitter for up-to-the-minute news.

Stay in touch.


Google Fonts Collection via Google Design

Google Fonts Github

Jakub SteinerLondon UX Hackfest

London UX Hackfest from jimmac on Vimeo.

Thanks to the GNOME Foundation, a handful of designers and developers got together last week in London to refocus on the core element of the GNOME experience, the shell. Allan and Cassidy have already summed up everything in their well written blog posts, so I’d like to point to some pretty pictures and the video above.

Stay tuned for some higher fidelity proposals in the areas of app switching & launching and the lock/login experience.

Caolán McNamaragtk3 + broadway + libreoffice

Out of the box in Fedora 26 I see that our gtk3 version of LibreOffice mostly works under broadway so here's libreoffice displaying through firefox. Toolbar is toast, but dialogs and menus work.

broadwayd :5 &
firefox &
GDK_BACKEND=broadway BROADWAY_DISPLAY=:5 soffice --nologo &

Eben SorkinGet your Merriweather bugs fixed!

If you have a bug that you want fixed this is an ideal time to report it but it would be best if you tried using the new version to see if it is already fixed! A very large collection … Continue reading

Caolán McNamaraDiscrepancy Report #107743

Short (1996) little article about a bug in the shuttle starboard manipulator arm display position.

Spoiler: A half-dozen pages of forms detail [the error] ... the most remarkable thing about the error and its paper trail. “There is no starboard manipulator arm”

Jakub SteinerBlender Daily Doodles — Day 28

People following me on Instagram have been asking why I do the daily renders. You’re not gonna get better by thinking about it. The arsenal of tools and methods in Blender is giant and over the years I still struggle to call myself proficient in any of them.




Follow me on Instagram to see them come alive. I’m probably not gonna maintain the daily routine, but I will continue doing these.

Nathan WillisHave typography, will travel


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?

Jakub SteinerBlender Daily Doodles

If you follow me on Instagram or Youtube, you’ve probably noticed all my spare time has been consumed by flying racing drones recently. Winter is approaching, so I’d rather spare my fingers from freezing and focus on my other passion, 3D doodling.

Modifier stack explorations Modifier stack explorations

This blog post is the equivalent of a new year’s resolution. I’ll probably be overwhelmed by duties and will drop out from this, but at least being public about it creates some pressure to keep trying. Feel free to help out with the motivation :)

Animation Nodes is amazing Animation Nodes is amazing

Caolán McNamaraFlickerless Gtk3 OpenGL Transitions

While I got OpenGL transitions working under Gtk3 at the end of last year basically matching the Gtk2/Generic OpenGL quality the transition into and out of the OpenGL sequence wasn't very satisfying. And with access to HiDPI it was clearly even worse with an unscaled image momentarily appearing before the correct one.

So here's the before and after of the improvements that landed on upstream master today. Just screen-recordings with built in ctrl+shift+alt+t under gnome3 and positioned side by side and clipped roughly together in pitivi

Jakub SteinerGUADEC 2017 Manchester

Really enjoyed this year’s GUADEC. Thanks everyone for coming and the local team for pulling off a perfectly organized conference.

GUADEC 2017 Manchester from jimmac on Vimeo.

Check out a few photos too.

Jakub SteinerArtistic Constraints

I have moved most of the sharing with the world to the walled gardens of Facebook, Google+ and others because of their convenience, but for an old fart like me it’s way more appropriate to do it the old way. So the thing to share today is quite topical. Mark Ferrari (of Lucasarts fame) shares his experience with 8bit art and the creative constraint. There isn’t as much gold in what he says as much as the art he shares that he made over the years that flourished in those constraints.

8 Bit Constraints

Mark is clearly a master in lighting and none of this trickery would have any appeal if he wasn’t so great in mixing the secondary lights so well, but check out these amazing color cycling demos.

Actual image I found explaining how I anti-aliased in GIMP. Cca 2002. Actual image I found explaining how I anti-aliased in GIMP. Cca 2002.
As far as I ever got with 8bit animation. As far as I ever got with 8bit animation.

Jakub SteinerBlender Constraints

Last time I wrote about artistic constraints being useful to remain focus and be able to push yourself to the max. In the near future I plan to dive into the new contstraint based layout of gtk4, Emeus. Today I’ll briefly touch on another type of constraint, the Blender object constraint!

So what are they and how are they useful in the context of a GNOME designer? We make quite a few prototypes and one of the things to decide whether a behavior is clear and comprehensible is motion design, particularly transitions. And while we do not use tools directly linked to out stack, it helps to build simple rigs to lower the manual labor required to make sometimes similar motion designs and limit the number of mistakes that can be done. Even simple animations usually consist of many keyframes (defined, non-computed states in time). Defining relationships between objects and createing setups, “rigs”, is a way to create of a sort of working model of the object we are trying to mock up.

Blender Constraints Blender Constraints

Constraints in Blender allow to define certain behaviors of objects in relation to others. Constraints allow you to limit movement of an object to specific ranges (a scrollbar not being able to be dragged outside of its gutter), or to convert certain motion of an object to a different transformation of another (a slider adjusting a horizon of an image, ie. rotating it).

The simplest method of defining relation is through a hierarchy. An object can become a parent of another, and thus all children will inherit movements/transforms of a parent. However there are cases — like interactions of a cursor with other objects — where this relationship is only temporary. Again, constraints help here, in particular the copy location constraint. This is because you can define the influence strength of a constraint. Like everything in Blender, this can also be keyframed, so at some point you can follow the cursor and later disengage this tight relationship. Btw if you ever though you can manualy keyframe two animations manually so they do not slide, think again.

Inverse transform in Blender Inverse transform in Blender

The GIF screencasts have been created using Peek, which is available to download as a flatpak.

Peek, a GIF screencasting app. Peek, a GIF screencasting app.

Jakub SteinerRecipe Icon

Initially I was going to do a more elaborate workflow tutorial, but time flies when you’re having fun on 3.24. With the release out, I’d rather publish this than let it rot. Maybe the next one!

Recipe Icon

OSP (Open Source Publishing)HTML sauce cocktail, sauce à part

PREFACE Ce texte a été initialement écrit pour la revue Back Office. Pour des raisons de format, il n’y sera pas publié, mais nous sommes heureux de le partager ici avec vous dans sa version longue. HTML2PRINT SANS SAUCE Depuis sa création en 2006, Open Source Publishing dessine des mises en page et code avec des logiciels […]

Google (web)fontsRaising the quality of fonts in our collection

Since the new Google Fonts directory launched in May, we’ve been hard at work improving the quality of the fonts in our collection. In June we invited a team of typeface designers and font engineers from around the world to our New York City offices  to kick off a 4-months font improvement project. Each member of the team was selected for their extensive industry experience in type design or font production:

  • Jacques Le Bailly (Latin type designer)
  • Lasse Fister (font engineer)
  • Marc Foley (font engineer)
  • Kalapi Gajjar (Indian type specialist)
  • Thomas Jockin (Latin type designer)
  • Nhung Nguyen (Vietnamese type specialist)
  • Alexei Vanyashin (Cyrillic type specialist)
The team was tasked with improving the quality of fonts in our catalog. During the first week we examined the entire Google Fonts collection to determine the strengths and weaknesses. We considered various possible approaches to improving quality, and at the end of the week we decided to focus on typefaces that were already widely used and had great potential. We divided the project into three sprints.

Design work consisted of adding glyphs to support more languages, fixing incorrectly placed or shaped accent marks, re-spacing the type’s metrics and kerning, and in some cases re-drawing the designs from scratch. In each sprint we spent one week on quick improvements to one or two families, and three weeks for a deep dive on a single project.

To ensure we maintained a high standard of work and stayed true to the original intent of each design, our entire design process was done in the open (on GitHub) and was regularly documented in the Google Fonts Discussions Group. For each design, our team critiqued each other’s work, and kept in touch with the original designers whenever possible.
Pacifico - Comparison of original and new fontsQuicksand - Comparison of original and new fonts
Pacifico and Quicksand
In the coming weeks, our team will push the new versions of these fonts. Updated fonts will appear in the Google Fonts directory, and the new higher quality designs will automatically benefit any site or product that uses the Google Fonts API.

Larger, deep-dive projects:
Alfa Slab One, Cabin + Cabin Condensed, Comfortaa, Didact Gothic, Inconsolata, Jura, Maven ProMuliNunito (and a new Nunito Sans!), Pacifico, Quicksand, RubikVT323.

Smaller projects with wider language support:
Anaheim, Anton, Arvo, Bad Script, Bangers, Bevan, Bitter, Cabin Sketch, Cutive Mono, Dancing Script, Francois One, Homenaje, Indie Flower, Kurale, Lobster, Lora, Marmelad, Metrophobic, Merriweather, Neuton, Oswald, Play, Podkova, Poiret One, Prata, Press Start 2P, Raleway, Rokkit, Ropa Sans, Rubik Mono, Share Tech, Sigmar One, Telex, Trocchi, Varela Round, Yanone Kaffeesatz.

Keep watching this blog for new posts by the team summarizing their type design processes, thoughts and decisions.

Caolán McNamaraImpress LibreOffice OpenGL Slide Transitions under Wayland via GTK3

Impress LibreOffice OpenGL Slide Transitions under Wayland via GTK3 (GtkGlArea).

So I've implemented enough to get this working on my machine now. I've demoed "static", "glitter" and "honeycomb" above from my -O0 debugging build. I'll work on merging this to master now, patches are in our gerrit instance. Porting from glew to epoxy is a necessary step, I know it builds on Windows and Mac, but that's utterly untested.

Karl Berry (advogato diary)17 Nov 2016

Setting up sendmail on a new CentOS7 system -- decided to use the system packages instead of compiling from original source, as I always have before, mostly so I'll get secure and auth SMTP; the myriad dependencies always defeated me before.

yum install sendmail sendmail-cf
# build my config files [long story], install in /etc/mail.
systemctl enable sendmail # enable for reboot
# enable port in firewall:
firewall-cmd --permanent --zone=public --add-service=mail
firewall-cmd --reload
firewall-cmd --list-all

The main additional thing is to set up fail2ban.
I found these rules helpful (thanks), as well as the manual and all. I ended up defining my failregex list since others did not match, or did not match enough. Here they are:

failregex = ^%(__prefix_line)s\w{14}: ruleset=check_rcpt, arg1=.*, relay=.*, reject=550 .* Rejected: listed .*$
^%(__prefix_line)s\w{14}: ruleset=check_rcpt, arg1=.*, relay=(.* )?\[\].*, reject=.*(Domain of sender|Relaying (temporarily )?denied).*$
^%(__prefix_line)sruleset=check_relay, arg1=.*, arg2=.*, relay=(.* )?\[\].*, reject=421 .*Connection rate limit.*$
^%(__prefix_line)s\w{14}: ruleset=check_mail, arg1=.*, relay=(.* )?\[\].*, reject=55.*$
^%(__prefix_line)s\w{14}: rejecting commands from \[\].* due to pre-greeting traffic.*$
^%(__prefix_line)s\w{14}: (.* )?\[\].* did not issue MAIL.*$
^%(__prefix_line)s\w{14}: .* relay=(.* )?\[\].* \(may be forged\)$
^%(__prefix_line)s\w{14}: lost input channel from (.* )?\[\].* to MTA.*$

I put this into /etc/fail2ban/filter.d/sendmail-reject-karl.conf, and then this block in jail.local:

enabled = true
port = smtp,465,submission
logpath = %(syslog_mail)s
backend = %(syslog_backend)s

Fingers crossed. Took about seven minutes for the first spammers to show up after I opened the port.

(I don't know why advogato is inserting blank lines in all the pre blocks ... whatever ...)

Caolán McNamaraDeckard and LibreOffice

LibreOffice reuses the same ui format that gtk uses. This suggests that deckard could be used to preview translations of them.

Testing this out shows (as above) that it can be made to work. A few problems though:

1. We have various placeholder widgets which don't work in deckard because the widgets don't exist in gtk so dialogs that use them can't display as something falls over with e.g. "Invalid object type 'SvSimpleTableContainer'" I had hoped I'd get placeholders by default on failure.
2. Our .po translation entries for the dialogs strings all have autogenerated msgctxt fields which don't correspond to the blank default of the .ui so the msgctxt fields have to be removed, then msguniq to remove duplicates, and the result can the be run through msgfmt to create a .mo that works with deckard to show web-previews

Caolán McNamaraOffice Binary Document RC4 CryptoAPI Encryption

In LibreOffice we've long supported Microsoft Office's "Office Binary Document RC4 Encryption" for decrypting xls, doc and ppt. But somewhere along the line the Microsoft Office encryption scheme was replaced by a new one, "Office Binary Document RC4 CryptoAPI Encryption", which we didn't support. This is what the error dialog of...

"The encryption method used in this document is not supported. Only Microsoft Office 97/2000 compatible password encryption is supported."

...from LibreOffice is telling you when you open, for example, an encrypted xls saved by a contemporary Microsoft Excel version.

I got the newer scheme working this morning for xls, so from LibreOffice 5-3 onwards (I may backport to upstream 5-2 and Fedora 5-1) these variants can be successfully decrypted and viewed in LibreOffice.

Pooja Saxena100 Book Pact — Within touching distance

After being late the last two times, I am so happy that I am finally ahead of the curve, finishing the seventy-fifth book of the year today. I hope to keep this going and finish a few days left in 2016. It would be terrible for the pact to end up like a college assignment that is frantically finished the night before it is due. I love that the 100 Book Pact has heightened my awareness of the passing of time. Time caught me unawares only once this year, in February, when I fell very behind with the pact. It was early days still, and I learned my lesson. When you have to read hundred books in a year, every single day counts. At the end of September, it doesn’t feel like the year is over even before I took notice. And best of all, I have something concrete to show for it.

Reading in this quarter has been haphazard. I haven’t had the time to make any reading lists, forget any chance to follow them. It has been a tiring few months, and on some days the book pact weighs heavily on me and feels like another large item on my ever-growing to-do list. But then I read a book that I really enjoy and this is a fun project again. Here’s what I have read since my last update—

  1. Undoing Impunity: Speech after Sexual Violence by V. Geetha
  2. Of the Nation Born: The Bangladesh Papers edited by Hameeda Hossain and Amena Mohsin
  3. A Difficult Transition: The Nepal Papers edited by Mandira Sharma and Seira Tamang
  4. Fault Lines of History: The India Papers II edited by Uma Chakravarti
  5. The Search for Justice: The Sri Lanka Papers edited by Kumari Jayawardena and Kishali Pinto-Jayawardena
  6. Harry Potter and the Cursed Child Parts I and II by J. K. Rowling, John Tiffany and Jack Thorne
  7. I, the Salt Doll by Vandana Mishra, translated by Jerry Pinto
  8. Kaifi and I by Shaukat Kaifi, translated by Nasreen Rehman
  9. Doing Time with Nehru by Yin Marsh
  10. Bookspace: Collected essays on libraries edited by Maria Inês Cruz and Lozana Rossenova
  11. Fun Home: A Family Tragicomic by Alison Bechdel
  12. The Customs of the Kingdoms of India by Marco Polo
  13. The Newspaper: Its Place in Democracy by Duane Bradley
  14. Wordygurdyboom! by Sukumar Ray, translated by Sampurna Chatterji
  15. Empires of the Indus: The Story of a River by Alice Albinia
  16. The Thrilling Adventures of Lovelace and Babbage by Sydney Padua
  17. Fantastic Beasts and Where to Find Them by J. K. Rowling
  18. Feminism and Nationalism in the Third World by Kumari Jayawardena
  19. How to Deal with Adversity by Christopher Hamilton
  20. Something New: Tales from a Makeshift Bride by Lucy Knisley
  21. A Stamp is Born by C. R. Pakrashi
  22. Beastly Tales from Here and There by Vikram Seth
  23. Eating Women, Telling Tales by Bulbul Sharma
  24. Eye on Cricket: Reflections on the Great Game by Samir Chopra
  25. The Girl who Ate Books: Adventures in Reading by Nilanjana Roy

You can read about the first twenty-five books I read here, and the next batch here. You can also follow the last leg of my reading pact on Instagram, where I post about it under #MatraTypeReadsA100.

Pooja SaxenaKochi-Muziris Biennale’s mixed-script branding

A few weeks ago Rahul pointed me to the mixed-script logo for the latest edition of the Kochi-Muziris Biennale. The style of the Latin letters, which have already been a part of the art festival’s branding repertoire, has been extended to Devanagari and Malayalam; and the three scripts are used together to spell out the festival’s name. When I saw the logo on Facebook, I was astounded at the adulation it was receiving. Was I the only one who looked at the first word, Kochi, and thought that the design of the Devanagari vowel sign ी was ambiguous and the name of the city could also be misread as kocho?


Some days later, I came across another version of the logo on the festival’s Facebook page that uses a different spelling of Kochi. The original logo I had seen is still on their Facebook page, and I couldn’t find any indication that the second one is meant to be a correction. As far as I understand, both spellings are wrong, and Kochi is spelled कोच्चि in Hindi. Neither logo spells it like that.


Design-wise, the vowel sign ी isn’t the only Devanagari glyph in the logo that is not upto scratch. The leftmost curve of the ल is truncated. The vowel sign ि is not designed to match the width of the letters it is attached to. Even though the र and स are written in the same way, the design of these letters is quite different from each other, for reasons I haven’t been able to work out. All this on top of the fact that the widths of Latin letters are inconsistent, many curves aren’t well drawn and round shapes in the numerals look too large compared to the rest (I’m refraining from commenting on the Malayalam because I don’t feel confident critiquing the design for a script I neither read nor write, and have never researched).

Designing a mixed-script logo is not easy. Using vastly different scripts together needs care, research and expertise, and this is not an undertaking that should be taken lightly. It is not often that a local organisation or event invests in mixed-script or multilingual branding, and it is a lost opportunity when attention is not paid to fundamental issues like legibility or spelling. I think it is truly unfortunate that in one of the logos above, the name of the festival could be read incorrectly. Design work for high-profile brands, such as the Kochi-Muziris Biennale, is seen by a large number of people and sets a benchmark for the quality of design we expect to see in the future. This branding sets a bad precedent. Of course, the organisers of the Kochi-Muziris Biennale should be commended for choosing a bold approach for their branding; I only wish they had made more of an effort to get it right.

Nicolas Spalinger (advogato diary)3 Aug 2016

URW++ re-releases open fonts in MuPDF bundle

The URW++ foundry has re-released under the Open Font License (OFL) the core set of fonts for PDF rendering (via PostScript/GhostScript - the special subset of Nimbus - bundled with MuPDF reader by Artifex.

Pooja Saxena100 Book Pact — Halfway there

I have been a little late in posting about it but a few weeks ago I read my 50th book of the year, reaching the halfway milestone just a little later than my meticulously planned schedule demanded.

This second batch of twenty five books has been an interesting lot. There was one book I disliked but stuck with right to the end (Ravish Kumar’s इश्क़ में शहर होना). I finished a book I had first start reading last year and I’m so glad to have done that (Akshaya Mukul’s Gita Press and the Making of Hindu India). It is one of my favourite non-fiction titles of the year so far. Even though I am not a big fan of the genre, I found myself reading not one, but two mythological fiction titles; one I liked, the other not so much (M.R. Sharan’s Blue: Tales of Reddumone, the Two-Faced and Samhita Arni’s The Missing Queen, I’ll let you guess which one is which). Once when I was in a rut and the other time when I was sick, I turned to old favourites to cheer me up (J.K. Rowling’s Harry Potter and the Sorcerer’s Stone and Anne Fadiman’s Ex Libris: Confessions of a Common Reader). I read some children’s books and absolutely adored them (Oliver Jeffers’ The Incredible Book Eating Boy, and Vandana Singh’s Younguncle Comes to Town and Younguncle in the Himalayas). The three English translations I read from Indian languages are all books I would recommend (Vivek Shanbhag’s Ghachar Ghochar, translated from Kannada by Srinath Perur; Salma’s The Hour Past Midnight, translated from Tamil by Lakshmi Holmström; and Matchbox, a collection of short stories, by Ashapurna Debi, translated from Bengali by Prasenjit Gupta). I also read two books recommended by friends (Leonard Koren’s Wabi-Sabi for Artists, Designers, Poets & Philosophers and Yashodhara Dalmia’s Amrita Sher-Gil: A Life). And finally, the number of books I have read this year that are by women is almost at par with the number of books I have read by male authors. A ten women-author-only book streak I pulled in May and June had a little something to so with that.

Here’s a list of the books I have read since this

  1. Ghachar Ghochar by Vivek Shabhag, translated by Srinath Perur
  2. Gita Press and the Making of Hindu India by Akshaya Mukul
  3. Wabi-Sabi for Artists, Designers, Poets & Philosophers by Leonard Cohen
  4. The Other Side of Silence: Voices from the Partition of India by Urvashi Butalia
  5. The Congress by Gerald W. Johnson
  6. इश्क़ में शहर होना by Ravish Kumar
  7. Blue: Tales of Reddumone, the Two-Faced by M. R. Sharan
  8. How to Make a Home by Edward Hollis
  9. Harry Potter and the Sorcerer’s Stone by J. K. Rowling
  10. Picture Abhi Baaki Hai: Bollywood as a Guide to Modern India by Rachel Dwyer
  11. The Hour Past Midnight by Salma, translated by Lakshmi Holmström
  12. The Prithviwallahs by Shashi Kapoor and Deepa Gahlot
  13. Notes from a Small Room by Ruskin Bond
  14. Show Your Work by Austin Kleon
  15. The Incredible Book-Eating Boy by Oliver Jeffers
  16. The Missing Queen by Samhita Arni
  17. Amrita Sher-Gil: A Life by Yashodhara Dalmia
  18. An Alphabet for Gourmands by M. F. K. Fisher
  19. Amrita-Imroz: A Love Story by Uma Trilok
  20. In Other Words by Jhumpa Lahiri, translated by Ann Goldstein
  21. These Hills called Home: Stories from a War Zone by Temsula Ao
  22. Matchbox by Ashapurna Debi, translated by Prasenjit Gupta
  23. Younguncle Comes to Town by Vandana Singh
  24. Younguncle in the Himalayas by Vandana Singh
  25. Ex Libris: Confessions of a Common Reader by Anne Fadiman

Read about the first twenty-five books I read this year here, and follow how I fare in the rest of the year on Instagram, where I post about books I am reading for the 100 Book Pact under #MatraTypeReadsA100.

Caolán McNamaracrashtesting: now 92000 documents

crash testing, now 92000 documents continuously tested

Last August we had a collection of approximately 76000 documents. This July we have over 92000 documents. The corpus is mostly gathered from our bugzilla and other projects bugzillas via our get-bugzilla-attachments-by-mimetype script. For testing purposes we continuously import them all, and then export certain formats to multiple destination formats. For example odts are re-exported to odt, doc and docx and the results of what documents crashed (which includes asserts) are uploaded to the crashtest site
I like to imagine that these are typically the type of mean and bitter documents that try to eat innocent office software alive.
The get-bugzilla-attachments-by-mimetype script only downloads new attachments from its target bugzillas which are not already downloaded. The last run to refresh the corpus took over two days to complete. Refreshing isn't fast or cheap so it's fairly infrequent.
The regular crashtesting run to import and reexport the corpus is comparatively frequent, takes approximately 24 hours and typically gets run every two or three days on the latest 64bit Linux master in headless mode.

Pablo ImpallariWebsite redesign in progress

Website redesign in progress

Website redesign slowly making some progress... so far the home is done. Still need to add detailed pages for each font.

Jakub SteinerYear of the Linux Desktop

As some of you already know, xdg-app project is dead. The Swedish conspiracy members tell me it’s a good thing and should turn your attention to project Flatpak.

Flatpak aims to solve the painful problem of the Linux distribution — the fact that the OS is intertwined with the applications. It is a pain to decouple the two to be able to

  • Keep a particular version of an app around, regardless of OS updates. Or vice versa, be able to run an uptodate application on an older OS.
  • Allow application authors distribute binaries they built themselves. Binaries they can support and accept useful bug reports for. Binaries they can keep updated.

But enough of the useful info, you can read all about the project on the new website. Instead, here comes the irrelevant tidbits that I find interesting to share myself. The new website has been built with Middleman, because that’s what I’ve been familiar with and worked for me in other projects.

It’s nice to have a static site that is maintainable and easy to update over time. Using something like Middleman allows to do things like embedding an SVG inside a simple markdown page and animate it with CSS.

=partial "graph.svg"
  @keyframes spin {
    0% { transform: rotateZ(0deg); }
    100% { transform: rotateZ(359deg); }
  #cog {
    animation: spin 6s infinite normal linear forwards;

See it in action.

The resulting page has the SVG embedded to allow text copy & pasting and page linking, while keeping the SVG as a separate asset allows easy edits in Inkscape.

What I found really refreshing is seeing so much outside involvement on the website despite ever publicising it. Even during developing the site as my personal project I would get kind pull requests and bug reports on github. Thanks to all the kind souls out there. While not forgetting about future proofing our infrastructure, we should probably not forget the barrier to entry and making use of well established infrastructures like github.

Also, there is no Swedish conspiracy. Oh and Flatpak packages are almost ready to go for Fedora.

Jakub SteinerRio

Rio UX Design Hackfest from jimmac on Vimeo.

I was really pleased to see Endless, the little company with big plans, initiate a GNOME Design hackfest in Rio.

The ground team in Rio arranged a visit to two locations where we met with the users that Endless is targeting. While not strictly a user testing session, it helped to better understand the context of their product and get a glimpse of the lives in Rocinha, one of the Rio famous favelas or a more remote rural Magé. Probably wouldn’t have a chance to visit Brazil that way.

Points of diversion

During the workshop at the Endless offices we went through many areas we identified as being problematic in both the stock GNOME and Endless OS and tried to identify if we could converge on and cooperate on a common solution. Currently Endless isn’t using the stock GNOME 3 for their devices. We aren’t focusing as much on the shell now, as there is a ton of work to be done in the app space, but there are a few areas in the shell we could revisit.

GNOME could do a little better in terms of discoverability. We investigated the role of the app picker versus the window switcher in the overview and being able to enter the overview on boot. Some design choices have been explained and our solution was reconsidered to be a good way forward for Endless. Unified system menu, window controls, notifications, lock screen/screen shield have been analyzed.

Endless demoed how the GNOME app-provided system search has been used to great effect on their mostly offline devices. Think “offline google”.

DSC02567 DSC02589 DSC02616

Another noteworthy detail was the use of CRT screens. The new mini devices sport a cinch connection to old PAL/NTSC CRT TVs. Such small resolutions and poor quality brings more constraints on the design to keep things legible. This also has had a nice effect in that Endless has investigated some responsive layout solutions for gtk+ they demoed.

I also presented GNOME design team’s workflow, and the free software toolchain we use. Did a little demo of Inkscape for icon design and wireframing and Blender motion design.

Last but not least, I’d like to thank the GNOME Foundation for making it possible for me to fly to Rio.

Rio Hackfest Photos

Jakub SteinerNew Cantarell Maintainer

GNOME’s default UI typeface Cantarell gained a new maintainer, Nikolaus Waxweiler. Nikolaus was on a holy crusade to improve the state of text rendering on Linux by improving FreeType and lobbying for changes in different projects. While he continues on those efforts, bug reports hinted (pun intended) that GNOME’s font rendered worse as FreeType improved so he went on to investigate why. It turns out that Cantarell had many metric related issues and its development was quite stagnant.

Cantarell with properly defined Blue Zones

The process of making fonts look good even on our crappy LoDPI screens is commonly called hinting and it requires precision. Cantarell ships as an .otf font or OpenType font with Postscript-flavor. Hinting .otf fonts works differently from hinting common TrueType or .ttf fonts. You define several horizontal snapping zones, also called blue zones, like descender, x-height, capital height, ascender height, etc. so that they match your design. That means that the outlines you are designing must as a general rule be placed precisely within these blue zones or the hinting algorithm will ignore them. Blue zones must be constructed to contain everything they should contain. The idea is that a well designed typeface is consistent and regular enough that coarse blue zones describe the design well. The hinting algorithm of the font design application will then place stem information according to those blue zones, among other considerations. For a final rendering, glyphs are snapped to those horizontal blue zones, meaning they are only snapped on the Y-axis. Think ClearType.

Cantarell was full of off-by-ones-or-twos and technical don’t-do-thats, diacritics were inconsistent and Cyrillics still need a look-over. The bold face was in an even poorer state. Back in June 2013 Adobe’s contributed a new high-quality OpenType/Postscript-flavor hinting engine. The problems were only magnified because the new engine actually takes hinting information seriously and will spit out garbage when the font designer isn’t careful.

Nikolaus has cleaned up the fonts considerably by fixing the blue zones, outline precision to fall within them and numerous other problems. You might also notice that letters like bdfklh are a bit taller for a more harmonious look. It should display consistently at all sizes now.

Oh, by the way: FreeType 2.6.2 brings more user-visible changes. If you are on a rolling-release distribution, you might have noticed them already. If you wish to read up more on those changes, Nikolaus wrote a lengthy article about the changes and future plans on

For a Cantarell 0.1.0 release we plan to have all accented glyphs fixed. Nikolaus has finished a first pass at diacritics and is now looking for testers. Anyone who deals with diacritics in his/her language, especially central European people, please get the .otf fonts from the git repo and report bugs to the GNOME bug tracker.

Do note that Nikolaus didn’t just dive into maintainership, but wrote most of this post. My incentives to get him set up a blog and post on Planet GNOME have been fruitless so far.

Jakub SteinerWallpapers

Part of GNOME’s visual identity are the default wallpapers. Ever since GNOME3 was released, regardless of the release version, you can tell a stock GNOME desktop from afar. Unlike what most Linux distributions do, we don’t change the wallpaper thematically from release to release and there is a strong focus on continuity.

Adwaita 3.18 Day

While both Android and Windows are going analog, we’re not that hipster. If you follow my journal, you probably wouldn’t be shocked to hear I mainly use Blender to create the wallpapers. In the past Inkscape took a major part in the execution, but its lacking implementation of gradients leads to dramatic color banding in the subtle gradients we need for the wallpapers. I used to tediously compensate for this in GIMP, using noisify filters while working in high bit depth and then reducing color using GEGL’s magical color reduction operation that Hans Peter Jensen wrote a while a back. It allows to chose various dithering algorithms when lowering the bit depth.

However thanks to Cycles, we get the noise for free :) Actually it’s one of the things I spend hours and hours waiting for getting cleaned up with iterations. But it does help with color banding.

Blender rendering the night variant of the 3.20 Adwaita wallpaper (work in progress).

In my work I have always focused on execution. Many artists spend a great deal of time constructing a solid concept and have everything thought out. But unless the result is well executed, the whole thing falls apart. GNOME Wallpapers are really just stripes and triangles. But it’s the detail, the light play, the sharpness, not too much high density information that make it all work.

First iterations of the GNOME 3.20 variants are beginning to land in the gnome-backgrounds module. Check it out.




Lock Screen

Jakub SteinerSVG animation

I haven’t written a post in quite a while, so I decided to document my failure to come up with a viable alternative to the translatable animations we use in Getting Started documentation. So let’s start with what’s wrong with it. Despite being far more maintainable than a screencast, it’s still a major hassle to keep the videos in sync with the developing designs. Every translation requires a re-render of all the frames and it quickly grows into gigabytes per language.

Czech version of one of the Getting Started videos

If you’re interested in seeing how these were produced, see the Behind the Scenes of getting Started video.

The animations themselves aren’t super complex. Basic transforms (translation, scale and rotation) and opacity is all that’s needed. And because we are using translatable SVGs in Mallard, it was time to look into SVG animation. There are numerous options available to animate in SVG, which already gave me a hint that none of them will work properly for my use case. I hate being right.


I’ll starts with the one I like least. The inline garbage approach. SMIL. Each attribute of an SVG element is animateable. Creating a global sequence using this by hand is close to impossible. Its capabilities do include a few extras like animating an object along a path, but in general I cannot imagine editing this by hand. Incorporating Inkscape into the workflow seemed feasible first. Inkscape will not touch the XML it doesn’t know about. It will not clean out any of the animation stuff when you save. The xlink namespace definition to animate along path seems to have worked, but I can’t figure out some weird offsets. Groups usually get some matrix transforms as soon as you reposition them. It all may boil down to Inkscape using its own coordinate system, I don’t know. I haven’t succeeded to bolt some animation on the Inkscape generated SVG.

About as complex of a SMIL animation as I can produce :)


A much more appealing was the concept of using CSS animation. We do a lot of transitions and some animation in gtk+, so it would have been great to reuse the same technology here. While CSS transitions are spot on, animation with a sense of a global timeline is not really the use case for the web. Usually animation in the intended context is an individual transform happening after an event triggered. Creating a sequence of various objects animating in a global timeline is pretty awkward. Especially if you want to loop the whole animation infinitely. The only tools for your disposal is either a time offset or relative time keyframes, keeping all objects’ animation the same length.

CSS Based animation of a #cursor1 with a JS playback reset button that doesn’t work. ;)

I also ran into Firefox and Webkit interpreting transform-origin differently.

.run-animation {
  transform-origin: top left;
  animation: cursor-move 2s ease 1s forwards, 
                    fade-in 1s linear 0s, 
                    cursor-click .25s ease 3s alternate 2;
@keyframes fade-in {
  from { opacity: 0;  }
  to {  opacity: 1; }
@keyframes cursor-move {
  from { opacity: 1;  }
  to {  opacity: 1; transform: translate(100px,-100px);}
@keyframes cursor-click {
  from { transform: translate(100px,-100px) scale(1); }
  to { transform: translate(100px,-100px) scale(.5); }

The above CSS uses animation-delay. It might be possible to have all keyframes last the same time and use the keyframes relative keyframing for timing (duplicate same keyframe to “hold”). I can’t imagine retiming or generally modify an existing animation hand constructed using CSS’ keyframes though. A visual tool with a timeline would be necessary.


There are many js based frameworks to aid creating and animating SVG documents in realtime, but none of them seem to aid me in creating a global complex animation using assets created in Inkscape. I looked at Google Webdesigner next.

Google Webdesigner

Google Webdesigner has all the necessary visual tools like property keyframing and a global timeline. Sadly it produces a rather less self contained set of html, js and css files. I didn’t figure out a way how that could be brought into Mallard.

In the end, even though the animations don’t seem to be that complex, maintaining them by hand doesn’t seem very doable. A visual editor is required. If Google Webdesigner can be taught to produce a standalone SVG or Mallard taught to use iframes, I’m all ear. Any pointers to a similar tool is also welcome.

Caolán McNamaraspellchecking calendar/calender

A short 2009 article about Microsoft's group with responsibility for spellchecking that mentions the calendar/calender masking problem. Sometimes you probably do want correctly spelled words to be flagged.

Nathan WillisDanger, 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 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.

OSP (Open Source Publishing)What’s the Matter with Cooperation @ BUDA

What can we learn about our current society by looking at the increasing production of art works that are made in cooperation with their audience? And in reverse, how does the general raise of cooperative activism in the society influence the arts? The art centre BUDA, located in the West Flemish city of Kortrijk, organised a three day festival […]

OSP (Open Source Publishing)README.OSP: Exhibition @ Une Saison Graphique

As part of the yearly Design Festival Une Saison Graphique, and in collaboration with l’École Supérieure d’Art et Design Le Havre-Rouen, OSP would like to invite you to its exhibition README.OSP! It has been 10 years since the first public OSP blog post, and README.OSP takes the opportunity to reflect on the potential of a […]

OSP (Open Source Publishing)OSP retreat in the Netherlands

Two days together to think about OSP in the future. Discussion + Updating the website + Party.

OSP (Open Source Publishing)OSP retreat in the Netherlands

Two days together to think about OSP in the future. Coding + party.

Nicolas Spalinger (advogato diary)15 Apr 2016

Building and testing the latest SILE with complex script support

Interested in multilingual publishing with complex scripts and smart fonts? Then you should definitely check out the latest version of SILE (Simon's Improved Layout Editor).
Simon Cozens is the author and the maintainer of this very promising new publishing platform. Development happens on github:

See this gist for the details of getting the various components installed and the build working. I recommend you try it with Ubuntu 16.04 (Xenial Xerus).

(There is also homebrew support for OSX users: brew install sile --HEAD ).

Once you have sile running, you should really check out fontproof, the nice new proofing class/package made by Victor Gaultney. It's a great helper to generate pages to test how your font will behave in various situations, especially with complex script features where other publishing paths do poorly.

Nicolas Spalinger (advogato diary)15 Apr 2016

Building and testing the next-generation Scribus with complex script support

Interested in multilingual publishing with complex scripts and smart fonts? Then you should help test the latest CTL (Complex Text Layout) branch from Scribus, the libre desktop publishing app.

Various Scribus developers have worked on this over the years. Andreas Vox started the CTL project. Integrating Harfbuzz, Graphite and Raqm goes a long way towards building up capacity to tackle more complex scripts and do a better job. AFAICT the developers at HOST-Oman and Khaled Hosny have spend a lot of time and energy on this: and the results are very promising.

See this gist for the details of getting the various components installed and the build working.
I recommend you try with Ubuntu 16.04 (Xenial Xerus), currently under freeze, because you need QT 5.5. (the codebase won't work on previous versions and you will need to install the whole QT toolchain yourself).
Please report your bugs and help make this better for everyone.

(OpenSuse users should probably look at

Pooja Saxena100 Book Pact — 25 down!

When the new year was still only a day or two old, I saw this and decided I was going to read hundred books this year. The last time I attempted this (and finished with ease) was more than ten years ago. I was in school, and the idea of reading a book in 2–3 days was completely natural. I had probably been reading more that a hundred books each year without knowing that I had. This year is different—I have grown-up responsibilities now and between work, side-projects, chores and travel, it is going to be no cakewalk. But, I am happy to report that earlier this week I read my twenty-fifth book of the year. Even though I was a few days late and roughly 1.2 books behind, I believe I am on track to meet my goal at the end of 2016.

But there is more to this reading pact than just numbers. Because time is at a premium, is there a change in what I read and how? The most obvious pitfall in trying to read a fixed number of books in a limited time is the urge to read only those books that don’t require a great deal of time, effort or patience. When I realized how behind I was February, that option looked very attractive, but thankfully better sense prevailed. Reading several books simultaneously has been the single most helpful thing for me. It has made it harder for me to slack off. Long or difficult reads simmer along for weeks, while others take a couple of days, or sometimes just a few hours. Deciding what books to read simultaneously has brought me the same joy and satisfaction as planning a week’s meals. There is a balance to be struck between my latest infatuations, and that which is necessary; and between what will bring comfort at the end of a long, debilitating day, and what will be a taxing, but fulfilling project in itself. There need to be flavours and texture to appeal to different moods. If I get this right, things are a breeze.

Seeing all twenty-five books together means noticing patterns and biases. It is, for instance, easy to tell that of the books I have read so far less than a third are written by women. Or that I have only read English books. Roughly two thirds have subject matter connected to India, while less than half are by Indian authors. Fiction makes up just about a fifth of the books I have read, and there is only one graphic narrative. Some of these observations I am happy with; others not so much. I hope that by the time I reach a hundred, I’ll be more pleased with the mix of books I have read in the year.

Here are the books I have read so far, in the order I read them—

  1. Sophia: Princess, Revolutionary, Suffragette by Anita Anand
  2. Breaking Out: An Indian Woman’s American Journey by Padma Desai
  3. The Householder by Ruth Prawer Jhabwala
  4. An Independent Colonial Judiciary by Abhinav Chandrachud
  5. Bread: A Global History by William Rubel
  6. I, Robot by Isaac Asimov
  7. Wanderings in India and other sketches of life in Hindostan by John Lang
  8. The World of Hrishikesh Mukherjee: The Filmmaker everyone Loves by Jai Arjun Singh
  9. Mr. Penumbra’s 24-hour Bookstore by Robin Sloan
  10. The Presidency by Gerald W. Johnson
  11. The Wisdom of Insecurity: A Message for an Age of Anxiety by Alan W. Watts
  12. Balmukund Gupta by Madan Gopal
  13. India and the World by Jawaharlal Nehru
  14. Ladybird by Design by Lawrence Zeegen
  15. Walking Towards Ourselves edited by Catriona Mitchell
  16. This Side, That Side: Restorying Partition curated by Vishwajyoti Ghosh
  17. Unbound: 2000 Years of Indian Women’s Writing edited by Annie Zaidi
  18. City Adrift: A Short Biography of Bombay by Naresh Fernandes
  19. Love and Marriage
  20. Sunlight on a Broken Column by Attia Hosain
  21. How to Thrive in the Digital Age by Tom Chatfield
  22. Dictionaries: A Very Short Introduction by Lynda Mugglestone
  23. Nehru: A Contemporary’s Estimate by Walter Crocker
  24. The King’s Harvest by Chetan Raj Shrestha
  25. Laurie Baker: Truth in Architecture by Atul Deulgaonkar

If you would like to follow what I am reading for the 100 Book Pact, I post about the books on Instagram under #MatraTypeReadsA100.

Máirín DuffyUnpackaged Open Font of the Week: Montserrat

montserrat type sample

It’s been quite a while since I’ve done one of these posts – actually, five years – lol – but no reason not to pick an old habit back up! 🙂

Montserrat is a sans serif font created by Julieta Ulanovsky inspired by the street signs of the Montserrat neighborhood of Buenos Aires. It is the font we have used in Fedora for the Fedora Editions logos:


It is also used as the official headline / titling font for Fedora project print materials. Packaging this font is of particular important to Fedora, since we have started using it as an official font in our design materials. It would be lovely to be able to install it via our software install tools rather than having designers have to download and install it manually.

Montserrat is licensed under the Open Font License.


So, you want to package Montserrat?

Sweet! You’ll want to follow the first steps here next to the ‘if you intend to do some packaging’ header:

Our fonts packaging policy, which the above refers to, is documented here:

And if you have any questions throughout the process, don’t hesitate to ask on the Fedora Fonts SIG mailing list:


Nicolas Spalinger (advogato diary)23 Mar 2016

Why, yes, you may use this on your non-Windows OS...

Looks like the folks at Microsoft are making subtle but interesting changes in their licensing approach for certain fonts. They seem to be moving from the generic EULA that says "While the software is running, you may use its fonts to display and print content." - IOW you can't use any of these fonts if you're not running Windows, the "software" is this context - to a EULA that says "You may install and use any number of copies of the software on your devices". IOW, please go ahead and use or test these fonts even if you happen to run something else than Windows on your devices. We don't care about exclusive rights for this any more.

The font download page for the special versions of Calibri and Sitka Small intended to help with legibility and dyslexia has:

Supported Operating System:
Linux, Mac OS X, Windows 10 , Windows 7, Windows 8, Windows 8.1

Microsoft Fluent Fonts can be installed on both 32-bit and 64-bit versions of Windows. For non-Windows platforms, there must be support for installing system-wide fonts and extracting files from a ZIP file.

Install Instructions:
For Windows platforms, select the file "Microsoft Fluent Fonts.msi" and open the file. For non-Windows platforms that support installing fonts, select the file "Microsoft Fluent Fonts for non-Windows". Extract the files, read the file "Microsoft Fluent Fonts EULA.rtf" in a document viewer, and install the font files.

Yep, it's a post-Windows-only world after all. Who would have thought?

OK, these fonts are still freeware: unredistributable, unmodifiable and there is not reproducible buildpath, but still, interesting change of mindset...

CraftingType workshopsIntro Type Design Workshops: Copenhagen, Toronto, San Francisco (May/June)

Intro Type Design Workshops: Copenhagen, Toronto, San Francisco (May/June)

Are you new to type design
or looking to boost your self-taught type design skills?
Come join us at one of our upcoming Crafting Type Workshops!

In Europe? Canada? or USA? We’ve got you covered.

Our professional team of instructors are looking forward to welcoming you at one of our 3-day hands-on intensive type design workshops for beginners:

If you are in Europe you can team up with Thomas & Blondina in Copenhagen on May 6–8

Or, if you are in Canada join Aoife & Octavio in Toronto June 3–5

For those of you who have been requesting a workshop in San Francisco, it’s finally here!

Join Dave & Thomas in San Francisco June 10-12

These events are possible thanks to our three venue sponsors:

Copenhagen, May 6–8:

Toronto, June 3–5: Centennial College

San Francisco, June 10–12: Electronic Frontier Foundation

Don’t miss out on this opportunity to discover how to craft your own type!

For more information head over to our homepage,

Caolán McNamaranative gtk3 menubar in libreoffice

Following quickly on native gtk3 popup context menus is implementation of native gtk3 menubar and menus.

For comparison here's the (not utterly awful) emulated look prior to this. You can compare the spacing of elements in the menubar, menu separator rendering, distance of checkmarks to the following text, the display of the short cuts in different font attributes with different positioning, and menu entry line spacing.

This is mostly achieved by reusing the export of the toplevel menubar and menu structure via GMenuModel work by Antonio Fernandez and Bjoern Michaelsen and just stuffing a GtkMenuBar into a GtkGrid in the toplevel widget and moving the LibreOffice "guts" widget a level down with no LibreOffice menubar visible.

Caolán McNamaracurrent LibreOffice native gtk3 elements

LibreOffice typically basically has just one gtk widget per top level window and draws everything you see itself, using the gtk themeing apis to make what it draws look like they do in gtk.

But there are some truly native gtk elements. Some of them new.



Tooltips, like the above transparent example, are real gtk tooltips now. Here's what they used to look like



We recently in master began using GtkPopovers for informational messages such as the above calc formula formatting help.


Context Menus

As of today, context menus are native Gtk menus. This has the advantage of making managing overlarge menu scrolling all a gtk issue instead of faffing around endless in vcl to emulate what a native gtk menu would do. Flipping on/off mnemonics depending on keyboard input or whether the menu was launched by keyboard instead of mouse similarly becomes "someone elses problem". Here's the same menu launched via the menu key, automatically with mnemonics on start.
The menubar and menus launched from that menubar are currently still emulated ones, but they're the next target for nativization. We have mechanisms in place for the MacOSX and Unity menu integration that can probably be adapted and extended to support driving a native GtkMenuBar hosted in the GtkFixed-alike toplevel widget that fills each toplevel window.

Caolán McNamaragtk3 and LibreOffice

Couple of changes to the gtk3 support in LibreOffice master recently.

Theming stuff

The gtk3 support in master LibreOffice is now updated to support the relatively recent changes in gtk 3.19's style mechanism.

With mclasen's help I've added simple demos to the foreign-drawing demo of gtk-demo for the different elements that we render via those rendering apis. So what we attempt to do in LibreOffice is basically documented in gtk-demo now. So from 3.20 onwards if there are styling flaws in LibreOffice, then gtk-demo can be checked if it has the same problem or not.

Drag and Drop

Drag and Drop is now implemented in the gtk3 backend. DnD here includes moving blocks of cells around a calc spreadsheet using the mouse alone.

Wayland gstreamer video playback

If the gtksink gstreamer element is present (e.g. gstreamer >= 1.7.1 as in Fedora 24) then the gtksink gtk widget integration will be used to play video. Which means support for video playback in LibreOffice under wayland.

Nicolas Spalinger (advogato diary)17 Dec 2015

Progress on font format interoperability

Looks like we are seeing some promising movement towards better font formats interoperability and interchange with glyphs2ufo, newer versions of vfb2ufo (OSX and Windows only, closed-source), ufo2ft, extractor and ufoLib.

Maybe the times of opaque and proprietary font formats are slowly coming to an end...

Caolán McNamaraBetter polygon rendering in LibreOffice's Gtk3 Support

Above is how LibreOffice's "svp" backend rendered rotated text outlines in chart where the text is represented by polygon paths. Because the gtk3 backend is based on that svp backend that's what you got with the gtk3 support enabled.

After today's work above is how the svp backend now renders those paths when rendering to a cairo-compatible surface such as the gtk3 support provides.

If we mandate that "svp" only operates on cairo compatible surfaces, then we can get this niceness into android and online too, and can ditch our non-cairo text rendering code paths.

Caolán McNamaraInsert Special Character in Spelling Dialog

LibreOffice 5.1 spelling dialog now has a little toolbar to enable inserting special characters into the spelling editing widget. Also Added paste, so the insert icon isn't lonely.

Caolán McNamarafinding UI crashes by fuzzing input events with american fuzzy lop

As mentioned previously I've been experimenting using afl as a fuzzing engine to fuzz a stream of serialized keyboard events which LibreOffice reads and dispatches.

Performance is still pretty poor, but by tweaking our headless mode to allow dialogs to be created, then using that headless mode for eventtesting and then hacking out the actual rendering of the UI to the headless backend I've got something that performs reasonably well enough to enable me to set a far higher limit of 50 input events per cycle and start to discover real bugs in impress.
  1. 5.1 only crash in impress sidebar under some circumstances
  2. null marked obj still in impress mark cache
  3. another null deref in impress sidebar panels
  4. crash in impress if you exit while the annotation window is open
  5. divide by zero in an impress sidebar panel
  6. another annotation window null deref issue
  7. crash on sending a keystroke to an empty impress page list widget
  8. missing dispose on annotation windows
  9. missing dispose on alive by unshown panels
  10. crash if frame is destroyed before keystroke gets to it
  11. crash if you close impress main frame while slideshow is running

all of which is encouraging, though some of these are possibly very unlikely in real world use. But the prized find is

intermittent crash on undo of insert slide

because I've seen that happen plenty in the real world, and is the problem I was hoping to find.

Turns out its been so difficult to track down because there's a timer involved which is triggered by earlier modifications to the document. To get it to crash by undoing insert slide you have to modify an object in the document, which triggers an object-modified timer, and then very quickly, before the modified-timer fires, undo insert slide. Which has the effect of impress not registering that the slide has been deleted. Some time later, in far away code, impress will crash on use of the deleted slide.

afl-eventtesting was able to find a sequence of keystrokes (which isn't a huge surprise seeing as I primed it with some insert and undo slide sequences so it didn't have to mutate things too far before it modified a document object after an insert and before the undo) to trigger the crash and the eventtesting + headless modes of LibreOffice gave a reproducible platform where the same events happen in the same sequence without any intermediate system-ui events to throw off the delicate timing. Once the thing is reliably reproducible then its just a matter of grinding through the debugging.

OSP (Open Source Publishing)Workshop Up Pen Down

Up Pen Down – Huppe Plume Tonne is a workshop linking typography and performance. It is a collaboration between OSP and choreographer Adva Zakai, and you are invited to participate! The workshop will take place Saturday 24th and Sunday 25th of October in the Balsamine theatre, Brussels. On the 25th the doors will be open […]

Caolán McNamarafuzzing LibreOffice input events with american fuzzy lop

This is a demo of using the american fuzzy lop fuzzer as an engine to drive LibreOffice UI testing by fuzzing serialized keyboard input events.

For demo purposes the UI is visible here, but it can be run headlessly too. Given enough time afl can fuzz the initial input text of hello into keyboard shortcuts to enter menus and launch dialogs.

I think the concept is pretty neat and fun, but this is still experimental stage stuff that I'm playing with and trying to up the performance.

Caolán McNamaraview/edit shape control points

In LibreOffice 5.1 the shape properties dialog for enhanced shapes now lists and enables editing the control points. This is in addition to the preexisting mechanism of selecting with the mouse the yellow control handle of the shape, but enables viewing and fine control over the control values

Jakub Steiner


OSP (Open Source Publishing)A new home for OSP

In what might be a some-what surprising move (even to ourselves) OSP has taken up offices in the World Trade Center. Do not hesitate to pass by! Send us a mail, and we will meet you in the lobby! Or write us a letter at: Avenue Roi Albert II / Koning Albert II laan 30, […]

OSP (Open Source Publishing)Up Pen Down — Huppe plume tonne

Announcing Up Pen Down — Huppe plume tonne a workshop and preformance during the Quinzaine Numérique 2015: specifics of the workshop are on their way, but for now, here is the introduction text: En 2012, OSP (Open Source Publishing) construit un workshop de plusieurs mois avec des étudiants de l’École Supérieure d’Art et Design de […]

Caolán McNamaraimpress save background image

Impress has a "Set Background Image" option in its slide context menu for a while. For 5.1 I've added a matching "Save Background Image" to save the current background image to file.

Caolán McNamaracrash testing and coverity, conference report

Slides for this morning's Crash Testing and Coverity numbers presentation. Summary, all ok, numbers ~0. If I'm analysing this right, then the highest quality is achieved at the height of the holiday season.

Caolán McNamaravertical text columns preview

My small contribution to last night's LibreOffice conference hack-fest. In vertical text mode, the column view for pages now previews in the correct direction.

CraftingType workshopsCrafting Type Toronto: 5 Seats Left

Just 5 seats left for the upcoming Crafting Type Toronto!

Aoife Mooney returns to Toronto to offer a 2.5 day beginner’s font design workshop!

Where: Centennial College, Toronto, Canada (951 Carlaw Ave)

When: September 25th—27th, 2015

Friday: 3:30 pm — 7:00 pm Saturday + Sunday: 9:00 am — 7:00 pm

We offer discounts for design association members, students, and further discounts for early bird registrations, so prices range from CAD$225 (student’s early bird) to CAD$550 (last minute professional’s price)

With just 1 instructor and our unbeatable 10:1 student:instructor ratio, places are limited and selling fast….

Sign up Today!

Also for all font fanatics, there’s an excellent evening event the Monday before the workshop (September 21) at Sheridan College: “An international panel of type and design experts will gather at Sheridan College on September 21 to talk about the form of typography and how its history contributes to its future. The discussion will follow an exhibition and world premiere screening of a digitized and expanded film by Carl Dair, who designed Cartier – Canada’s first Latin typeface.”

CraftingType workshopsCrafting Type Toronto Canada

Aoife Mooney and Octavio Pardo return to Toronto to offer a 2.5 day beginner’s font design workshop!

Where: Centennial College, Toronto, Canada (951 Carlaw Ave)

When: September 25th—27th, 2015

Friday: 3:30 pm — 7:00 pm Saturday + Sunday: 9:00 am — 7:00 pm

We offer discounts for design association members, students, and further discounts for early bird registrations, so prices range from CAD$225 (student’s early bird) to CAD$550 (last minute professional’s price)

With just 2 instructors and our unbeatable 10:1 student:instructor ratio, places are limited and selling fast….

Sign up Today!

Also for all font fanatics, there’s an excellent evening event the Monday before the workshop (September 21) at Sheridan College: “An international panel of type and design experts will gather at Sheridan College on September 21 to talk about the form of typography and how its history contributes to its future. The discussion will follow an exhibition and world premiere screening of a digitized and expanded film by Carl Dair, who designed Cartier – Canada’s first Latin typeface.”

Jakub SteinerGUADEC Gothenburg

The GUADEC posts have settled by now, which is why it’s time for me to post another one. I hope those of you lucky enough to be abel to visit the beautiful, but expensive, city of Gothenburg will enjoy this little 4K edit of the moment I’ve captured on my pocket camera.

GUADEC Gothenburg at 4K

And if you did, check out some of the photos too. I’ve stoppped counting how many I’ve attended, but it’s always great to meet up with all the creative minds and the new student blood that makes GNOME happen. Thanks to all of you, and especially to this year’s organizers! They made a stellar job.

DSC01363 DSC01140 DSC01233