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
Mentorship
by Marc Jeanmougin
Hi devs !
In these weird times, I hope you're all well and healthy, as well as
your families, Inkscape is a community before anything else so the
well-being of everyone is a priority.
This year we have seen a great increase in the number of applicants to
the summer of code, and to make the most of it, we need mentors :)
Mentoring a student takes time, and there is a strong incentive to have
co-mentoring or backup mentors to ensure students have people they can
go to if they have questions and to make the life of mentors easier :) .
So if you know the inner workings of the code and/or are or used to be a
regular contributor, and if you are willing to try to (co-)mentor a
student this year, please step up and contact me :)
Mentor guide : https://google.github.io/gsocguides/mentor/
> *Mentor*: Mentors are people from the community who volunteer to work
with a student. Mentors provide guidance such as pointers to useful
documentation, code reviews, etc. In addition to providing students with
feedback and pointers, a mentor acts as an ambassador to help student
contributors integrate into their project’s community. Some
organizations choose to assign more than one mentor to each of their
students. Many members of the community provide guidance to their
project’s GSoC students without mentoring in an “official” capacity,
much as they would answer anyone’s questions on the project’s mailing
list or IRC channel.
(alex and tweenk, there are people applying in your areas of expertise
(gtk and boolops), so if you feel you'll have enough time and if you
want … ;) )
--
Mc
3 years, 5 months
GSoC proposal for Path Library Improvement
by Moazin Khatri
Hi everyone,
I am Moazin, a BS student at Pakistan Institute of Engineering and Applied
Sciences and I am applying for Google Summer of Code 2020.
I want to work on the Path Library Improvement project.
Inkscape relies on two libraries for its geometry related operations. One
is *lib2geom* which was designed specially for Inkscape and the other is
*livarot*, a library written in somewhere in 2003 that has some unique
features which *lib2geom* doesn't have. Features such as: path
simplification, line scanning (flowing text), path offset/Inset, boolean
operations and some modes of Tweak Tool. While *livarot* is functionally
good, it's quite outdated. It was written long ago and it's extremely hard
to understand it or maintain it. The goal of this project is to implement
all of these features either in *lib2geom* or outside it while using
*lib2geom's* features as much as possible.
You can see my proposal here:
https://docs.google.com/document/d/11iwmv0SWiVeZh6cjj5Ooze2WdgkqMZhNJeN0h...
Please let me know if you have any feedback. :-)
I've shared this in the chat already, I just forgot to introduce myself in
this list. :-D
Regards,
Moazin
3 years, 5 months
GSoC proposal for GPU rendering using Pathfinder
by Emmanuel Gil Peyrot
Hello everyone!
Some of you may know me from the IRC channel as linkmauve, this year I’m
applying for the Google Summer of Code!
I’m a computer science student from France, and I’ve been interested in
computer graphics for a long while. I started quite a few years ago
when I was working on emulators (such as Citra and Dolphin), I
eventually wrote a shader compiler for running 3DS graphics on ARM
processors, tried my hand at the demoscene, and wrote the 3D transitions
in LibreOffice Impress. But now I want to bring that knowledge to more
useful projects, from which a lot of artists who use them every day
could benefit.
My goal is to bring GPU rendering to Inkscape, in a way that is both
portable, performant, maintainable, and understandable by future
maintainers. In order to do that, I suggest to use Pathfinder, a
library Mozilla is working on, for canvas and SVG rendering, so that
efforts improving it can be pooled between the two organisations.
People from the organisation should be able to see my first draft here:
https://summerofcode.withgoogle.com/dashboard/student/proposal/5859756641...
Other people can see it here: https://linkmauve.fr/gsoc/
If anyone has any comment, remark, question or suggestion for this
project, please let me know! I’m a bit late submitting it, I
prioritised gathering information about the project and almost ran out
of time to do the actual proposal, before even reading the GSoC
guidelines…
Anyway, I hope you’ll find this project useful and interesting, and that
I’ll have the pleasure to work on it with you all! :)
--
Emmanuel Gil Peyrot
3 years, 5 months
Introduction for GSoC’20
by Thu Vu
Hello!
My name is Thu Vu and I’m a sophomore studying Computer Science from the
University of Texas at Dallas. I have originally first heard of Inkscape
when I was around 14 when I was interested in creating vector art and
various graphic art pieces. I have heard several artists use it to create
wonderful art pieces that have inspired me. Since I have personally used
Inkscape before I would have some background insight from a user’s
perspective. This would give me an advantage in the knowledge of what a
user would like to be implemented or simplified for better user experience
when using Inkscape.
I have not worked on any open-source projects before, but in joining
GSoC’20, it would help me give me first-hand experience of what it is like
to work on projects such as that. My main technical skills consisted of C++
and Java as well as HTML, CSS, some JavaScript for web design and
development. I also have additional knowledge of working in a UNIX/Linux
environment.
For project proposals, I’m interested in the Better CSS Style Sheet
Support, Refactoring, and Path Library Improvements projects. In all
honesty, it gives me great excitement to be possibly working on an Inkscape
project from a different perspective besides a user standpoint. I look
forward to learning a lot in any of these projects. Also, considering this
would be the first time I am applying to GSoC as well as work on an
open-source project, I would appreciate any advice on the application
process and any tips going forward.
Best Regards,
Thu Vu
3 years, 6 months
Introducing myself and my GSOC Proposal/Application: UI-Free Inkscape
by Harald Reingruber
Hi dear Inkscape Developer Community,
I want to submit a proposal for the "UI-Free Inkscape" project idea of this
year's Google Summer of Code.
Right now, I am doing a sabbatical (since November 2019) and am enrolled at
the Vienna University of Technology. Before that, I was working as a
Software Developer for several years mostly on graphics related software
(Ogre3D, Unity3D, Augmented Reality Apps, Medical Image Processing, etc.).
I really like open-source software, was able to do some small contributions
to projects like Emscripten, Ogre3D, and several JavaScript projects. I
think the GSOC program is an awesome opportunity to work fulltime on Open
Source Software, like yours.
Due to the current pandemic situation, I hand to do re-organize and partly
reschedule my Coding Tour I was already starting in the US for the next
couple of weeks. This is the reason for my "last-minute" application.
Fortunately, I am able to continue the tour online, here from Austria. Here
is a link describing my tour
<https://dev.to/harald3dcv/pair-programming-tour-invite-me-for-free-sessio...>,
in case you are curious.
Anyway, even though I am behind schedule for my GSOC proposal I hope that I
will be able to submit a successful application to you and show you that I
am able to succeed in making a UI-Free Inkscape version or at least being
able to move this ongoing effort a huge step forward.
*The "two patches" rule is a great idea, but as I am a bit late in the
application process I wanted to ask if it is required to submit them before
the upcoming proposal deadline tomorrow?* I definitely will be able to send
them within the next 1-2 weeks, it would be great if that would not be a
blocker for my proposal (at least not right now).
The reason why I chose the "UI-Free Inkscape" project idea is because I am
a huge fan of automating things, and I really like the idea of being able
to use Inkscape for several tasks on a server, or in the backend of an
application. I think this might increase the usage of Inkscape even more. I
saw that this idea is already an ongoing task. It is probably hard to say
how much effort there is left, and how likely it is to complete the task
within the GSOC time. On the other hand, if the task can not be completed
within the time of GSOC, it should be possible to move it a substantial
step forward. My idea would be to iterate in small steps and frequently
submit those parts for which I was able to remove the UI dependency for
review.
There is already a lot of valuable information regarding the GSOC process
on the Inkscape wiki, still,* I would like to ask if you have any
suggestions, tips and/or tricks for my proposal submission?*
Thanks in advance for your support,
Harald
3 years, 6 months
Script for Installing Dependencies
by Keisuke Suzuki
Hi everyone,
My name is Keisuke Suzuki and I'm a senior student studying computer science.
I had a problem with installing dependencies using the script from the getting started page. I am using a distribution called Elementary OS which is one of the derived distribution from Ubuntu. When I run the set of commands from the page,
wget -v https://gitlab.com/inkscape/inkscape-ci-docker/raw/master/install_depende... -O install_dependencies.sh
bash install_dependencies.sh --recommended
the output says,
--2020-03-28 15:49:46-- https://gitlab.com/inkscape/inkscape-ci-docker/raw/master/install_depende...
Resolving gitlab.com (gitlab.com)... 35.231.145.151, 2606:4700:90:0:f22e:fbec:5bed:a9b9
Connecting to gitlab.com (gitlab.com)|35.231.145.151|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7654 (7.5K) [text/plain]
Saving to: ‘install_dependencies.sh.1’
install_dependencies.sh.1 100%[======================================================================================================>] 7.47K --.-KB/s in 0s
2020-03-28 15:49:47 (286 MB/s) - ‘install_dependencies.sh.1’ saved [7654/7654]
Downloading and installing dependencies. This may take some time.
+ [[ elementary == \d\e\b\i\a\n ]]
+ [[ elementary == \u\b\u\n\t\u ]]
+ [[ elementary == \f\e\d\o\r\a ]]
+ [[ linux-gnu == \m\s\y\s ]]
+ [[ elementary == \/\e\t\c\/\o\s\-\r\e\l\e\a\s\e\ \I\D\ \o\f\ \m\y\ \f\a\v\o\u\r\i\t\e\ \l\i\n\u\x\ \d\i\s\t\r\i\b\u\t\i\o\n ]]
+ echo 'Error: Sorry, we don'\''t have instructions for your distribution yet. Please contribute on https://inkscape.org/contribute/report-bugs/ .'
Error: Sorry, we don't have instructions for your distribution yet. Please contribute on https://inkscape.org/contribute/report-bugs/ .
+ exit 1
and the content of my /etc/os-release is:
NAME="elementary OS"
VERSION="5.1.2 Hera"
ID=elementary
ID_LIKE=ubuntu
PRETTY_NAME="elementary OS 5.1.2 Hera"
LOGO=distributor-logo
VERSION_ID="5.1.2"
HOME_URL="https://elementary.io/"
SUPPORT_URL="https://elementary.io/support"
BUG_REPORT_URL="https://github.com/elementary/os/issues/new"
PRIVACY_POLICY_URL="https://elementary.io/privacy-policy"
VERSION_CODENAME=hera
UBUNTU_CODENAME=bionic
I was able to build and run the project by changing the ID to "ubuntu"; however, the script says it supports Ubuntu and derived distributions, and it's not working on a derived distro from Ubuntu. I think it could happen to some distributions that don't have ID values set to the distribution they are derived from.
I am new to Inkscape, and open-source projects in general. I am sorry if I am making a pointless report.
Best regards,
Keisuke
3 years, 6 months
Re: GSOC'20 - Introduction
by Sanjiban Sengupta
Dear Sir,
This is Sanjiban Sengupta, sophomore in Computer Engineering from IIIT
Bhubaneswar, India, would like to contribute to Inkscape for GSoC'20, I
have practical and working knowledge of C, C++, Python and Java, for web, I
am familiar with HTML, CSS, JS, Bootstrap and frameworks such as ReactJS
and NodeJS, also i am acquainted with concepts of ML and AI, Linux Kernel
and know the technicalities to apply these to solve modern real life
problems.
On going through the project proposals, I found the projects *Better CSS
Style Sheet Support, Slice items, Refactoring SVG 2 Support with SVG 1.1
Fallback or Polyfills, Text and Image Support to Live Path Effect
System,Path Library Improvements* interesting to work upon and contribute
and thus will be thankful for your kind guidance.
Thus I request the mentors to kindly guide me for the beginning processes.
Regards,
Sanjiban Sengupta
On Sat, Mar 21, 2020 at 2:40 PM Sanjiban Sengupta <b518041(a)iiit-bh.ac.in>
wrote:
> Dear Sir,
>
> This is Sanjiban Sengupta, sophomore in Computer Engineering from IIIT
> Bhubaneswar, India, would like to contribute to Inkscape for GSoC'20, I
> have practical and working knowledge of C, C++, Python and Java, for web, I
> am familiar with HTML, CSS, JS, Bootstrap and frameworks such as ReactJS
> and NodeJS, also i am acquainted with concepts of ML and AI, Linux Kernel
> and know the technicalities to apply these to solve modern real life
> problems.
>
> On going through the project proposals, I found the projects *Better CSS
> Style Sheet Support, Slice items, Refactoring SVG 2 Support with SVG 1.1
> Fallback or Polyfills, Text and Image Support to Live Path Effect
> System,Path Library Improvements* interesting to work upon and
> contribute and thus will be thankful for your kind guidance.
>
> Thus I request the mentors to kindly guide me for the beginning processes.
>
> Regards,
> Sanjiban Sengupta
>
>
>
3 years, 6 months
Introduction for Google Summer of Code
by Aadhish Sriram
Hello there, I'm Aadhish Sriram, student studying my second year of
college majored in Computer Science and Engineering at SASTRA University,
Tamil Nadu, India. I'm aspiring Web Developer, mostly self taught and an
Open Source Enthusiast. I'm well versed in C/C++, ES6+ Javascript and React
and the tools I mostly use are open sourced ones.
I've known about Open Source in my high school days but I never known
someone like us contributed to it, not until last Hacktoberfest. I've been
introduced to a new perspective of open source where I can contribute to
the tools or applications that I use everyday. I couldn't participate in
last year Hacktoberfest. I made pact to myself that I would have at least
one contribution in next year. Ever since that all my projects are open
sourced and available in Github.
Now I'm increasing my skills in web development (increasing my knowledge in
existing tools), improving my portfolio and recently started contributing
to Inkscape and planning to contribute in Godot and Blender (All are made
in *C/C++* which is a language I love).
My project idea is UI-Free Inkscape project and maybe implement some more
actions or verbs related to UI-Free project.
<#use-cases>Use Cases
Some of the use cases of the project:
-
A user can queue bulk rendering of his vectors in a render farm or an
GPU optimized server.
-
A professional graphic designer could queue his/her vector drawing to
render in his/her organization's server for rendering.
-
A user or graphic designer could draw his entire SVG using command lines
and not worry about disk space comes with graphical dependency.
3 years, 6 months