[cairo] Cairo and ISO C++

Bill Spitzak spitzak at gmail.com
Tue Jan 14 15:10:14 PST 2014


Other things I would like to see addressed in Cairo:

ZERO LINEWIDTH

A huge complaint about Cairo is that it is "fuzzy". It tries to hide 
this by defaulting the line width to 2, which just makes everything look 
thick.

I would change the default method of stroking a line to purposely draw 
non-antialised horizontal and vertical lines that are about 1/96 of an 
inch thick. In cairo setting the line width to 1, and offsetting any 
path that is being stroked by .5, .5 does a good job of this.

To match virtually every other graphics library I have seen, this state 
can be chosen by setting the line width to zero, and is turned off by 
setting the line width to non-zero (including MINFLOAT).

If this is not provided most programmers "fix" it by turning off 
antialiasing, which is not at all desirable and makes all the rest of 
the graphics look a lot worse.

ADJACENT SHAPES

I have no solution but everybody hates the fact that drawing two filled 
shapes that touch makes a slightly transparent line between them due to 
antialiasing. Again most users "fix" this by turning off antialiasing, 
which is not a way to get nice looking output.

DOTS

Right now two moveto's in a row do nothing. This should draw a dot, at 
least if rounded end caps are used. Currently the user has to draw an 
extremely short stroke to get a dot which is not very intuitive, and may 
be hard to accelerate. I believe this was done because some font formats 
have useless moveto's but I think a better fix would be for the 
translator from that format to remove these first.

PRESERVE PATH

I would have filling/stroking a path not clear the path, but instead put 
cairo in a state so the next moveto/lineto will clear the path. This 
will allow fill, stroke to work like users expect, and by removing the 
"preserve" calls reduce the size of the api.



More information about the cairo mailing list