Hackfest 2018: Variable fonts, refactoring, etc.

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Hackfest 2018: Variable fonts, refactoring, etc.

Bryce Harrington-3
----- Forwarded message from Tavmjong Bah <[hidden email]> -----

Date: Sun, 01 Apr 2018 03:31:32 +0200
From: Tavmjong Bah <[hidden email]>
To: Bryce Harrington <[hidden email]>
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.


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.


----- End forwarded message -----

Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Inkscape-devel mailing list
[hidden email]