Yep, I understand you. I don't like either to be too dependent on libraries in case they break with Processing updates. I can tell you however, that with the new version of Geomerative at
http://www.ricardmarxer.com/geomerative I have been very active in maintaining it up to date with Processing and any bugs have been usually fixed in a matter of days. I hope I can keep up like that.
About the issue of shapes with holes, this was one of my main goals of Geomerative since in typography shapes this is very common. So yes, Geomerative supports rendering correctly shapes with holes.
It uses the breakShape() undocumented command of Processing in the backends that support it (JAVA2D and PDF) and it uses an internal software based tesselator for backends that don't support breakShape() (OPENGL, P3D, etc...).
So for the user it is transparent, you can create shapes using a very similar syntax as in Processing:
Code:
RG.beginShape();
RG.vertex();
RG.bezierVertex();
// and even to have several paths to form a shape (e.g. holes)
RG.breakShape();
// or
RG.breakShape(CLOSE);
RG.endShape();
// or
RShape shp = RG.getShape()
You just have to keep in mind that holes must be counter clockwise.
When you load SVG or TTF the holes in the shapes are respected.
There are quite a few Tutorial sketches with Geomerative that shows all this. Let me know if any of it is not clear or if there are any bugs so that I can fix them.
ricard