http://www.infinality.net/blog/infinali ... e-patches/
Also did a style update on the main site, to make it have a more similar look to this forum. Please create a new post if you run into a problem for which another post doesn't already exist.
Here is the Changelog, which is also at the top of the patch.
Changes for 2011-11-17:
- Added a post-render, pre-lcd-filter filter that attempts to duplicate windows
sharpness / graininess. Controlled by
- Added a fringe filter, intended mostly for autohint (but still effective
for certain cases of TT hinting). This attempts to remove gray fringes that
sometimes occur on horizontal stems and angled serifs and doodads
(Times, Segoe '1', etc.)
- Added a grayscale filter.
- Added brightness/contrast filter.
- Substantial improvements in the stem alignment algorithm! Wow!
- Stem alignment now also happens on grayscale antialiased fonts (rgba=none).
Fixes / Tweaks:
- Changes inside of local.conf, which are documented there.
- Removed an artificial shift of 1/8 pixel to the right on stem aligned glyphs
which should result in sharper looking alignment.
- Added XFT_SETTINGS into infinality-settings.sh. This means it will require
less configuration on the end-user side.
- Fixed code to not touch bold, thin, narrow or italic faces for scale or
alignment (until they can be properly accounted for).
- Added -lm dependency to the code again. (It seems to sneak off now and then)
- Changed autohinter horizontal stem stem snapping from on/off to use a value
between 0 and 100.
- Functions getenv() and system() were crashing evince in _lcd_stem_align()
at odd times. A workaround has been put in place.
- Moved _lcd_stem_align and all other filters into ftsmooth.c, which is a better place.
- Use malloc() in _lcd_stem_align for allocating structs and arrays of structs
instead of what I learned in C++ class 10+ years ago. Should prevent abiword
from crashing with large pt sizes like 3000. (A workaround has been put
in place to automatically skip alignment on any ppem > 100. This will
prevent the crashes until the real solution can be figured out.)
- Fix some compiler warnings. Some are still present.
- Added "m" control to alignment algorithm. This will cause all stems to m
(or other 3-pronged glyphs) to get aligned to pixels. It still needs a bit
of work, as it makes the best looking glyph size change. This is because
the glyph now needs to snap stems to only even or odd pixels, not single ones.
- Added rules to allow "compatible widths" (i.e. widths if the font were being
bitmap TT hinted) on a glyph by glyph basis and tweaked certain fonts like
arial, verdana, times new roman, segoe ui, and trebuchet to use them.
- Don't stem align anything below 9 ppem because it is not consistently good.
- When doing stem alignment, automatically align stems to center of pixel or
start of pixel when necessary. When horizontal stems start snapping to 2 px,
so should the vertical ones in order for it to look nice.
- A Verdana 12 hack to make it render more like Windows. This notoriously
poor looking ppem now looks as good as Verdana 13 without needing fontconfig
- Courier New now looks good, and possibly better than Windows rendering, with
TT or autohint rendering. By the way, the hinters of Courier New should
either be commended or executed.
- Improvements in overshoot artifact and fringe correction- Freesans at large
ppem looks nice now. Overshoots on letters like 6, g, s, 3, etc. will
now be rounded to integer pixels.
- Wrap all infinality code within a macro that is set in ftoption.h:
#ifdef FT_CONFIG_OPTION_INFINALITY_PATCHSET. Makes it easier to identify
in the code and allows for easy compliation with or without the patches set.
- Variable renaming for more clarity, in code and in environment variables.
- Move stretching code into Freetype instead of relying on programs to handle
fontconfig matrix (they SUCK at it... *cough* Chrome *cough*).
- Additional modifications to the TT subpixel rendering rules for corrections
to Georgia, DejaVu Sans, Times New Roman, Courier New and a couple others.
- A general improvement in the way autohinted fonts render, particularly on
ones that normally look fragile or thin. Examples include Optima, Freemono,
Freeserif, Raleway, MgOpen, etc. I'm doing what Windows does, which is
brightness/contrast adjustment, except you don't see rainbows.