Regarding the serialization of Spiro control points
by Fred Brennan
Greetings,
I write from the FontForge project. Of particular interest to me is the Spiro
spline feature, which was originated around ten years ago by Raph Levien.
One thing I'd like to add, (which would benefit both our projects,) is the
ability of FontForge to understand the Inkscape Spiro serialization format.
However, there are several things about the format which to me as an outsider
appear to be defects serious enough that I have no idea how to even *import*
these splines correctly, much less export our Spiro splines to this format. I
would very much like to support the _de facto_ standard Inkscape has
originated of supporting Spiro in SVG, but I am lost.
George Williams, FontForge's original author, noticed this defect over eleven
years ago.[1] Things are virtually unchanged since then, I checked `git
blame`.
Spiro has five point types, not including beginning and ending points. They
are:
* G4 curve (o)
* G2 curve (c)
* Corner (v)
* Left Constraint ([)
* Right Constraint (])
The ASCII single letters are the normal method of Spiro serialization, as
championed by Raph Levien and by us in FontForge.
Inkscape seems to create what I will call a "pseudo-SVG path". So, it is not
really an SVG path, but rather is an SVG path which undergoes transformation
into the typical Spiro format. Inkscape stores this in the "original-d"
attribute.
So, given a Bezier spline with control points defined as (x, y, c1, c2),
Inkscape interprets a control point with only (x, y) to be a corner, meanwhile
a control point with all four is a G4 curve, and (x, y, c1, NULL) is a left
constraint while (x, y, NULL, c2) is a right constraint.
I can probably overcome this, although George Williams was right to be
skeptical of this format. There is no way I can see to define a G2 curve in
this strange "original-d" format.
Thus, this email. I write to ask a few things. I suppose first of all, what
are the chances that we can convince you guys to store Spiro splines in
plate[2] format, or another widely accepted Spiro serialization format?
Second, if we cannot convince you to do that, how do I export FontForge spiros
which contain G2 control points to Inkscape's original-d format? It's not
possible, yes? So should I just silently fail and save them as G4? The curves
will not be the same if I do that. Should I disallow export to SVG w/Spiro if
glyph contains G2 control point? That seems a steep cost that will just
confuse my users, so perhaps I should abandon the whole thing if it comes to
that.
Cordial regards,
Fredrick Brennan (@ctrlcctrlv)
[1]: https://narkive.com/63FADpG3.4
[2]: https://levien.com/garden/ppedit/README, section "Plate files"
1 year, 6 months
Help us staff a booth at the largest German Online Linux event (English/German)!
by Maren Hachmann
Hi everyone,
the Inkscape project is planning to host a virtual booth/stand again at
the Chemnitzer Linuxtage (CLT), on March 12 and 13 (Sat/Sun) 2022!
Usually the largest Linux and Open Source event in Germany, CLT are
going to be an online-only event in 2022 again.
The CLT (Chemnitzer Linuxtage) are an all-day event and we could use
your help answering user questions about how to work with the program,
how to contribute to it and about what is going on in the Inkscape
community, by being available for questions and chatting at our virtual
booth.
The other thing we plan to do again is a series of short, 10 to 50 min
topic-focused sessions – show other users how you use Inkscape, how to
use your Inkscape extension, how people can help the Inkscape project or
which cool things you made with Inkscape (and they can, too!). A live
drawing session, a demonstration, a tour through your maker lab -
anything that has to do with Inkscape is possible!
So, no matter if you're 'just a user', a developer, a forum member, a
regular user support provider in our chat channels, an Inkscape
translator or other contributor – if you have some time available to
spend helping the Inkscape project on that weekend in March, we would
very much appreciate your help!
Start by introducing yourself at the GitLab issue report where we're
discussing the event organization!
******************
Please get in contact with us as soon as possible and find more info at
https://gitlab.com/inkscape/vectors/general/-/issues/235
Let us know how you can help make the booth an interesting place for
visitors to drop by!
******************
We're going to have a first chat meeting with all those interested on
Saturday, January 8, 2022 at 17:30 UTC (18:30 German time, after the
Inkscape Vectors' meeting) at
https://chat.inkscape.org/channel/team_vectors
Hope to see you, it's going to be fun!
If you are not able to join us at the booth,
consider visiting us there!
Kind Regards
Maren
------------------
More info:
Chemnitzer Linuxtage:
https://chemnitzer.linux-tage.de/2022/en/
What we did last year:
https://gitlab.com/inkscape/vectors/general/-/issues/192
1 year, 9 months