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 >>>> >>> >>> >> >
