Thanks for the quick reply, Werner.
[...] The actual raster part is mostly in `src/raster.rs' which is
> quite small. Also, creating a C wrapper for Rust code is an easy
> process (compared to other programming languages). Given the small
> size of the rendering engine it seems that implementing it from
> scratch in C inside FreeType isn't too hard either. Though I don't
> know if there is any advantage to doing that? The dependency issue
> maybe?
Please always have embedded systems in mind. On such platforms it's
rather unlikely to find a Rust compiler, thus a conversion to C sounds
sensible.
Yes, that's a good point. Although Rust is gaining popularity in Embedded
Systems, most systems still don't have Rust Compilers.
I don't have any special tips or requirements for a proposal. :-)
Gonna start working on it then. :-)
I have come up with an extremely good algorithm for cubic to linear conversion, it's at https://levien.com/tmp/flatten.html. The lyon people have ported this to Rust, see https://github.com/nical/lyon/pull/552. It's based on ideas from my blog post https://raphlinus.github.io/graphics/curves/2019/12/23/flatten-quadbez.html but goes beyond it. I believe that this algorithm is very near optimal in both speed and quality. If selected as a mentor, I will write it up as a paper (ideally for submission to jctg), and there would be an opportunity for the student to coauthor that.
This is pretty cool. I'm gonna take a close look at this soon. Just a few
days ago I was looking at Inkscape's code. It does path set operations
(union, intersection, etc), offsetting, smoothing and tweaking by
converting curves to polygons and back. This can be very useful in
such applications.
Moazin