[openbeos] Re: GSoC: Sub-pixel antialiasing for font rendering

  • From: Fredrik Ekdahl <fekdahl@xxxxxxxxx>
  • To: openbeos@xxxxxxxxxxxxx
  • Date: Sun, 06 Apr 2008 10:29:38 +0200

Stephan Assmus skrev:
Hi Andrej,

Andrej Spielmann wrote:
Hello everybody,

I would like to submit a proposal for the sub-pixel antialiasing project for GSoC. I know the basics of how sub-pixel antialiasing works and I think that the most important part of this project would actually be to get a complex understanding of how text-rendering in Haiku works. Could you please suggest any materials that would help me familiarize myself with the structure of Haiku's app_server and font rendering. I would like to get a more precise idea of what needs to be done before writing the application.

This is a nice project, thanks for considering it! :-)

Yes, very interesting project indeed.

The cleanest way to implement sub-pixel anti-aliasing would be to support it for any and all vector drawing at once, not only text rendering. Then you would have to change every DrawingMode implementation to interprete the coverage values as triples for individual red, green and blue subpixels. Or better yet, write a complete alternative set of DrawingModes, so the feature could be turned on/off.

It would definitely be nice if subpixel rendering would be supported for all vector drawings, optionally. I suppose a there is a significant speed loss which could be noticeable with older systems.
One thing strikes me when I read the articles mentioned in this thread:
Suppose I have two monitors connected to my computer, one is an LCD and the other a CRT. For the LCD screen I naturally want to use subpixel rendering to get sharper graphics, while for the CRT I want to use regular antialiasing because I can't really predict the subpixel positions. Another case is when I have two LCD screens, one which have a subpixel order of RGB and the other have an order of BGR. I want to use subpixel rendering for both screens but with different subpixel order settings.

So to sum it up, it would be optimal to have settings for each attached screen for:

 * Enable subpixel rendering for
   - Nothing
   - Normal text rendering (using Freetype subpixel rendering)
   - All vector rendering (using Freetype + AGG subpixel rendering)
 * Subpixel order
   - RGB
   - BGR
   - etc.

/Fredrik Ekdahl

Other related posts: