For an example of a rasterizer, you can take a look at my pure JS implementation of canvas (which is roughly the same imaging model as SVG). All lines and shapes are flattened into a pure line polygon, then drawn with a scanline rasterizer. Getting the basics working is fairly easy. Handling the endless edge cases, however.... :)
You have to do things like stencil texture to speed things up etc etc.
Text rendering can be tricky, but not that much trickier -- it's just the same curves at smaller scales.
Not sure what you mean by stencil textures. Are you talking about the NV_path_rendering approach where you stencil out the path? Yeah, that's not really a thing that people do these days.
[0] https://blog.mecheye.net/2019/05/why-is-2d-graphics-is-harde...
It's not that simple unfortunately. Hinting for TrueType fonts is a thing and without properly aligning resulting pixels at their own scale fonts tend to look very ugly when following pure curve definitions. Oversampling at e.g. 8x size is one possible option but then there are other problems that pop up once downscaling to display size.
https://magcius.github.io/xplain/article/rast1.html
The edge cases are similar -- precision in computing the path intersections and winding curves.
Triangles aren't necessarily involved in in rendering either, see eg how the stuff on shadertoy.com works.
Again, the vast majority of use cases for GPUs is 3d vertex graphics. But they're capable of more than that. Modern GPUs are very different from early GPUs that only worked with triangles. Some of the early ones were actually ASICs, and couldn't even load different shader programs.
What you are saying is outdated by maybe a couple of decades.
You can builds all kinds on top of pixels and triangles.
Loop-Blinn, similarly, is mostly a CPU-side approach and has a lot of drawbacks, but at it's core it's using the pixel shader to define a curve profile.