Christophe Rhodes csr21@cam.ac.uk writes:
Christophe Rhodes csr21@cam.ac.uk writes:
Find attached a preliminary patch to deal with the fact that, in general, glyphs from fonts are not constrained to draw only to the right of the cursor position.
A revised patch is attached, which is still not commit-worthy but fixes the opposite-problem as well: glyphs which draw beyond their advance width. (Thanks to Dave Murray aka JQS for testing).
The current plan is for us here at Goldsmiths to perform a little more testing and extend it to the PostScript backend. I suppose that the logical thing to do is to call TEXT-BOUNDING-RECTANGLE* a backend function and require backends to implement it for their backend-medium.
Well, for what it's worth, we did this, I performed some light testing (using clim-demo::postscript-test), and I've committed our work so far.
This imposes a maintenance burden on those interested in the OpenGL and beagle backends, but I hope not a terrible one. I note, from the screenshot at http://www.bloodandcoffee.net/campbell/climacs-beagle-porn.png for example, that there seem to be similar redraw artifacts in the beagle backend in any case, so it could well be that an implementation of text-bounding-rectangle* there clears those up. (Is anyone out there using the OpenGL backend?)
This remains true: the beagle, OpenGL (and CLX with #+unicode, if that's not dead code) backends are currently broken. Sorry. To fix them, the function climi::text-bounding-rectangle* needs to be implemented, which should return the bounding-rectangle of a draw-text command at 0,0 with :x-align :left and :y-align :baseline. (If all else fails, this can be faked with a call to TEXT-SIZE, with the caveat that then redraw artifacts as in the above screenshot will remain.)
Cheers,
Christophe