[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freetype-devel
Subject:    Re: [Devel] freetype LCD filtering
From:       Sébastien_Kunz-Jacques <kunzjacq () yahoo ! fr>
Date:       2004-01-22 15:07:22
Message-ID: 4011388D.5060901 () yahoo ! fr
[Download RAW message or body]

Turner David a écrit :

>Hello Sebastien,
>  
>
>>- In experiencing with a nonlinear filtering aimed at
>>increasing glyph contrast,  I noticed that the
>>antialiasing algorithm used by freetype changes
>>between 34 and 35pt : exact coverage for ppem<35,
>>supersampling above. the supersampling gives
>>lower-quality results than the exact coverage algo;
>>where do I have to modify the freetype source in order
>>to use the exact coverage algorithm everytime? What is
>>the order of magnitude of the performance loss?
>>    
>>
>
>I don't see what you're speaking about ? FreeType doesn't
>switch rendering algorithms based on the character pixel
>sizes. And switching to super-sampling _above_ 35 pixels
>would be a disaster in terms of performance anyway.
>  
>

Thanks for your quick response.

I use the code of freetype 2.1.7. In src/smooth/ftgrays.c, the comments 
about the code explain the differences between the antialiasing methods 
used in this file and the one implemented in src/raster/ftraster.c. One 
is an exact covering method, the other is a supersampling technique. I 
didn't pay any attention to this at first. Then I experienced the use of 
a nonlinear function favoring extreme values (dark grays appear darker, 
light grays lighter) to enhance contrast after antialiasing without 
completely losing the antialiased aspect (see "nltable" defined in the 
modified source file ftview.c). This yields good results for point sizes 
below 35pt (100dpi), but suddenly above 35pt I get "stairs" effects on 
some letters. Tracking down the problem I saw that letters above 35pt 
used much less gray levels (4-5) than below 35pt (the whole palette, it 
seems) (this appears clearly using the zoom feature I added in the 
render_text mode of ftview, see below). Since a 2x2 oversampling 
renderer uses only 5 gray levels, and since the comments of the file 
ftgrays.c explain that the exact coverage technique is more efficient 
than the oversampling one for small faces, I convinced myself (without 
looking in freetype code, I must admit...) that there was some kind of 
switch between the two antialiasing methods depending on the size of the 
rendered face.

> we'd be interested in seeing this code.
>  
>
Here you are. The archive contain the 2 files I modified in the (2.1.7) 
demo programs archive and one file defining filter coefficients. All 3 
should lie in src/. The options of ftview are modified (there is for 
example a 3x3 zoom, I deactivated waterfall rendering mode), see help.

Sébastien Kunz-Jacques



["filtering_source.tgz" (application/x-gzip)]
_______________________________________________
Devel mailing list
Devel@freetype.org
http://www.freetype.org/mailman/listinfo/devel

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic