ChangeLog


Log

Author Commit Date CI Message
Werner Lemberg 89f50647 2013-03-14T17:50:49 */*: Use FT_ERR_EQ, FT_ERR_NEQ, and FT_ERR where appropriate. FT_Err_XXX and friends are no longer directly used in the source code.
Werner Lemberg 52339dc2 2013-03-14T15:49:49 New error management macros. * include/freetype/fterrors.h (FT_ERR_XCAT, FT_ERR_CAT): Move to... * include/freetype/fttypes.h: ... this file. (FT_ERR, FT_ERR_EQ, FT_ERR_NEQ, FT_MODERR_EQ, FT_MODERR_NEQ): New macros. * include/freetype/freetype.h: Updated.
Werner Lemberg e3c93015 2013-03-14T11:21:17 */*: Use FT_Err_Ok only. This is a purely mechanical conversion.
Werner Lemberg 059bc335 2013-03-14T10:27:35 */*: Use `FT_THROW'. This is essentially a mechanical conversion, adding inclusion of `FT_INTERNAL_DEBUG_H' where necessary, and providing the macros for stand-alone compiling modes of the rasterizer modules. To convert the remaining occurrences of FT_Err_XXX and friends it is necessary to rewrite the code. Note, however, that it doesn't harm if some cases are not handled since FT_THROW is a no-op.
Werner Lemberg c58ce3be 2013-03-13T11:06:39 Introduce `FT_THROW' macro. The idea is to replace code like return FT_Err_Foo_Bar; or return CFF_Err_Foo_Bar; with return FT_THROW( Foo_Bar ); The FT_THROW macro has two functions: . It hides the module specific prefix. . In debug mode, it calls the empty function `FT_Throw' which can be thus used to set a breakpoint. * include/freetype/internal/ftdebug.h (FT_THROW): New macro. (FT_Throw): New prototype. * src/base/ftdebug.c (FT_Throw): New function.
Werner Lemberg dbc6e3f1 2013-03-12T11:42:20 Remove `FT_KEEP_ERR_PREFIX'. The idea is to always have FT_ERR_PREFIX available internally. * include/freetype/fterrors.h: Use FT2_BUILD_LIBRARY to guard undefinition of FT_ERR_PREFIX * src/gxvalid/gxverror.h, src/otvalid/otverror.h, src/sfnt/sferrors.h: Updated.
Werner Lemberg c879f245 2013-03-11T10:11:57 [gxvalid] Fix module error. * src/gxvalid/gxverror.h (FT_ERR_BASE): Define as FT_Mod_Err_GXvalid. * include/freetype/ftmoderr.h: Add module error for `GXvalid'.
Werner Lemberg d6bc524b 2013-03-11T09:50:53 Always use module related error codes. * src/cff/cffobjs.c (cff_face_init), src/type1/t1objs.c (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Use `FT_ERROR_BASE'. * src/type1/t1load.c (parse_encoding): Use T1_Err_Unknown_File_Format.
Werner Lemberg 737bbb04 2013-03-08T21:25:45 Minor.
Werner Lemberg 2d882540 2013-03-08T21:23:45 [cff] Set `linear{Hori,Vert}Advance' for embedded bitmaps also. * src/cff/cffgload.c (cff_slot_load): Implement it.
Alexei Podtelezhnikov 2ba18ba1 2013-02-22T23:58:57 [base] Fix commit ab02d9e8. * src/base/ftbbox.c (BBox_Cubic_Check): Change scaling to msb of 22.
Alexei Podtelezhnikov f9434dba 2013-02-19T21:27:18 [base] New bisecting BBox_Cubic_Check (disabled). * src/base/ftbbox.c (BBox_Cubic_Check): New bisecting algorithm for extremum search built around simple condition that defines which half contains the extremum.
Alexei Podtelezhnikov 0e536676 2013-02-18T20:41:56 [tools] Update BBox testing tool. * src/tools/test_bbox.c: Add another cubic outline with exact BBox. (REPEAT): Increase the number of benchmarking cycles. (profile_outline): Tweak output formatting.
Werner Lemberg bcca86af 2013-02-08T12:49:41 Fix Savannah bug #38235. * builds/unix/configure.raw: Don't generate `freetype-config' and `freetype.pc'. * builds/unix/unix-def.in (FT2_EXTRA_LIBS, LIBBZ2, LIBZ, build_libtool_libs, ft_version): New variables to be substituted. (freetype-config, freetype.pc): New rules to generate those files. * builds/unix/freetype-config.in: Remove code for handling `rpath'. The use of $rpath has been accidentally removed in a patch from 2009-12-22, and apparently noone has missed it since. Use `%' instead of `@' as a variable substitution marker. Use quotes. * builds/unix/freetype.in: Use `%' instead of `@' as a variable substitution marker. Use quotes.
Werner Lemberg a2c7eb18 2013-02-07T19:49:12 * src/truetype/ttobjs.c (tt_size_run_prep): Reset more GS variables. BTW, Greg agrees that the OpenType specification is missing the list of GS variables which will always be reset to the default values after the `prep' table has been executed.
Werner Lemberg bfcc375b 2013-02-06T08:47:29 * src/truetype/ttobjs.c (tt_size_run_prep): Reset reference points. Up to now, we simply took a snapshot of the Graphics State after the `prep' table has been executed, and right before a glyph's bytecode was run it got reloaded. However, as Greg Hitchcock has told us in private communication, reference points get reset to zero in the MS rasterizer and we follow in due course. While reasonable, this is undocumented behaviour. Most notably, this fixes the rendering of Arial's `x' glyph in subpixel hinting mode.
Werner Lemberg 00dfa330 2013-02-05T19:23:16 [truetype] A better fix for Savannah bug #38211. * src/truetype/ttinterp.c (Ins_IP): Implement identical behaviour to MS rasterizer if rp1 == rp2 (confirmed by Greg Hitchcock).
Alexei Podtelezhnikov 0eb6316f 2013-02-01T20:24:00 [pcf] Streamline parsing of PCF encoding table. * src/pcf/pcfread.c (pcf_get_encodings): Use simpler double for-loop. Reallocate array instead of using temporary storage.
Werner Lemberg 3b1f206b 2013-02-01T23:45:04 Fix Savannah bug #38227. * builds/unix/freetype-config.in: Set LC_ALL.
Werner Lemberg 30f1e6ca 2013-02-01T14:50:08 Fix Savannah bug #38221. This complements commit 83c0ebab. * src/base/ftcalc.c (FT_MulDiv_No_Round): Don't enclose with `TT_USE_BYTECODE_INTERPRETER'.
Werner Lemberg 40633205 2013-02-01T12:55:44 [truetype] Fix Savannah bug #38211. * src/truetype/ttinterp.c (Ins_IP): Make FreeType behave identical to other interpreters if rp1 == rp2 (which is invalid).
Werner Lemberg 6b9034f0 2013-01-28T13:56:23 Formatting, comment improvements.
Alexei Podtelezhnikov ab02d9e8 2013-01-28T06:35:19 [base] Small optimization of BBox calculation. * src/base/ftbbox.c (BBox_Cubic_Check): Use FT_MSB function in scaling algorithm.
Infinality c574d72c 2013-01-26T17:40:44 [truetype] Minor formatting fix.
Infinality 97ba5109 2013-01-26T17:05:40 [truetype] Fix rasterizer_version logic in sph.
Infinality a5fe3595 2013-01-26T12:29:52 [truetype] Align more to ClearType whitepaper for sph.
Alexei Podtelezhnikov 610ee58e 2013-01-25T23:33:00 [base] Fix broken emboldening at small sizes. * src/base/ftoutln.c (FT_Outline_EmboldenXY): Do not attempt to normalize zero-length vectors.
Werner Lemberg f41ee054 2013-01-25T16:41:24 Fix Savannah bug #38167. This fixes commit 83c0ebab from 2012-06-27. * src/truetype/ttinterp.h: s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.
Xi Wang ba931be2 2013-01-25T00:57:09 [sfnt] Fix broken pointer overflow checks. Many compilers such as gcc and clang optimize away pointer overflow checks `p + n < p', because pointer overflow is undefined behavior. Use a safe form `n > p_limit - p' instead. Also avoid possible integer overflow issues, for example, using `num_glyphs > ( p_limit - p ) / 2' rather than `num_glyphs * 2' given a large `num_glyphs'. * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Implement it.
Werner Lemberg 817caa9f 2013-01-25T00:40:56 Fix `make multi' * src/base/ftoutln.c, src/base/fttrigon.c: Include FT_INTERNAL_CALC_H.
David 'Digit' Turner 72447195 2013-01-25T00:36:35 [truetype] Fix C++ compilation. * src/truetype/ttsubpix.h: Updated. (SPH_X_SCALING_RULES_SIZE): Moved and renamed to... * src/truetype/ttsubpix.c (X_SCALING_RULES_SIZE): This. (sph_X_SCALING_Rules): Removed. (scale_test_tweak): Make function static. (sph_test_tweak_x_scaling): New function. * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Updated.
Werner Lemberg e9f330ad 2013-01-24T09:12:56 [base] Make `FT_Hypot' really internal. * include/freetype/fttrigon.h (FT_Hypot): Move to... * include/freetype/internal/ftcalc.h: This file. * src/base/fttrigon.c (FT_Hypot): Move to... * src/base/ftcalc.c: This file. Include FT_TRIGONOMETRY_H. * src/truetype/ttgload.c: Don't include FT_TRIGONOMETRY_H.
Werner Lemberg 87dc86d6 2013-01-24T08:39:43 [truetype] Revert change from 2013-01-22. FreeType's `height' value is the baseline-to-baseline distance... * src/truetype/ttobjs.c (tt_size_reset): Undo.
Alexei Podtelezhnikov b6de8e66 2013-01-23T23:31:41 [base, truetype] New internal FT_Hypot function. * include/freetype/fttrigon.h (FT_Hypot): Declare it. * src/base/fttrigon.c (FT_Hypot): Define it. * src/truetype/ttgload.c (TT_Process_Composite_Component): Use it instead of explicit expressions. * src/truetype/ttinterp.c (Current_Ratio, Normalize): Use it instead of TT_VecLen. (TT_VecLen): Removed.
Alexei Podtelezhnikov da11e5e7 2013-01-23T20:11:40 [base] Fix integer overflow. * src/base/ftoutln.c (FT_Outline_EmboldenXY): Normalize incoming and outgoing vectors and use fixed point arithmetic.
Alexei Podtelezhnikov e1a2ac19 2013-01-23T19:51:28 [base] Fix integer overflow. * src/base/ftoutln.c (FT_Outline_Get_Orientation): Scale the coordinates down to avoid overflow.
Alexei Podtelezhnikov 869fb8c4 2013-01-23T19:43:28 [base] Split out MSB function. * src/base/fttrigon.c (ft_trig_prenorm): Borrow from here. * include/freetype/internal/ftcalc.h (FT_MSB): Declare here. * src/base/ftcalc.c (FT_MSB): Define here.
Werner Lemberg e0469372 2013-01-22T11:07:07 [truetype] Fix font height. * src/truetype/ttobjs.c (tt_size_reset): The Windows rendering engine uses rounded values of the ascender and descender to compute the TrueType font height.
Werner Lemberg cd3f871e 2013-01-16T19:56:08 [sfnt] Fix optimized sbit loader. It was not taking bit_depth into consideration when blitting! * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_byte_aligned, * tt_sbit_decoder_load_bit_aligned): Handle bit depth.
David Turner 3a406127 2013-01-16T19:48:31 [truetype] Improve sub-pixel code. This patches fixes many issues with the ttsubpix implementation. 1. Data tables are defined, instead of declared, in the header, and thus copied into each source file that includes it. 2. These tables were defined as global, mutable, visible variables, and thus costing private RAM to every process that loads the library (> 50 KB / process, this is huge!). Additionally, this also made the library export the symbols completely needlessly. 3. Missing `sph_' and `SPH_' prefixes to some of the definitions. Note that this doesn't try to fix the incredibly inefficient storage format for the data tables used by the code. This one will require another pass in the future. * src/truetype/ttinterp.h (MAX_NAME_SIZE, MAX_CLASS_MEMBERS): Renamed to... (SPH_MAX_NAME_SIZE, SPH_MAX_CLASS_MEMBERS): This. Update all users. (SPH_TweakRule, SPH_ScaleRule): Decorate with `const' where appropriate. (Font_Class): Rename to... (SPH_Font_Class): This. Decorate with `const' where appropriate. * src/truetype/ttsubpix.h (scale_test_tweak, sph_test_tweak): Decorate arguments with `const' where appropriate. Move font tweaking tables to... * src/truetype/ttsubpic.c: This file and decorate them with `static' and `const' where appropriate. (X_SCALING_Rules, X_SCALING_RULES_SIZE): Renamed to... (spu_X_SCALING_Rules, SPH_X_SCALING_RULES_SIZE): This. Update all users.
Alexei Podtelezhnikov 0e0fdc5d 2013-01-12T23:05:55 [truetype] Improve accuracy of normalization of short vectors. Unit vector components are stored as 2.14 fixed-point numbers. In order to calculate all 14 bits accurately, a short vector to be normalized has to be upscaled to at least 14 bits before its length is calculated. This has been safe since accurate CORDIC algorithms were adopted. * src/truetype/ttinterp.c (Normalize): Scale short vectors by 0x4000.
Alexei Podtelezhnikov 081aba39 2013-01-12T22:36:37 [truetype] Kill very old vector normalization hacks. Back in the days, vector length calculations were not very accurate and the vector normalization function, Normalize, had to meticulously correct the errors for long vectors [commit b7ef2b096867]. It was no longer necessary after accurate CORDIC algorithms were adopted, but the code remained. It is time to kill it. * src/truetype/ttinterp.c (Normalize): Remove error compensation. (TT_VecLen): Remove any mention of old less accurate implementation.
Werner Lemberg e4ecce3b 2013-01-11T09:02:22 Disable FT_CONFIG_OPTION_OLD_INTERNALS. After the next release we are going to remove the code completely. * devel/ftoption.h, include/freetype/config/ftoption.h (FT_CONFIG_OPTION_OLD_INTERNALS): Comment out. * docs/CHANGES: Document it.
Werner Lemberg 53c0cb59 2013-01-11T08:29:22 Typos, whitespace.
Alexei Podtelezhnikov ad9d5c97 2013-01-10T22:29:07 [base] Update the overflow protection bit. The recent optimizations of CORDIC iterations drastically reduce the expansion factor. The vector components with MSB of 29 are now safe from overflow. * src/base/fttrigon.c (FT_TRIG_SAFE_MSB): New macro. (ft_trig_prenorm): Use it and remove dead code.
Alexei Podtelezhnikov 6b83a367 2013-01-09T00:25:32 [base, pshinter] Use FT_ABS, FT_MIN, and FT_MAX for readability. * src/base/ftbbox.c: Updated. * src/base/ftobjs.c: Updated. * src/base/fttrigon.c: Updated. * src/pshinter/pshalgo.c: Updated. * src/pshinter/pshrec.c: Updated.
Alexei Podtelezhnikov 09dbb059 2013-01-08T23:29:44 [base] Clean up trigonometric core. * src/base/fttrigon.c: Document the algorithm in a large comment. (FT_TRIG_COSCALE): Remove macro. (FT_Tan: Use `FT_TRIG_SCALE' instead. (FT_Cos, FT_Vector_Unit): Ditto and round the return values.
Alexei Podtelezhnikov 5dd9657f 2013-01-02T23:45:14 [base] Use rounding in CORDIC iterations. * src/base/fttrigon.c (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Improve accuracy by rounding.
Alexei Podtelezhnikov b4ac30b0 2013-01-02T22:21:37 [base] Reduce trigonometric algorithms. After we get within 45 degrees by means of true 90-degree rotations, we can remove initial 45-degree CORDIC iteration and start from atan(1/2) pseudorotation, reducing expansion factor thereby. * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macros. (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Update. * src/tools/cordic.py: Bring up to date with trigonometric core. * docs/CHANGES: Old typo.
Alexei Podtelezhnikov 50e634ab 2013-01-02T20:31:56 * src/pshinter/pshalgo.h: Remove unused code.
Werner Lemberg 7d6dc907 2012-12-27T01:08:24 * src/truetype/ttgload.c (tt_loader_init): Add more tracing.
Werner Lemberg 2ef0a198 2012-12-23T21:14:37 [type1] Fix handling of /FontBBox in MM fonts. Problem reported by Del Merritt <del@alum.mit.edu> If we have /FontBBox { { 11 12 13 14 15 16 17 18 } { 21 22 23 24 25 26 27 28 } { 31 32 33 34 35 36 37 38 } { 41 42 43 44 45 46 47 48 } } in the /Blend dictionary, then the first BBox is { 11 21 31 41 }, the second { 12 22 32 42 }, etc. * include/freetype/internal/psaux.h (T1_FieldType): Add `T1_FIELD_TYPE_MM_BBOX' (for temporary use). * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>: Implement it.
Alexei Podtelezhnikov cbf3fb39 2012-12-21T14:20:25 * src/tools/cordic.py: Bring up to date with trigonometric core.
Werner Lemberg 3ffb822e 2012-12-21T16:45:27 Check parameters of `FT_Outline_New'. Problem reported by Robin Watts <robin.watts@artifex.com>. * src/base/ftoutln.c (FT_Outline_New_Internal): Ensure that `numContours' and `numPoints' fit into FT_Outline's `n_points' and `n_contours', respectively.
Werner Lemberg c6a66b49 2012-12-20T08:31:56 * Version 2.4.11 released. ========================== Tag sources with `VER-2-4-11'. * docs/CHANGES, docs/release: Updated. * docs/VERSION.DLL: Update documentation and bump version number to 2.4.11. * README, Jamfile (RefDoc), builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, builds/win32/visualc/freetype.dsp, builds/win32/visualc/freetype.vcproj, builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, builds/win32/visualce/freetype.vcproj, builds/win32/visualce/index.html, builds/wince/vc2005-ce/freetype.vcproj, builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/freetype.vcproj, builds/wince/vc2008-ce/index.html: s/2.4.10/2.4.11/, s/2410/2411/. * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10. * builds/unix/configure.raw (version_info): Set to 16:0:10. * builds/toplevel.mk (dist): Don't include `.mailmap'.
Alexei Podtelezhnikov d7383b7b 2012-12-20T01:03:22 [base] Improve trigonometric core. FreeType used to rely on a 24-step iteration CORDIC algorithm to calculate trigonometric functions and rotate vectors. It turns out that once the vector is in the right half-plane, the initial rotation by 63 degrees is not necessary. The algorithm is perfectly capable to converge to any angle starting from the second 45 degree rotation. This patch removes the first rotation and makes it a 23-step CORDIC algorithm. * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macro values. (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Remove initial rotation.
Werner Lemberg 768590a9 2012-12-20T06:08:23 * src/base/ftobjs.c (ft_property_do): Fix compiler warning.
Alexei Podtelezhnikov 32fc416f 2012-12-19T23:05:32 * src/base/ftrfork.c (FT_Raccess_Guess): Switch to FT_Int counters.
Alexei Podtelezhnikov 06174dbb 2012-12-19T22:46:27 [base] Clean up trigonometric core. * src/base/fttrrigon.c (ft_trig_pseudo_polarize): Align algorithm with `ft_trig_pseudo_rotate'.
Infinality 1749ae20 2012-12-18T07:23:09 [truetype] Minor performance enhancement.
Infinality 94b79e74 2012-12-17T19:17:30 [truetype] Remove unusued code and variables.
Werner Lemberg a9f6f85e 2012-12-17T09:08:09 Various compiler warning fixes. * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Use `logical not' operator instead of negation. The idea is that `~' returns exactly the data type enforced by the cast to a pointer (be it 32bit or 64bit or whatever), while a negative integer has not this flexibility. * src/cache/ftccmap.c (FTC_CMAP_UNKNOWN): Ditto. * src/truetype/ttgxvar.c (ALL_POINTS, TT_Get_MM_Var): Ditto. * src/type/t1load.c (T1_Get_MM_Var): Ditto. (parse_blend_axis_types): Use cast. * src/bdf/bdflib.c (_bdf_readstream): Use cast.
Infinality 71f242c2 2012-12-16T19:52:01 [truetype ] Remove unusued code. Add minor fixes.
Werner Lemberg 309b8b31 2012-12-16T19:08:36 [sfnt] Fix Savannah bug #37936. * src/sfnt/ttload.c (tt_face_load_gasp): Avoid memory leak.
Alexei Podtelezhnikov 8ac5c5c8 2012-12-15T23:33:55 [base] Fix 11-year old bug. Since the initial commit (ebe85f59) the value of FT_TRIG_SCALE has always been slightly less than the correct value, which has been given in the comment as a hexadecimal. As a result, vector lengths were underestimated and rotated vectors were shortened.
Werner Lemberg 7f2e4f4f 2012-12-15T09:39:41 [bdf] Fix Savannah bug #37907. * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize negative second parameter of `ENCODING' field also.
Werner Lemberg 07bdb6e2 2012-12-15T02:02:23 [bdf] Fix Savannah bug #37906. * src/bdf/bdflib.c (_bdf_parse_glyphs): Use correct array size for checking `glyph_enc'.
Werner Lemberg 9b6b5754 2012-12-15T01:34:41 [bdf] Fix Savannah bug #37905. * src/bdf/bdflib.c (_bdf_parse_start): Reset `props_size' to zero in case of allocation error; this value gets used in a loop in `bdf_free_font'.
Alexei Podtelezhnikov 65d65721 2012-12-10T06:59:29 [truetype] Scale F_dot_P down. 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.
Johnson Y. Yan 06d6916c 2012-12-09T00:07:51 [type1] Another fix for 2012-09-17 commit. * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Correctly set `limit' value.
Alexei Podtelezhnikov cece4d3b 2012-12-06T20:23:38 [truetype] Tweak the previous commit. * src/truetype/ttinterp.c (Current_Ratio): Put unit vector components as the second TT_MulFix14 arguments. This is required on 16-bit systems.
Alexei Podtelezhnikov 5ad05f97 2012-12-06T00:27:20 [truetype] Microoptimizations in bytecode interpreter. * src/truetype/ttinterp.c (TT_DivFix14): New macro. (Normalize): Use it here. (Current_Ratio): Use TT_MulFix14 instead of FT_MulDiv. (Ins_SHPIX): Cancel out two TT_MulFix14 calls.
Alexei Podtelezhnikov b50088bd 2012-12-05T23:05:47 [truetype] Cosmetic improvement in bytecode interpreter. * src/truetype/ttinterp.c: Use explicit calls to FT_MulDiv, FT_MulFix, and FT_DivFix instead of macros.
John Tytgat 54d43a39 2012-12-05T11:14:41 [pshinter] Clamp BlueScale value. This is Savannah bug #37856. * src/pshinter/pshglob.c (psh_calc_max_height): New function. (psh_globals_new): Use it to limit BlueScale value to `1 / max_of_blue_zone_heights'.
Alexei Podtelezhnikov 4ae9cbb0 2012-12-01T23:36:02 [truetype, type1] Revise the use of FT_MulDiv. * src/truetype/ttgxvar.c: Updated. * src/truetype/ttobjs.c: Updated. * src/type1/t1load.c: Updated.
Werner Lemberg b731c827 2012-11-30T15:22:03 Minor.
Werner Lemberg 7e8e1761 2012-11-30T13:45:47 [configure] Preserve customized `ftoption.h'. Problem reported by Del Merritt <del@alum.mit.edu>. * builds/unix/configure.raw <cpp computation of bit length>: Don't remove existing FreeType configuration files.
Werner Lemberg 337fcb6a 2012-11-29T21:10:10 [type1] Fix Savannah bug #37831. The bug report also contains a patch. * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Really fix change from 2012-09-17.
Alexei Podtelezhnikov 6a126e14 2012-11-28T23:32:02 [truetype] Fix formatting and typo.
Alexei Podtelezhnikov 79180ad0 2012-11-27T21:36:20 [cid, type1, type42] Clean up units_per_EM calculations. * src/cid/cidload.c (cid_parse_font_matrix): Updated. * src/type1/t1load.c (t1_parse_font_matrix): Updated. * src/type42/t42parse.c (t42_parse_font_matrix): Updated.
Alexei Podtelezhnikov 72e976d4 2012-11-27T21:18:34 [ftstroke] Minor improvement. * src/base/ftstroke.c: Replace nested FT_DivFix and FT_MulFix with FT_MulDiv.
Werner Lemberg fa22ec1c 2012-11-17T11:45:24 * src/base/fttrigon.c (ft_trig_downscale): Make 64bit version work.
Alexei Podtelezhnikov 0690d3d7 2012-11-15T20:50:59 [base] Fix integer overflows in dd5718c7d67a. * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use FT_MulDiv.
Werner Lemberg 3a553400 2012-11-15T16:37:05 [autofit] Trace stem widths. * src/autofit/aflatin.c (af_latin_metrics_init_widths): Add some FT_TRACE calls.
Werner Lemberg 55127272 2012-11-13T09:22:11 [cff] Add support for OpenType Collections (OTC). * src/cff/cffload.c (cff_font_load): Separate subfont and face index handling to load both pure CFFs with multiple subfonts and OTCs (with multiple faces where each face holds exactly one subfont). * src/cff/cffobjs.c (cff_face_init): Updated.
Werner Lemberg 1a37e417 2012-11-12T11:01:07 [autofit] Minor improvement. * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Fix loop.
Werner Lemberg f966da82 2012-11-10T12:42:18 [autofit] Improve tracing. * src/autofit/aflatin.c (af_latin_hint_edges) [FT_DEBUG_LEVEL_TRACE]: Count number of actions and emit something if there weren't any.
Alexei Podtelezhnikov dd5718c7 2012-11-04T00:57:57 [base] Fortify emboldening code against egregious distortions. * src/base/ftoutln.c (FT_Outline_EmboldenXY): Threshold emboldening strength when it leads to segment collapse.
Alexei Podtelezhnikov 48ce226a 2012-11-03T22:27:27 [base] Clean up emboldening code and improve comments there. * src/base/ftoutln.c (FT_Outline_EmboldenXY): Replace sequential calls to FT_MulFix and FT_DivFix with FT_MulDiv. Mention that bisectors are used to figure out the shift direction.
Werner Lemberg 553bb3c3 2012-10-24T14:22:14 [autofit] Add standard character to `AF_ScriptClassRec' structure. * src/autofit/aftypes.h (AF_ScriptClassRec): Add `standard_char' member. (AF_DEFINE_SCRIPT_CLASS): Updated. * src/autofit/aflatin.c (af_latin_metrics_init_widths): Use it. (af_latin_metrics_init, af_latin_script_class): Updated. * src/autofit/aflatin.c (af_latin2_metrics_init_widths): Use it. (af_latin2_metrics_init, af_latin2_script_class): Updated. * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Use it. (af_cjk_metrics_init, af_cjk_script_class): Updated. * src/autofit/afindic.c(af_indic_metrics_init, af_indic_script_class): Updated. * src/autofit/afcjk.h, src/autofit/aflatin.h: Updated. * src/autofit/afdummy.c: Updated.
Werner Lemberg 118c6025 2012-10-24T12:26:20 [autofit] Only use Unicode CMap. * src/autofit/aflatin.c (af_latin_metrics_init): Implement it, to be in sync with `af_face_globals_compute_script_coverage)'.
Werner Lemberg 8e82a961 2012-10-21T11:02:50 [psaux] Improve parsing of invalid numbers. * src/psaux/psconv.c (PS_Conv_Strtol): Always parse complete number, even in case of overflow. (PS_Conv_ToInt): Only increase cursor if parsing was successful. (PS_Conv_ToFixed): Ditto. Trace underflow and data error.
Werner Lemberg fdcbaf19 2012-10-21T10:40:12 [smooth] Improve tracing. * src/smooth/ftgrays.c (gray_sweep): Trace last sweep line of current band also.
Alexei Podtelezhnikov 24e897db 2012-10-20T22:23:01 [truetype] Cheaper way to threshold angles between vectors. * src/truetype/ttinterp.c (Ins_ISECT): Thresholding tangent is a lot cheaper than thresholding sine.
Werner Lemberg ad4eecca 2012-10-20T21:27:17 [cff] Improve parsing of invalid real numbers. * src/cff/cffparse.c (cff_parse_real): Always parse complete number, even in case of overflow or underflow. Also trace one more underflow.
Andreas Pehnack 1e168834 2012-10-20T11:42:22 [sfnt] Load pure CFF fonts wrapped in SFNT container. Such fonts only have a `cmap' and a `CFF' table. * src/sfnt/ttload.c (tt_face_load_font_dir): Don't call `check_table_dir' if font signature is `OTTO'.
Werner Lemberg eaf0afb4 2012-10-20T11:27:25 [psaux] Fix some value overflows and improve tracing. * src/psaux/psconv.c: Include FT_INTERNAL_DEBUG_H. (FT_COMPONENT): Define. (PS_Conv_Strtol): Return FT_Long. Handle bad data and overflow. Emit some tracing messages in case of error. (PS_Conv_ToInt): Return FT_Long. (PS_Conv_ToFixed): Updated. * src/psaux/psconv.h: Updated. * include/freetype/internal/fttrace.h: Add `psconv'.
Werner Lemberg dda1e93d 2012-10-20T08:34:57 [autofit] Fix `make multi CC=c++'. * src/autofit/aflatin.c, src/autofit/aflatin2.c: Include `afglobal.h'. * src/autofit/afloader.c: Fix order of header files. * src/autofit/afmodule.c: Include `afglobal.h' and `aferrors.h'.
Werner Lemberg 4404ec4e 2012-10-19T09:06:53 [cff] Fix more value errors and improve tracing. * src/cff/cffparse.c (cff_parse_integer): Emit tracing message in case of error. (cff_parse_real): Handle and trace overflow, underflow, and bad data consistently. (do_fixed): New helper function, handling and tracing overflow. (cff_parse_fixed, cff_parse_fixed_scaled): Use `do_fixed'.
Werner Lemberg 0708b23e 2012-10-17T21:38:19 [psaux] Fix some value overflows. * src/psaux/psconv.c (PS_Conv_ToFixed): Implement it.