mirror of https://github.com/freetype/freetype
65d6572105
The dot product between freeVector and projVector or cosine of the angle between these FT_F2Dot14 unit vectors used to be scaled up by 4 and routinely occupied 32 bits in an FT_Long field F_dot_P. This patch scales the value down by 2^14 instead, which simplifies its use throughout the bytecode interpreter. This does not lead to the loss of precision because the lower bits are unreliable anyway. Consider two unit vectors (1,0) and (.6,.8) for which the true value of F_dot_P is .6 * 0x40000000 = 0x26666666. These vectors are stored as (0x4000,0) and (0x2666,0x3333) after rounding and F_dot_P is assigned 0x26660000. The lower bits were already lost while rounding the unit vector components. Besides code simplification, this change can lead to better performance when FT_MulDiv with the scaled-down F_dot_P is less likely to use the costly 64-bit path. We are not changing the type of F_dot_P to FT_F2Dot14 at this point. * src/truetype/ttinterp.c (Compute_Funcs): Scale F_dot_P down by 14 bits and modify its use accordingly. (Direct_Move, Direct_Move_Orig, Compute_Point_Displacement): Modify the use of F_dot_P field. * src/truetype/ttobjs.c (tt_size_run_fpgm): Change arbitrary assignment of F_dot_P to its theoretical maximum in case we decide to scale back its type later. |
||
---|---|---|
builds | ||
devel | ||
docs | ||
include | ||
objs | ||
src | ||
.gitignore | ||
.mailmap | ||
ChangeLog | ||
ChangeLog.20 | ||
ChangeLog.21 | ||
ChangeLog.22 | ||
ChangeLog.23 | ||
Jamfile | ||
Jamrules | ||
Makefile | ||
README | ||
README.git | ||
autogen.sh | ||
configure | ||
modules.cfg | ||
version.sed | ||
vms_make.com |
README
FreeType 2.4.10 =============== Please read the docs/CHANGES file, it contains IMPORTANT INFORMATION. Read the files `docs/INSTALL' for installation instructions. See the file `docs/LICENSE.TXT' for the available licenses. Note that we use ranges (`2008-2010') for copyright years also instead of listing individual years (`2008, 2009, 2010'). The FreeType 2 API reference is located in `docs/reference'; use the file `ft2-doc.html' as the top entry point. Additional documentation is available as a separate package from our sites. Go to http://download.savannah.gnu.org/releases/freetype/ and download one of the following files. freetype-doc-2.4.10.tar.bz2 freetype-doc-2.4.10.tar.gz ftdoc2410.zip Bugs ==== Please report bugs by e-mail to `freetype-devel@nongnu.org'. Don't forget to send a detailed explanation of the problem -- there is nothing worse than receiving a terse message that only says `it doesn't work'. Alternatively, you may submit a bug report at https://savannah.nongnu.org/bugs/?group=freetype Enjoy! The FreeType Team ---------------------------------------------------------------------- Copyright 2006-2011 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, and distributed under the terms of the FreeType project license, LICENSE.TXT. By continuing to use, modify, or distribute this file you indicate that you have read the license and understand and accept it fully. --- end of README ---