|
|
Subscribe / Log in / New account

FontForge and moving forward

By Nathan Willis
May 6, 2015

LGM 2015

The annual Libre Graphics Meeting conference provides a regular update on the development of a number of free-software applications for visual graphics and design work. At this year's event in Toronto, one of the most talked-about sessions was Dave Crossland's take on the future of FontForge, the free-software font-editing tool.

Despite all of the progress that FontForge has made in the past few years, he said, recent developments have convinced him that the momentum lies elsewhere. In particular, newer projects started by dissatisfied FontForge users are likely to close the feature gap, and the type-design community seems more interested in engaging with those efforts. Perhaps predictably, that assessment of the current state of affairs sparked quite a bit of discussion—including a debate on the relative merits of desktop versus web-based applications.

Crossland began by recounting his personal experience with FontForge. He discovered the project while studying graphic design in college, and subsequently used it during his graduate work in the University of Reading's type-design program. Needless to say, virtually every other student used one of the proprietary, commercial font-design applications instead, and FontForge proved difficult to use in a number of ways.

[Dave Crossland at LGM 2015]

It was after that experience that Crossland got directly involved in FontForge's development. Working with Google's Web Fonts office (which exclusively uses open fonts and relies on an open-source toolchain) he was able to fund some contractors to improve FontForge. He personally underwrote additional development with his share of the proceeds from Crafting Type, a series of type-design workshops that he co-hosted.

The workshops used FontForge, and the development work that they prompted led to important bug fixes and new features (such as collaborative editing). They also led to a significantly improved packaging situation for Windows and Mac users. Nevertheless, even after several hundred students went through the workshops, only a tiny fraction of them stayed with FontForge (in the post-talk discussion, Crossland estimated the number was in the single digits).

FontForge's technical debt was clearly a problem. The application had been initially developed as a one-off project by a developer who later lost interest and left the project. Although it more or less worked, the code was not organized in a way that let new developers get involved, it contained a lot of hard-coded designs that were hard to change, and relied on a custom widget set that was difficult to maintain.

Crossland cited one example for reference: when users asked that a certain text-entry box be made elastic in size rather than fixed-width (so it could expand to fill the available horizontal space), implementing the change took more than three hours. That was far from an ideal situation, but, he said, it also shed light on a deeper problem: users would not stick with the project and help make FontForge better because contributing small design patches or even observational notes was difficult to impossible.

Freedom to compete

Meanwhile, a growing collection of new free-software font editors was cropping up, the vast majority of which are implemented as web applications. He cited four in particular: Typism, Fontclod, Prototypo, and Glyphr Studio. These web-based tools are not as full-featured as FontForge, he said, but they are developing at a rapid clip and, even more importantly, they are attracting considerable input and involvement from working type designers.

Thus, when Crossland got involved with the Metapolator project (a whole-font-interpolation program that can be used, for example, to rapidly generate multiple weights from one font), he pushed that team to adopt a similar model: build a web-based application, and solicit input from type designers. That strategy has been successful enough, he said, that he decided he cannot justify making further contributions to FontForge.

The latest round of FontForge development has given the application robust support for importing and exporting the Unified Font Object (UFO) interchange format. Soon, users will be able to create a basic font in FontForge, interpolate its weight and other properties in Metapolator, then perform any additional tweaks in FontForge.

But he expects Prototypo, Glyphr Studio, and other UFO editors to catch up to FontForge's functionality; that and the already existing ecosystem of open-source UFO scripts and utilities (most of which originate from users of other, proprietary font editors) may make FontForge irrelevant. "It seems like a lot of people want a free-software font editor and get so frustrated with FontForge that they leave and start their own," he said in summary. "Maybe we need to work on 'conservation' of FontForge rather than 'restoration' work trying to turn it into a modern editor."

Moreover, the web-based applications have demonstrated an ability to draw end users into the development and design process—something that desktop applications rarely, if ever, achieve. One of the ultimate goals of free software's "four freedoms" is to enable the user to participate in development, Crossland said. The newer, web-based font-development applications can do so in a way that FontForge has never been able to. JavaScript and CSS are easier to understand and tweak than are C and C++.

Feedback

At the end of the session, a number of audience members took issue with what they interpreted as advice from Crossland for developers to stop working on FontForge. For example, one audience member noted that he had looked at Glyphr Studio and found it to be far behind FontForge in terms of its supported features.

Another audience member suggested that if a shortage of contributors was holding FontForge back, then the project should figure out what it needs and run a public crowdfunding campaign to raise support. Crowdfunding is an approach that has been increasingly successful for free-software graphics applications of late, and Crossland had mentioned successful Kickstarter drives by the competing web-based font editors in his talk.

To those points, Crossland responded that the technical debt of FontForge is beyond what a crowdfunding campaign can raise to fix, and that the web-based editors may be behind today, but are catching up quickly. Furthermore, he added, C-based desktop applications still separate users and developers into disjoint classes. Type designers are required to learn CSS and JavaScript as part of their jobs, so they can easily get involved with web-application development. "The ideal cultural impact of software freedom is co-creation. We want a proactive culture of design and development, and I don't think traditional desktop software is the ideal way to create that."

Øyvind "Pippin" Kolås from GIMP then disagreed strongly with the notion that web-development languages could compete with C and C++. CSS and JavaScript user interfaces rely on levels of abstraction to keep things simple, he said; the core development underneath is just as complex in a "web stack" as it is in native code.

It is easy to get started writing something new (regardless of the development platform); but over time, he said, web applications will become just as complicated as native ones—if not worse, given the abstraction layers required. Thus, ditching FontForge in favor of partially completed web applications—just to solicit UI patches from type designers—is throwing the baby out with the bathwater. The community has something that works now, while the alternatives do not do much of anything by comparison.

Crossland replied that he was not trying to make a blanket statement about native development, much less telling anyone to stop working on GIMP, Scribus, or other desktop tools. He conceded Kolås's point about the underlying complexity of applications, regardless of the programming stack. He would also be happy to see others push FontForge development forward, he added; he just cannot justify it for himself. As time on the clock was running out, FontForge developer Frank Trampe cheerfully assured the crowd that he was continuing to contribute to the project, which got a round of applause.

Because the session was the last talk of the day, the discussion carried over into the evening event that followed. Ultimately, most people seemed to come away with a clearer understanding of the distinct points under debate, which were a bit conflated at the outset. The size and scope of the technical debt in FontForge is one issue; the broader competition between web-development and native application stacks is a separate one. Crossland later posted a FAQ entry on the Metapolator wiki to explain his concerns and Kolås's, together and in more detail.

The larger question about if or when a project accumulates too much technical debt to be manageable was one that resonated with a lot of attendees at the event. There were, in fact, several other web-based applications on display in the other sessions, some of which are taking on established free-software desktop application projects. Technical debt and support problems for aging code can plague any project; no one seems to have a silver bullet.

It was also noted in the discussion that web and desktop programming platforms have begun to overlap in a number of ways. GNOME Shell is scripted in JavaScript, for example, while GTK+3 and Qt's QML both rely on CSS-like styling. On the other hand, Mozilla and Google are both exploring approaches (such as asm.js and Native Client) that bring C and C++ to web applications. As hard as it may be to predict where FontForge and Glyphr Studio will be in a year's time, it is clear that the tug-of-war between desktop and web development is far from over.

Index entries for this article
ConferenceLibre Graphics Meeting/2015


to post comments

FontForge and moving forward

Posted May 7, 2015 14:16 UTC (Thu) by alankila (guest, #47141) [Link] (6 responses)

> Øyvind "Pippin" Kolås from GIMP then disagreed strongly with the notion that web-development languages could compete with C and C++. CSS and JavaScript user interfaces rely on levels of abstraction to keep things simple, he said; the core development underneath is just as complex in a "web stack" as it is in native code.

This statement sounds pretty stupid. I hope it had better context, because it's so clearly not true in practice. Firstly, there are very few to none who write web backends in either C or C++. Java and the scripting languages of various kind basically own this space. For web application server side, C and C++ are basically nonstarters.

Secondly, neither C nor C++ can be comfortably used as a development language. JavaScript won over these despite its (subjective) ugliness and steep performance and memory penalty. But these days, it's not that bad. If anything, there is less point today than ever to even consider choosing C or C++ for writing web application frontends.

The quote contains a measure of truth in that the algorithms and datastructures have to be more or less the same in order to solve a similar problem, so writing in JavaScript does not equate to magically waving a wand that eliminates the core of the problem. However, it does eliminate a giant portion of the other kind of complexity which definitely matters.

FontForge and moving forward

Posted May 7, 2015 15:32 UTC (Thu) by halla (subscriber, #14185) [Link] (5 responses)

You missed the point of the discussion, not that I was there, but it was, obviously, not about whether to write web applications in c/c++ or javascript, but whether web applications using javascript can be used to write applications approaching desktop applications in functionality without their codebase becoming just as unwieldingly complex as c/c++ based desktop applications.

I'm pretty sure that if you write a fontforge, a krita, a scribus, a blender, a gimp in javascript/webgl, that you'd end up with something at least as complex and impenetrable, and probably something much worse. If, with the current state of web technology, it can be done at all.

FontForge and moving forward

Posted May 7, 2015 19:39 UTC (Thu) by alankila (guest, #47141) [Link] (3 responses)

Yeah, I think that I indeed missed it. Still, I do think that JavaScript has solved at least some of the "problems" such as how to handle strings (especially if I can compare to C), so it is probable that most programs are simpler, shorter, and less prone to security vulnerabilities and segfaults when written in JS. So I think it's at least plausible to argue that some applications would indeed be better when written in JS.

On the other hand, I have no expectation that every kind of application can be ran from the browser sandbox. indeed, application such as Blender or some video or sound editor would probably prove to be either impossible or perform very poorly. However, this is more a question about the APIs available to developer than about the fundamental implausibility of the task.

FontForge and moving forward

Posted May 14, 2015 10:01 UTC (Thu) by ssokolow (guest, #94568) [Link] (2 responses)

Given how much onus JavaScript puts on the developer to ensure the codebase remains maintainable (duck-typed dynamism doesn't help there), my hopes are for Emscripten being updated to a new enough version of LLVM for such apps to be written in Rust.

(If you haven't tried the Rust 1.0 beta, I highly recommend trying the 1.0 final release that's coming out tomorrow. It's got string handling, package management, segfault-immunity, and GTK bindings that place it in competition with languages like Python and JavaScript but it compiles to GC-less native code with performance comparable to C or C++ and not only does it have a great FFI for calling C code, it makes it really easy to generate libraries that C code can call.)

http://rust-lang.org/ (Downloads)
https://play.rust-lang.org/ (In-browser compile+run playpen)
https://github.com/ctjhoa/rust-learning (Curated list of learning materials)
https://github.com/kud1ing/awesome-rust (Curated list of libraries)
https://crates.io/ (NPM/PyPI equivalent)
https://www.reddit.com/r/rust/comments/35ue7y/rust_with_e... (Source for my Emscripten comment)
https://www.youtube.com/watch?v=LazvK39Oc4U (Ghe concepts behind Rust and calling Rust from Ruby)
https://www.youtube.com/watch?v=3CwJ0MH-4MA (Calling Rust from Python)

Noteworthy tutorials:
http://doc.rust-lang.org/1.0.0/book/
http://www.rustforrubyists.com/

Noteworthy Libraries:
https://github.com/rust-gnome (PyGTK/PyGI equivalent)
http://www.piston.rs/ (PyGame equivalent)
https://github.com/kbknapp/clap-rs/ (Very nice command-line argument parser)
http://arewewebyet.com/ (Overview of server-side web frameworks)

...and the subreddit and IRC channel are very helpful.

FontForge and moving forward

Posted May 14, 2015 16:50 UTC (Thu) by dashesy (guest, #74652) [Link] (1 responses)

I have only read praise about Rust, and am very eager to try it in what seems to be a good fit. What is the state of scientific computing in Rust? is there any equivalent of SciPy, NumPy, Scikits, Pandas, IPython and the most important one for me matplotlib in Rust?

FontForge and moving forward

Posted May 15, 2015 5:26 UTC (Fri) by ssokolow (guest, #94568) [Link]

I don't personally use scientific computing stuff with heavy enough data loads to need anything more performant than ipython-notebook and it's not the kind of glamourous stuff that get trumpeted from the rooftops, so I don't have a ready answer.

However, crates.io does appear to already have a couple of different BLAS bindings, so there are obviously some people interested in that use.

FontForge and moving forward

Posted May 8, 2015 6:37 UTC (Fri) by massimiliano (subscriber, #3048) [Link]

If, with the current state of web technology, it can be done at all.

The "current state of web technology" is a very fast moving target, and incredibly diversified.

Given the variety of different frameworks that one can call "web technologies", I am convinced that the complexity of a large "web based" software product can vary a lot depending on design decisions and frameworks adopted (which is of course true also in the C and C++ world).

However, the "web" ecosystem is becoming truly amazing, and in particular it is providing tools that support very clean software design and implementation. I would contend that making the right choices one can not only implement projects "as complex as the C and C++ ones", but also do them "better" and in a fraction of the time.

Just look at how many desktop projects are choosing something like node-webkit, or the new "electron" by Github, as a base framework. Heck, you can laugh at it, even Microsoft used electron for their new free (as in beer) cross platform development environment!

We should stop assuming (by preconception) that "web development" equals necessarily "an entangled unmaintainable mess of PHP and spaghetti Javascript". The world is moving on :-)

FontForge and moving forward

Posted May 8, 2015 14:58 UTC (Fri) by rsidd (subscriber, #2582) [Link] (1 responses)

Interesting to learn about Metapolator. So Metafont is still alive, if in a different form. One of the more interesting chapters in Douglas Hofstadter's "Metamagical Themas" (originally columns in Scientific American in the early 1980s) is a discussion of Metafont, including a version of "The Lord's Prayer" typeset by Knuth slowly tweaking parameters such that the first few words look like some 19th-century florid heavily-serifed font, while the last few look like a modern sans-serif typeface not too different from Verdana (which was well in the future at that time), but the changes from word to word are hardly perceptible. I wonder if Metapolator can pull off things like that (not that I'm sure there is a point, and much of Hofstadter's article was devoted to attacking Knuth's view that there is a "universality" to fonts such that a sufficient number of twiddlable knobs could cover all the font families around.)

FontForge and moving forward

Posted May 8, 2015 15:00 UTC (Fri) by rsidd (subscriber, #2582) [Link]

Replying to myself: I continue to use (La)TeX for serious stuff, which originally depended on Metafont, but modern versions (pdftex, xetex etc) use Type1 postscript or OpenType fonts instead.


Copyright © 2015, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds