Development
A font-development roundup from LGM
A number of the sessions at Libre Graphics Meeting 2016 dealt with open-source software and font technology—although the news was not all good. While there is an important new tool available for finding errors and rasterization problems in fonts, there has also been a slowdown on a development effort initiated at last year's LGM.
Where are the font features?
User-experience (UX) architect Peter Sikking provided an update on his
work to develop a "best practices" guide for how applications provide
access to advanced font features in the user interface. The features
in question can, in theory, allow users to switch on alternate
versions of characters and numbers in their documents; these might
include simple variations in shape or additional ligatures, or complex
positioning rules that adjust spacing or punctuation according to
context. In practice, however, few applications provide controls to
inspect or utilize the features present in a font, making the features
undiscoverable and, therefore, unused.
At LGM 2015, there was a packed workshop session addressing the problem, with a crowd Sikking described as "about half of LGM." But his subsequent efforts to garner input from project developers have largely stalled. In retrospect, he said, this inertia is inherent in "infrastructure projects," where the normal user-experience design loop does not work.
Normally, he said, a UX designer like himself can iterate between drafting a specification, having developers build it, and having users test it. But that implies that the end user can be directly involved, which is not true when, as in this font-feature effort, what he designs is only a blueprint that would have to be separately adopted by several application projects. The user is thus several steps removed, and the feedback loop is broken. Complicating matters further is the fact that the set of formally defined font features is enormous—135, by Sikking's count. There are almost too many use cases included in that set to impose order.
The experience, he said, reminded him of his work on the OpenPrinting common dialog project. The goal there was to redesign "print" dialog boxes for open-source software; it, too stalled out in "a giant game of chicken" where everyone involved waited for someone else to implement the group's ideas. It is easy to get developers interested in UX work with an immediate impact, he said, but pushing forward on infrastructure work can slip into a "grim death march" as it did with the OpenPrinting project, which ground to a halt without ever seeing its proposals adopted. Nevertheless, Sikking said, he was continuing to work on font-feature support. He has scheduled user-interview sessions with designers in May, and he encouraged interested developers to get involved.
In the font birds-of-a-feather (BoF) session after Sikking's talk, the subject came up, with Tavmjong Bah reporting some of the difficulties that Inkscape developers encountered when they tried to implement font-feature access in the application's UI. Andreas Vox also reported that the Scribus team may find it easier to work with font features in the new Complex Text Layout branch, so perhaps momentum can be regained.
Open source from Microsoft
Hin-Tak Leung presented his recent work on Font Validator (FV), a newly released tool from Microsoft that performs batteries of low-level tests on binary font files. Leung is a Ghostscript and FreeType developer; his connection to the FV project is all but accidental. FV was first developed in 2003 and updated in 2009, he said. In 2014, the company publicly expressed interest in porting it to Python in order to release it as open-source and drop formal support for it as a product. Leung commented that it could probably run almost as-is on the Mono framework, and Microsoft asked him to oversee the process.
FV is a QA tool that can run a variety of tests on font tables, he explained. The most important are those that find low-level problems like self-intersecting contours and invalid TrueType hints. Such issues can cause serious rendering problems or even crashes.
Leung spent about 18 months cleaning up the FV code, making the
first release in 2015. As it was
initially Windows-only, he had to replace several non-portable
components. Microsoft also chose not to include some proprietary
libraries in the release, so he disabled the affected tests. Some of
them are largely irrelevant, like the test for Microsoft's own
digital-signature table, which no one else employs. But others are
potentially useful, including some rasterization tests, so Leung has
subsequently begun replacing them with FreeType equivalents.
As of right now, the open-source version of FV can perform 212 tests on 38 font tables. That is an increase (over 177 tests on 32 tables) from the initial Microsoft release, and Leung is not done yet. He has also added support for the Compact Font Format (CFF) version of OpenType; this is the most common form of OpenType font, but Microsoft never supported it because CFF was developed at Adobe. The tool can be run in GUI form or from the command line, and Leung hopes to add support for extensions as well as new additions to the OpenType specification and color SVG fonts.
FV catches low-level problems in fonts, such as Béziers that are oriented counter-clockwise when they should be clockwise (which can cause text to fail to render), or grid-fitting rules that mistakenly place points in between pixel boundaries. And this sort of test can be time-consuming; Leung noted that on a large Chinese font, one test took seven hours to complete. But there is now an open-source utility to check for such problems, with room for additional development still to come.
Snippets
It would hard to discuss font and typography sessions without mentioning Tom Lechner's update about his application Laidout. A perennial crowd favorite for its inventiveness, Laidout started off as a tool for Lechner to imposition pages for his self-published comic books, but it has grown in scope over the years. And the most recent additions include a set of on-canvas text tools.
As he demonstrated, the Laidout text widget includes handles of a variety of sizes and shapes that let the user perform different transformation functions: scaling the point size, anchoring text to other on-page objects, and more. The widget can flow text around other page objects of arbitrary size and fit text to path objects, again with a variety of on-canvas "doo-dads" for manipulating the layout options. Laidout's text support is also unique in that it supports color SVG fonts, with drag-and-drop support for changing the colors of various elements.
Laidout can be difficult for outsiders to learn, which is acceptable given that it is primarily Lechner's personal toolbox, but the outside-the-box approaches it often employs in its interface are frequently inspirational for developers. And the new text tool demonstrates that there is plenty of space for other applications to explore where feature implementations are concerned.
A variety of workshops and BoFs rounded out the typographic offerings. Highlights included the BoF run by Raphael Bastide, Ana Carvalho, and Ricardo Lafuente to discuss practical issues in open font packaging and Lasse Fister's workshop discussing Metapolator and his new offshoot project, Atem. The packaging BoF sought to find best practices for developers hosting open-source font projects in online repositories; there are competing concerns from those users who use the repository for software distribution (as Linux distributions do) and those end users who merely need to download and use the font. The development of a solution is ongoing, and currently centers around the foundry-in-a-box project.
Metapolator is a parametric font-family design tool inspired by Donald Knuth's METAFONT. Taking an outline font (e.g., a normal TrueType font), it can derive a "skeleton" from the center-lines in the strokes of each glyph, and from the skeleton a variety of variant fonts can be generated by tweaking parameters. Atem is a project Fister spun out of his Metapolator experiments. It provides a generalized framework for defining graphics parametrically. He demonstrated its use by creating a logo that maps text around concentric circles, on the fly, with arbitrary control over spacing, direction, and radial scaling.
As always, there were many other topics of note discussed in the presentations and break-out rooms. But, as this sample illustrates, development remains active on a variety of fronts in the open-source community. It may be a while before a solution arrives for the font-feature UI/UX problem, but there are plenty of other advancements to keep track of in the meantime.
[The author would like to thank Libre Graphics Meeting for travel assistance to London for LGM 2016.]
Brief items
Quotes of the Week
Many projects of course start out as just one person scratching an itch or having fun. And it’s completely fine for many to stay that way. But once a project reaches a certain level of maturity and widespread usage, I think it’s generally best for the original author to “step down” and become a peer. That’s what I’ve now done for the OSTree project.
In other words, landing code in git master for a mature project should require at least one other person to look at it. This may sound obvious, but you’d be surprised…there are some very critical projects that don’t have much the way of peer review.
CQRLOG 2.0 is available
CQRLOG 2.0 has been released. This version of the ham radio logging tool features improvements to automatic country recognition of callsigns, the ability to save frequencies (e.g., to keep track of those frequencies that the user's ham-radio license allows the use of), and support for transverter hardware.
Rintel: Network Manager 1.2 is here
At his blog, Lubomir Rintel highlights some of the changes found in the new 1.2 release of Network Manager, the network-configuration utility suite shipped by many Linux distributions. High on the list are privacy improvements; the post notes that "the identity of a mobile host can also leak via Wi-Fi hardware addresses. A common way to solve this is to use random addresses when scanning for available access points, which is what NetworkManager now does (with a recent enough version of wpa_supplicant). The actual hardware address is used only after the device is associated to an access point.
" Network Manager can also now be used to manage tun, tap, macvlan, vxlan and IP tunnel software devices, and can run multiple VPN modules simultaneously. In addition, support for several hardware device classes was split into loadable modules, which will reduce memory overhead.
Intel releases the Arduino 101 firmware source code
Arduino has announced the release of the source code for the real-time operating system (RTOS) powering the Arduino 101 and Genuino 101. "The package contains the complete BSP (Board Support Package) for the Curie processor on the 101. It allows you to compile and modify the core OS and the firmware to manage updates and the bootloader. (Be careful with this one since flashing the wrong bootloader could brick your board and require a JTAG programmer to unbrick it)." (Thanks to Paul Wise)
GCC 6.1 Released
Version 6.1 of the GCC compiler suite is out. Changes in this release include defaulting to the C++14 standard, improved diagnostic output, full support for OpenMP 4.5, better optimization, and more; see the changelog for a full list.OCaml release 4.03.0
OCaml 4.03.0 has been released. As noted in last week's article on OCaml 4.03, there are many new features in this release. Those include the new Flambda intermediate representation, more compiler optimizations, attributes and extensions, garbage-collection improvements, and more.Firefox 46.0
Firefox 46.0 has been released, featuring improved security of the JavaScript Just In Time (JIT) Compiler and GTK3 integration. See the release notes for more details.GNU remotecontrol 2.0 released
Version 2.0 of GNU remotecontrol home-automation system has been released. This update is a major new release, featuring some significant refactoring work. The changes include the use of a single configuration file for the entire system, a data-abstraction layer, role-based security, and enhanced management features for working with user accounts, thermostat devices, and groups of thermostat devices.
Newsletters and articles
Development newsletters from the past week
- What's cooking in git.git (April 21)
- What's cooking in git.git (April 25)
- OCaml Weekly News (April 26)
- Perl Weekly (April 25)
- PostgreSQL Weekly News (April 24)
- Python Weekly (April 21)
- Ruby Weekly (April 21)
- These Weeks in Rust (April 25)
- Tahoe-LAFS Weekly News (April 26)
- Wikimedia Tech News (April 25)
Finding a new home for Thunderbird
The Mozilla Foundation has (in the guise of Gervase Markham) posted an update on the process of spinning off the Thunderbird mail client as a separate project. As part of that, they engaged Simon Phipps to write up a survey of possible new homes [PDF] for the project. "Having reviewed the destinations listed below together with several others which were less promising, I believe there are three viable choices for a future home for the Thunderbird Project; Software Freedom Conservancy, The Document Foundation and a new deal at the Mozilla Foundation. None of these three is inherently the best, and it is possible that over time the project might seek to migrate to a 'Thunderbird Foundation' as a permanent home (although I would not recommend that as the next step)."
New functional programming language can generate C, Python code for apps (InfoWorld)
InfoWorld introduces Futhark, an open source functional programming language designed for creating code that runs on GPUs. It can automatically generate both C and Python code to be integrated with existing apps. "Most GPU programming involves using frameworks like OpenCL or CUDA, both of which use variations of C or C++ to generate code that runs on the GPU. Futhark can generate C code, but is its own language, more similar to Haskell or Standard ML than C. (Futhark is itself written in Haskell.) Futhark's creators claim that the expressiveness of the language makes it easier to describe complex operations that use parallelism. This includes the ability to support nested parallelizations (parallel operations inside other parallel operations). Futhark can do this "despite the complexities of efficiently mapping to the flat parallelism supported by hardware, as a great many programs depend on this feature," say the language's creators."
Page editor: Nathan Willis
Next page:
Announcements>>