forked from minhngoc25a/freetype2
[raster] Reduce jitter value.
This catches a rendering problem with glyph `x' from Tahoma at 10ppem. It seems that the increase of the precision in the change from 2009-06-11 makes a larger jitter value unnecessary. * src/raster/ftraster.c (Set_High_Precision): Implement it.
This commit is contained in:
parent
29bc310563
commit
c02485cb72
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2011-01-13 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[raster] Reduce jitter value.
|
||||
|
||||
This catches a rendering problem with glyph `x' from Tahoma at
|
||||
10ppem. It seems that the increase of the precision in the change
|
||||
from 2009-06-11 makes a larger jitter value unnecessary.
|
||||
|
||||
* src/raster/ftraster.c (Set_High_Precision): Implement it.
|
||||
|
||||
2011-01-13 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[raster] Handle drop-outs at glyph borders according to Microsoft.
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType glyph rasterizer (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2005, 2007, 2008, 2009, 2010 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2005, 2007, 2008, 2009, 2010, 2011 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -651,11 +651,33 @@
|
|||
static void
|
||||
Set_High_Precision( RAS_ARGS Int High )
|
||||
{
|
||||
/*
|
||||
* `precision_step' is used in `Bezier_Up' to decide when to split a
|
||||
* given y-monotonous Bezier arc that crosses a scanline before
|
||||
* approximating it as a straight segment. The default value of 32 (for
|
||||
* low accuracy) corresponds to
|
||||
*
|
||||
* 32 / 64 == 0.5 pixels ,
|
||||
*
|
||||
* while for the high accuracy case we have
|
||||
*
|
||||
* 256/ (1 << 12) = 0.0625 pixels .
|
||||
*
|
||||
* `precision_jitter' is an epsilon threshold used in
|
||||
* `Vertical_Sweep_Span' to deal with small imperfections in the Bezier
|
||||
* decomposition (after all, we are working with approximations only);
|
||||
* it avoids switching on additional pixels which would cause artifacts
|
||||
* otherwise.
|
||||
*
|
||||
* The value of `precision_jitter' has been determined heuristically.
|
||||
*
|
||||
*/
|
||||
|
||||
if ( High )
|
||||
{
|
||||
ras.precision_bits = 12;
|
||||
ras.precision_step = 256;
|
||||
ras.precision_jitter = 50;
|
||||
ras.precision_jitter = 30;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue