2015-02-02 11:23 GMT+01:00 Ben Coman <[email protected]>:

>
>
> On Mon, Feb 2, 2015 at 8:06 AM, Nicolai Hess <[email protected]> wrote:
>
>> Ok, the best I could do:
>>
>> Sadly, it only works because I changed the default lcd_filter from cairo.
>> in cairo 1.7. was a public API for the lcd_filter.
>> since 1.8 this API is private again (the code for the different filter
>> settings is still there).
>>
>
>
> In trying to learn some background info, this found article [1] seems
> good, from which I learn:
>
> * Freely scalable it must be free from character drift.
>
> I guess this is what we want ?
>
> * Three main types of font rendering:
>
>    * Hinting trades accuracy for consistency, and as a consequence of
> this, hinted text _accumulates character drift_ with hinted glyphs, often
> possessing different metrics to their un-hinted counterparts.
>
> So I guess we don't use hinting, which implies not freely scalable ?
>
>    * Anti-aliasing results in output which is accurate but blurred,
> trading contrast for consistency and accuracy.
>
>    * Sub-pixel-rendering exploits the physical geometry of LCD screens to
> increase the horizontal resolution of the device. Needs to be filtered to
> avoid color fringing and is incompatible with aggressive hinting strategies.
>

Yes, in the freetypeplugin settings, you can switch between Monitortype LCD
and CRT



>
>    * Sub-pixel-positioning is a generalisation of anti-aliasing and/or
> sub-pixel-rendering to allow for more accurate glyph placement, and is
> incompatible with aggressive hinting strategies.
>

Yes, in the freetypeplugin settings, you can change the hinting style
Light/Normal/Full. With Full-Hinting there is no
subpixelantialising anymore.

Similiar options are available for cairo/freetype.

The settings for Monitortype and hinting have an influence on the rendering
in the freetype library *and* the postprocessing that
is done in pharos FreeTypePlugin.

The same for FreeType and Cairo



>
> That article [1] advises:
>
>    * For sub-pixel-rendering to function correctly it is necessary to
> enable the patent encumbered LCD filtering API. Many distributions,
> including Debian, do this already and is generally not a problem.
>
>    * Versions of Cairo before the 1.10 release use their own intra-pixel
> filter. As of 2009 there are two sets of patches available that update
> legacy releases of Cairo to use an FIR inter-pixel filter. The first set
> pre-dates the filtering interface in FreeType and uses a custom FIR filter
> with the coefficients outlined in Gib98. The second set of patches, by
> David Turner, take advantage of the FreeType filtering interface.
>
>    * It is recommended that distributions upgrade to Cairo 1.10 where at
> all possible.  Here [2] is a post on that.
>
> So btw, what version of Cario are we using?  I see latest is version
> 1.12.18.
>
> [1] https://freddie.witherden.org/pages/font-rasterisation/#spo07
> [2] http://lists.cairographics.org/archives/cairo/2010-January/018859.html
>
>
>
>
>> You can choose between
>> FT_LCD_FILTER_NONE
>> FT_LCD_FILTER_LEGACY
>> FT_LCD_FILTER_LIGHT
>> FT_LCD_FILTER_DEFAULT
>>
>> the default is  FT_LCD_FILTER_LEGACY
>> but for this (so far, the best) result I used
>> FT_LCD_FILTER_DEFAULT
>> But there is no public API for this function anymore, so I had to
>> change the code.
>>
>>
>> We have to discuss how we proceed.
>>
>> The problems:
>> font rendering looks ugly ( at least for small font size like for menus,
>> lists and codepanes)
>> font rendering looks different on windows and linux
>>
>> possible solutions:
>> change build options for Freetype on Windos (enable
>> FT_CONFIG_OPTION_SUBPIXEL_RENDERING, potential patent infringement?)
>> change default filter (patching cairo source)
>>
>> or we leave everything as it is.
>> I do not know, and I'm starting to lose all interest.
>>
>>
>> nicolai
>>
>>
>>
>> 2015-02-01 19:38 GMT+01:00 Nicolai Hess <[email protected]>:
>>
>>> **** patents!
>>>
>>> Hours, and days digging in the code for font rendering with cairo.
>>> I tried to find out why this "colored" subpixel antialising is not
>>> working although
>>> all option settings are set (in cairo) and in the source code of cairo
>>> the FT_SetLCDFilter
>>> call is really used! But the output does is just the same as with
>>> CAIRO_ANTIALIAS_GRAY,
>>>
>>> ... until I found THIS in the freetype config:
>>>
>>> /* Uncomment the line below if you want to activate sub-pixel rendering  */
>>>   /* (a.k.a. LCD rendering, or ClearType) in this build of the library.    
>>> */
>>>   /*                                                                       
>>> */
>>>   /* Note that this feature is covered by several Microsoft patents        
>>> */
>>>   /* and should not be activated in any default build of the library.      
>>> */
>>>   /*                                                                       
>>> */
>>>   /* This macro has no impact on the FreeType API, only on its             
>>> */
>>>   /* _implementation_.  For example, using FT_RENDER_MODE_LCD when calling 
>>> */
>>>   /* FT_Render_Glyph still generates a bitmap that is 3 times wider than   
>>> */
>>>   /* the original size in case this macro isn't defined; however, each     
>>> */
>>>   /* triplet of subpixels has R=G=B.                                       
>>> */
>>>
>>>
>>>
>>>
>>> ARGH!
>>>
>>> It still does not look as good as with the pharos freetypeplugin, but AT
>>> LEAST it looks
>>> equally on windows and linux , yeh.
>>>
>>>
>>> attached are three screenshots comparing
>>> the different athens drawings with the freetypeplugin
>>> athens on linux vs ftplugin
>>> athens on windows vs ftplugin
>>> athens on windows with enabled FT_CONFIG_SUBPIXEL_RENDERING vs ftplugin
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> 2015-01-31 10:18 GMT+01:00 stepharo <[email protected]>:
>>>
>>>>
>>>>   In athens, there are "hints" you can set.
>>>> (CairoFontOptions/hintMetricsOff/hintMetricsOn/hintStyleFull ....)
>>>>  I played a bit with different settings. Changing this settings change
>>>> the output, but I can not get it to look
>>>>  like with the freetype plugin. I understand that this can not look
>>>> equally, because the FreeTypePlugin and caire work differently,
>>>>  but the athens result looks bad compared with the other one.
>>>>
>>>>
>>>>
>>>>> - Pixel fitting. (The aliasing going on at the top of characters) Put
>>>>> Hinting: None in FreeType advanced features, and you will probably see
>>>>> something similar to the Athens rendering.
>>>>>
>>>>
>>>>  Yes, we can change the freetypeplugin setting and cairofontoption
>>>> setting to make the output look equally - ugly :)
>>>>
>>>>
>>>> Nicolai
>>>>
>>>> Igor explained to me that FreeType offers a degenerated mode that when
>>>> the font does have the information for bold, kerning,....
>>>> computes a "guessed and approximated" default. Cairo does not offer
>>>> this api else Athens would use it.
>>>> So what would be interesting is to test using font having all the
>>>> information to see if Cairo display well the fonts.
>>>>
>>>> Stef
>>>>
>>>
>>>
>>
>

Reply via email to