Hackfest 2018: Variable fonts, refactoring, etc.
----- Forwarded message from Tavmjong Bah <tavmjong@...8...> -----
Date: Sun, 01 Apr 2018 03:31:32 +0200 From: Tavmjong Bah <tavmjong@...8...> To: Bryce Harrington <bryce@...961...> Subject: Hackfest 2018: Variable fonts, refactoring, etc.
Bryce, can you forward this to the inkscape-devel list? SourceForge is blocking my Internet provider's mail server. Thanks.
Hi,
Before I start my report on the Boston Hackfest, I would like to thank Martin Owens, our Inkscape host, and Máirín Duffy, our Red Hat host. Martin did a great job of showing us around Boston and making sure we were properly fed (even cooking us a lunch!). Máirín, a designer at Red Hat, gave us great feedback on Inkscape in its current form and on our plans for future Inkscape versions. I would also like to thank the other Red Hatters, especially Matthias Clasen, who helped make this hackfest a success!
And I would like to thank the many donors to the Inkscape hackfest fund that make these hackfests possible.
I'll start with the item that will most excite Inkscape users: Variable Font Support in Inkscape. Variable fonts are fonts that contain "axes" that can be tweaked by the user. The simplest example would be a font that contains an axis for weight. Instead of being limited to a few discrete font weights, each requiring its own font file, a user of variable fonts can with just one file select weights with any values continuously between a minimum and maximum value.
Prior to the hackfest I got rendering of variable fonts working in Inkscape. This required handling the CSS property used to set the axes and modifying the rendering code to use the axes. (I should mention that this only works with very new versions of the libraries we use to handle fonts and text.) At the hackfest I worked with Felipe on adding support to the user interface. Felipe got a prototype version working during the hackfest.
Felipe and I also had discussion with Matthias, a Red Hat employee who works on GTK about Matthias' improved GTK Font Selection widget to which he has added variable font support. I spent some time experimenting with replacing the font selection in the Text and Font dialog with the native GTK widget (after getting positive feedback from the designers in the room).
Speaking of Matthias. We spent time with him discussing some of the problems we have with GTK. This was very productive, both in validating our move to GActions (discussed already by Alex) as well as getting feed back on a number of other issues.
Maybe the biggest blocker in getting to 1.0 is how broken floating dialogs are under the Wayland compositor, a replacement for the X11 window server. The library we use to handle floating dialogs, GDL, is not used by many projects (maybe only two). The code is complex and fixing it to work with Wayland may be too difficult. After feedback from Máirín it appears our best way forward is to replace GDL with use of the GtkNoteBook widget which handles dragging and dropping tabs. (Máirín also finds Gimp's use of tabs to dock dialogs much easier to use than our current system.)
One of my biggest beefs about working on Inkscape code is how poorly documented it is. Part of the problem is that code is strewn throughout the repository so it is often hard to find the code that handles a particular thing. This also leads to code duplication as its hard to see that we already have solution to a particular problem. I've proposed a directory reorganization that better sort the code by its purpose. This, and having README files in each directory should help new developers find their way through our code base. After several round of discussion and feedback we've come up with a solid plan which I'll be implementing in the next few weeks.
Part of the directory reorganization is to get all the graphical interface code into one place so we can work on isolating the GUI components from other parts. This should allow us to more easily create an efficient command-line version of Inkscape. (Alex's work on GActions should also help us give more power to the command line.)
There were quite a few other very useful discussions we had: the road map, documentation, increasing diversity, our website, etc. I personally find that I am not very efficient at actual hacking during hackfests (I work best when I am in the peace and quiet of my own home) but the discussions we have during hackfests leads to great productivity afterwards.
Tav
----- End forwarded message -----
participants (1)
-
Bryce Harrington