On Wed, 2017-05-03 at 11:06 -0300, Felipe Sanches wrote:
Hello, Inkscape friends,
== Intro == ** You can skip this part if you already know me or if you don't really care for the intro details :-D **
Glad to see you back!
I've been active in Inkscape development a long time ago (circa 2007-2010, I think), but then I moved on to collaborate on other projects such as GNU LibreDWG, FontForge, Metapolator, Kicad and a few programs in the 3D printing toolchain such as Sprinter/Repetier firmware, Pronterface and OpenSCAD. Also I'm regularly contributing to the MAME Project and heavily interested in Coreboot/Libreboot, etc. And during the past year and a half I've been developing and maintaining the FontBakery project, a Quality-Assurance testsuite for font families.
== LGM Brazil == Last month I've attended the Libre Graphics Meeting here in Brazil and had the opportunity to meet a few GIMP developers. Unfortunately no-one from the Inkscape team was there this time, other than the couple of Brazilian past contributors (myself and Aurelio Heckert).
== Variable Fonts == Dave Crossland brought to my attention that there's an opportunity for the "big four" libre graphics programs that heavily rely on typography (Inkscape, GIMP, Scribus and LibreOffice) to implement support for OpenType Font Variations (a.k.a. "variable fonts") before the proprietary graphics applications do so.
It seems that while the major web-browsers are all already jumping into the "variable fonts" technology, the proprietary graphics tools are not so fast.
The underlying free software libraries already provide the support for that. Harfbuzz did implement support on its January release, providing a new API for OpenType variable fonts. I wonder if anyone here is interested in getting involved in the implementation of support for that in Inkscape.
Personally, I'm not so sure about the utility of variable fonts but given that browsers are supporting them, we probably should too (I question how many high quality variable fonts will be available). Getting a jump on propriety software is never a bad idea.
== My plan for Variable Fonts in Inkscape (and perhaps GIMP) == With that in mind, I am planning to spend a full day per work-week dealing with this. I have started to do so last week. I spent last Thursday setting up my development machine to properly build GIMP and Inkscape from source. I know Inkscape is moving into git at some point very soon, but since it seems it did not happen yet, I decided to use git-bzr to have my own local git tree, where I feel more comfortable working.
Then I built several dependency libraries needed to build these projects. GIMP still fails to build, but I already got Inkscape-devel built and running. Nice to see the recent improvements someone did on the measurement tool I implemented years ago. Thanks a lot!
After that, I read the relevant portions of the text-handling code in Inkscape sources (most of it on the src/libnrtype/ directory). I see that it relies on Pango for setting up font description data-structures based on the user's font selection. And, if I got it right, Pango uses HarfBuzz+Cairo as its underlying layout & rendering backend.
Yes.
So, my first thought is that we may add a variable fonts "bridge-API" on pango that redirects the calls to the underlying harfbuzz hb_ot_var_* API. Or the other alternative would be to entirely migrate Inkscape code into using harfbuzz directly (ditching pango usage). Please correct me if I misunderstood things here, but it seems to me that both approaches could work, while the first is a quick and dirty hack while the second would be the nicer way of doing things even though it would require a larger coding effort.
I would be in favor of using harfbuzz directly. It seems that this is the direction things are going... but it would take quite a bit of effort as we rely heavily on Pango for font selection (following CSS rules). And I'm not sure if harfbuzz can handle things like CSS font lists ("Time New Roman, serif").
We already use harfbuzz to access font variant information (in a quite awkward way).
How do you plan on handling selecting the parameters for variable fonts? We currently have no support for @font-face (this is something I would love to see added).
I'm copying Behdad Esfahbod in this thread as he is the developer of both Pango and HarfBuzz and may be interested in commenting on this.
Note that we will have a GSoC student working on moving our SVG 1.2 text layout to SVG 2 this summer.
Tav
Happy Hacking, Felipe "Juca" Sanches