1 2013-05-08 Werner Lemberg <wl@gnu.org>
3 * Version 2.4.12 released.
4 ==========================
7 Tag sources with `VER-2-4-12'.
9 * docs/VERSION.DLL: Update documentation and bump version number to
12 * README, Jamfile (RefDoc),
13 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
14 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
15 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
16 builds/win32/visualc/freetype.dsp,
17 builds/win32/visualc/freetype.vcproj,
18 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
19 builds/win32/visualce/freetype.vcproj,
20 builds/win32/visualce/index.html,
21 builds/wince/vc2005-ce/freetype.vcproj,
22 builds/wince/vc2005-ce/index.html,
23 builds/wince/vc2008-ce/freetype.vcproj,
24 builds/wince/vc2008-ce/index.html: s/2.4.11/2.4.12/, s/2411/2412/.
26 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 12.
28 * builds/unix/configure.raw (version_info): Set to 16:1:10.
30 2013-05-08 Werner Lemberg <wl@gnu.org>
32 * docs/CHANGES: Updated.
34 2013-05-08 Werner Lemberg <wl@gnu.org>
36 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Typo.
38 2013-05-05 Werner Lemberg <wl@gnu.org>
40 Synchronize `ftconfig.h'.
42 * builds/unix/ftconfig.in: Updated.
44 2013-05-05 Werner Lemberg <wl@gnu.org>
46 Fix compilation with C++.
48 * src/base/md5.c (body): Use proper cast.
50 2013-05-05 Werner Lemberg <wl@gnu.org>
52 Fix 64bit compilation issues.
54 * include/freetype/config/ftconfig.h [FT_LONG64]: Typedef
57 * src/base/ftcalc.c: Remove typedef of `FT_Int64'.
58 (FT_DivFix): Fix cast.
59 * src/base/fttrigon.c: Remove typedef of `FT_Int64'.
61 2013-05-05 Werner Lemberg <wl@gnu.org>
63 [raster] Fix clang issues.
65 Fix suggested by <octoploid@yandex.com>.
67 * src/raster/ftraster.c (ULong): New typedef.
68 (SCALED): Add proper cast.
70 2013-05-04 Werner Lemberg <wl@gnu.org>
74 * src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate): Use
77 * src/cff/cf2intrp.c (cf2_interpT2CharString) <default>: Force
78 unsigned for computations.
79 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Ditto.
80 * src/cff/cffparse.c (cff_parse_integer): Ditto.
82 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
84 2013-05-04 Werner Lemberg <wl@gnu.org>
86 [cff] Make Adobe CFF engine work correctly on 64bit hosts.
88 Reported by numerous people on the `freetype-devel' list. Without
89 this fix, glyphs aren't properly aligned on a common baseline.
91 On 64bit systems, `FT_Pos' expands to `long int', having a width of
92 64bit. `CF2_Fixed' expands to `int' which is normally 32bit wide on
93 64bit hosts also. Wrong casts filled up the blues arrays with
94 incorrect values. Note that all blues values are accessed with the
95 `cf2_blueToFixed' macro which handles the 64bit to 32bit conversion.
97 * src/cff/cf2ft.h (cf2_getBlueValues, cf2_getOtherBlues,
98 cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Use `FT_Pos' for
99 `data', not `CF2_Fixed'.
100 * src/cff/cf2ft.c (cf2_getBlueValues, cf2_getOtherBlues,
101 cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Updated.
102 * src/cff/cf2blues.c (cf2_blues_init): Updated.
104 2013-05-04 Werner Lemberg <wl@gnu.org>
106 More fixes for clang's `sanitize' feature.
108 * src/base/ftcalc.c (FT_DivFix): Use unsigned values for
109 computations which use the left shift operator and convert to signed
111 * src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate,
112 FT_Vector_Length, FT_Vector_Polarize): Ditto.
114 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Simplify.
115 * src/cff/cffload.c (cff_subfont_load): Fix constant.
116 * src/cff/cffparse.c (cff_parse_integer, cff_parse_real, do_fixed,
117 cff_parse_fixed_dynamic): Use unsigned values for computations which
118 use the left shift operator and convert to signed as the last step.
120 * src/cid/cidload.c (cid_get_offset): Ditto.
122 * src/psaux/psconv.c (PS_Conv_ToFixed): Ditto.
123 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
125 * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14): Ditto.
127 2013-05-04 Werner Lemberg <wl@gnu.org>
129 Fix errors reported by clang's `sanitize' feature.
131 * include/freetype/internal/ftstream.h: Simplify and fix integer
133 (FT_INT8_, FT_BYTE_I16, FT_BYTE_I32, FT_INT8_I16, FT_INT8_I32,
134 FT_INT8_I32, FT_INT8_U32): Removed.
135 (FT_PEEK_SHORT, FT_PEEK_LONG, FT_PEEK_OFF3, FT_PEEK_SHORT_LE,
136 FT_PEEK_LONG_LE, FT_PEEK_OFF3_LE): Use unsigned values for
137 computations and convert to signed as the last step.
139 * src/cff/cf2fixed.h (cf2_intToFixed, cf2_fixedToInt,
140 cf2_fracToFixed): Avoid shifts of negative values.
141 (cf2_intToFrac, cf2_fixedToFrac, cf2_fixedTo26Dot6): Removed,
144 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdEXTENDEDNMBR,
145 default>: Use unsigned values for computations and convert to signed
147 Use proper types in tracing messages.
149 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Use unsigned
150 values for computation of operands and convert to signed as the last
152 Use proper type in tracing message.
154 2013-05-03 Werner Lemberg <wl@gnu.org>
156 * src/cff/cf2blues.c: Remove dead code.
158 2013-05-02 Chris Liddell <chris.liddell@artifex.com>
160 * src/cff/cffgload.c: Include FT_CFF_DRIVER_H.
162 2013-04-27 Werner Lemberg <wl@gnu.org>
164 * docs/CHANGES: Updated.
167 2013-04-13 Werner Lemberg <wl@gnu.org>
169 [cff] Add a new Type 2 interpreter and hinter.
171 This work, written by Dave Arnold <darnold@adobe.com> and fully
172 integrated into FreeType by me, is a donation by Adobe in
173 collaboration with Google. It is vastly superior to the old CFF
174 engine, and it will replace it soon. Right now, it is still off by
175 default, and you have to explicitly select it using the new
176 `hinting-engine' property of the cff driver.
178 For convenience, (most of) the new files are committed separately.
180 * include/freetype/config/ftheader.h (FT_CFF_DRIVER_H): New macro.
181 * include/freetype/ftcffdrv.h: New file to access CFF driver
183 * include/freetype/fterrdef.h (FT_Err_Glyph_Too_Big): New error
185 * include/freetype/internal/fttrace.h: Add `cf2blues', `cf2hints',
188 * src/cff/cffgload.h (CFF_SubFont): New member `current_subfont'.
189 * src/cff/cffobjs.h (CFF_DriverRec): New members `hinting_engine'
190 and `no_stem_darkening'.
191 * src/cff/cfftypes.h (CFF_FontRec): New member `cf2_instance'.
193 * src/cff/cff.c: Include new files.
194 * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
195 `hinting-engine' and `no-stem-darkening' properties (only the Adobe
196 engine listens to them).
197 * src/cff/cffgload.c: Include `cf2ft.h'.
198 (cff_decoder_prepare): Initialize `current_subfont'.
199 (cff_build_add_point): Handle Adobe engine which uses 16.16
201 (cff_slot_load): Handle FT_LOAD_NO_SCALE and FT_LOAD_NO_HINTING
203 Choose rendering engine based on `hinting_engine' property.
204 * src/cff/cffload.c (cff_font_done): Call finalizer of the Adobe
206 * src/cff/cffobjs.c: Include FT_CFF_DRIVER_H.
207 (cff_driver_init): Set default property values.
209 * src/cff/rules.mk (CFF_DRV_SRC, CFF_DRV_H): Add new files.
211 * src/cff/cf2*.*: New files, containing the Adobe engine.
213 2013-04-12 Werner Lemberg <wl@gnu.org>
215 [cff] Minor code administration issues.
217 * src/cff/cffgload.c (check_points): Rename to...
218 (cff_check_points): ...this and make it FT_LOCAL.
219 (cff_builder_add_point, cff_builder_add_point1,
220 cff_builder_start_point, cff_builder_close_contour,
221 cff_lookup_glyph_by_stdcharcode, cff_get_glyph_data,
222 cff_free_glyph_data): Make them FT_LOCAL.
224 * src/cff/cffgload.h: Updated.
226 2013-04-12 Werner Lemberg <wl@gnu.org>
228 Add output bitmap checksums.
230 Use `FT2_DEBUG=bitmap:3' for tracing.
232 * src/base/md5.c, src/base/md5.h: New files, taken from
234 http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
236 * include/freetype/internal/fttrace.h: Add `bitmap'.
238 * src/base/ftobjs.c [FT_DEBUG_LEVEL_TRACE]: Include `md5.c'
240 (FT_Render_Glyph_Internal) [FT_DEBUG_LEVEL_TRACE]: For tracing,
241 convert resulting bitmap to a uniform format and compute a checksum.
242 Use `bitmap' category for the tracing message.
244 * src/base/rules.mk (BASE_H): Updated.
246 * docs/LICENSE.TXT: Updated.
248 2013-04-12 Werner Lemberg <wl@gnu.org>
250 [cff] Add framework for CFF properties.
252 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC7):
255 * src/cff/cffdrivr.c: Include FT_SERVICE_PROPERTIES_H.
256 (cff_property_set, cff_property_get): New functions, still empty.
257 Define `cff_service_properties' service.
258 Update `cff_services'.
260 * src/cff/cffpic.h: Include FT_SERVICE_PROPERTIES_H.
261 (CFF_SERVICE_PROPERTIES_GET): New macro.
262 (CffModulePIC): Add `cff_service_properties'.
264 2013-04-03 Werner Lemberg <wl@gnu.org>
266 [bdf] Fix Savannah bug #38589.
268 * src/bdf/bdflib.c (_bdf_readstream): Thinko.
270 2013-03-31 Werner Lemberg <wl@gnu.org>
272 * configure: Use egrep, not grep.
274 Problem reported Mojca Miklavec <mojca.miklavec.lists@gmail.com>.
276 2013-03-29 Werner Lemberg <wl@gnu.org>
278 * include/freetype/ftlcdfil.h: Add description of color filtering.
280 Based on a contribution from Antti S. Lankila <alankila@bel.fi>
281 (Savannah bug #38607).
283 2013-03-23 Werner Lemberg <wl@gnu.org>
287 * src/autofit/afmodule.c (af_property_set): Typo.
288 (af_autofitter_init, af_autofitter_done): Use cast.
290 2013-03-21 Werner Lemberg <wl@gnu.org>
292 * configure: Automatically test for `gmake' also.
294 Suggested by Mojca Miklavec <mojca.miklavec.lists@gmail.com>.
296 2013-03-21 Peter Breitenlohner <peb@mppmu.mpg.de>
298 Respect CONFIG_SHELL from the environment.
300 Some large packages using FreeType have to use a broken (deficient)
301 /bin/sh. The configure scripts (as generated by Autoconf) are
302 clever enough to find a better shell and put that one into the
303 environment variable CONFIG_SHELL. If that environment variable is
304 already set the script skips the test and assumes to be already
305 running under a good shell.
307 * builds/unix/detect.mk: Honour CONFIG_SHELL.
308 * builds/unix/unix-def.in (SHELL): Define.
310 2013-03-21 Werner Lemberg <wl@gnu.org>
312 Fix Savannah patch #7971.
314 * configure: Handle MAKE environment variable also.
316 2013-03-17 Werner Lemberg <wl@gnu.org>
318 Fix Savannah bug #38538.
320 * builds/amiga/src/base/ftdebug.c, builds/win32/ftdebug.c,
321 builds/wince/ftdebug.c (FT_Throw): Add function.
323 2013-03-17 Werner Lemberg <wl@gnu.org>
325 [raster] Remove dead code.
327 * src/raster/rastpic.c (ft_raster1_renderer_class_pic_init)
328 src/smooth/ftspic.c (ft_smooth_renderer_class_pic_init): Do it.
330 2013-03-17 Werner Lemberg <wl@gnu.org>
332 * src/pshinter/pshpic.h (GET_PIC): Use correct container.
334 2013-03-15 Werner Lemberg <wl@gnu.org>
336 * include/freetype/ftmoderr.h: Fix commit from 2013-03-11.
338 The previous version was not backward compatible. Reported by
341 2013-03-14 Werner Lemberg <wl@gnu.org>
343 */*: Use FT_ERR_EQ, FT_ERR_NEQ, and FT_ERR where appropriate.
345 FT_Err_XXX and friends are no longer directly used in the source
348 2013-03-14 Werner Lemberg <wl@gnu.org>
350 New error management macros.
352 * include/freetype/fterrors.h (FT_ERR_XCAT, FT_ERR_CAT): Move to...
353 * include/freetype/fttypes.h: ... this file.
354 (FT_ERR, FT_ERR_EQ, FT_ERR_NEQ, FT_MODERR_EQ, FT_MODERR_NEQ): New
357 * include/freetype/freetype.h: Updated.
359 2013-03-14 Werner Lemberg <wl@gnu.org>
361 */*: Use FT_Err_Ok only.
363 This is a purely mechanical conversion.
365 2013-03-14 Werner Lemberg <wl@gnu.org>
369 This is essentially a mechanical conversion, adding inclusion of
370 `FT_INTERNAL_DEBUG_H' where necessary, and providing the macros for
371 stand-alone compiling modes of the rasterizer modules.
373 To convert the remaining occurrences of FT_Err_XXX and friends it is
374 necessary to rewrite the code. Note, however, that it doesn't harm
375 if some cases are not handled since FT_THROW is a no-op.
377 2013-03-13 Werner Lemberg <wl@gnu.org>
379 Introduce `FT_THROW' macro.
381 The idea is to replace code like
383 return FT_Err_Foo_Bar;
387 return CFF_Err_Foo_Bar;
391 return FT_THROW( Foo_Bar );
393 The FT_THROW macro has two functions:
395 . It hides the module specific prefix.
397 . In debug mode, it calls the empty function `FT_Throw' which can
398 be thus used to set a breakpoint.
400 * include/freetype/internal/ftdebug.h (FT_THROW): New macro.
401 (FT_Throw): New prototype.
402 * src/base/ftdebug.c (FT_Throw): New function.
404 2013-03-12 Werner Lemberg <wl@gnu.org>
406 Remove `FT_KEEP_ERR_PREFIX'.
408 The idea is to always have FT_ERR_PREFIX available internally.
410 * include/freetype/fterrors.h: Use FT2_BUILD_LIBRARY to guard
411 undefinition of FT_ERR_PREFIX
413 * src/gxvalid/gxverror.h, src/otvalid/otverror.h,
414 src/sfnt/sferrors.h: Updated.
416 2013-03-11 Werner Lemberg <wl@gnu.org>
418 [gxvalid] Fix module error.
420 * src/gxvalid/gxverror.h (FT_ERR_BASE): Define as
422 * include/freetype/ftmoderr.h: Add module error for `GXvalid'.
424 2013-03-11 Werner Lemberg <wl@gnu.org>
426 Always use module related error codes.
428 * src/cff/cffobjs.c (cff_face_init), src/type1/t1objs.c
429 (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Use
432 * src/type1/t1load.c (parse_encoding): Use
433 T1_Err_Unknown_File_Format.
435 2013-03-08 Werner Lemberg <wl@gnu.org>
437 [cff] Set `linear{Hori,Vert}Advance' for embedded bitmaps also.
439 Problem reported by Khaled Hosny <khaledhosny@eglug.org>.
441 * src/cff/cffgload.c (cff_slot_load): Implement it.
443 2013-02-23 Alexei Podtelezhnikov <apodtele@gmail.com>
445 [base] Fix commit ab02d9e8.
447 * src/base/ftbbox.c (BBox_Cubic_Check): Change scaling to msb of 22.
449 2013-02-19 Alexei Podtelezhnikov <apodtele@gmail.com>
451 [base] New bisecting BBox_Cubic_Check (disabled).
453 * src/base/ftbbox.c (BBox_Cubic_Check): New bisecting algorithm
454 for extremum search built around simple condition that defines
455 which half contains the extremum.
457 2013-02-18 Alexei Podtelezhnikov <apodtele@gmail.com>
459 [tools] Update BBox testing tool.
461 * src/tools/test_bbox.c: Add another cubic outline with exact BBox.
462 (REPEAT): Increase the number of benchmarking cycles.
463 (profile_outline): Tweak output formatting.
465 2013-02-02 Werner Lemberg <wl@gnu.org>
467 Fix Savannah bug #38235.
469 * builds/unix/configure.raw: Don't generate `freetype-config' and
472 * builds/unix/unix-def.in (FT2_EXTRA_LIBS, LIBBZ2, LIBZ,
473 build_libtool_libs, ft_version): New variables to be substituted.
474 (freetype-config, freetype.pc): New rules to generate those files.
476 * builds/unix/freetype-config.in: Remove code for handling `rpath'.
477 The use of $rpath has been accidentally removed in a patch from
478 2009-12-22, and apparently noone has missed it since.
479 Use `%' instead of `@' as a variable substitution marker.
482 * builds/unix/freetype.in: Use `%' instead of `@' as a variable
486 2013-02-07 Werner Lemberg <wl@gnu.org>
488 * src/truetype/ttobjs.c (tt_size_run_prep): Reset more GS variables.
490 BTW, Greg agrees that the OpenType specification is missing the list
491 of GS variables which will always be reset to the default values
492 after the `prep' table has been executed.
494 2013-02-06 Werner Lemberg <wl@gnu.org>
496 * src/truetype/ttobjs.c (tt_size_run_prep): Reset reference points.
498 Up to now, we simply took a snapshot of the Graphics State after the
499 `prep' table has been executed, and right before a glyph's bytecode
500 was run it got reloaded. However, as Greg Hitchcock has told us in
501 private communication, reference points get reset to zero in the MS
502 rasterizer and we follow in due course. While reasonable, this is
503 undocumented behaviour.
505 Most notably, this fixes the rendering of Arial's `x' glyph in
506 subpixel hinting mode.
508 2013-02-05 Werner Lemberg <wl@gnu.org>
510 [truetype] A better fix for Savannah bug #38211.
512 * src/truetype/ttinterp.c (Ins_IP): Implement identical behaviour to
513 MS rasterizer if rp1 == rp2 (confirmed by Greg Hitchcock).
515 2013-02-01 Alexei Podtelezhnikov <apodtele@gmail.com>
517 [pcf] Streamline parsing of PCF encoding table.
519 * src/pcf/pcfread.c (pcf_get_encodings): Use simpler double for-loop.
520 Reallocate array instead of using temporary storage.
522 2013-02-01 Werner Lemberg <wl@gnu.org>
524 Fix Savannah bug #38227.
526 * builds/unix/freetype-config.in: Set LC_ALL.
528 2013-02-01 Werner Lemberg <wl@gnu.org>
530 Fix Savannah bug #38221.
532 This complements commit 83c0ebab.
534 * src/base/ftcalc.c (FT_MulDiv_No_Round): Don't enclose with
535 `TT_USE_BYTECODE_INTERPRETER'.
537 2013-02-01 Werner Lemberg <wl@gnu.org>
539 [truetype] Fix Savannah bug #38211.
541 * src/truetype/ttinterp.c (Ins_IP): Make FreeType behave identical
542 to other interpreters if rp1 == rp2 (which is invalid).
544 2013-01-28 Alexei Podtelezhnikov <apodtele@gmail.com>
546 [base] Small optimization of BBox calculation.
548 * src/base/ftbbox.c (BBox_Cubic_Check): Use FT_MSB function in
551 2013-01-26 Infinality <infinality@infinality.net>
553 [truetype] Minor formatting fix.
555 * src/truetype/ttinterp.c: Updated.
556 (DO_RS): Fix indentation.
558 2013-01-26 Infinality <infinality@infinality.net>
560 [truetype] Fix rasterizer_version logic in sph.
562 * src/truetype/ttsubpix.c: Updated.
563 (ALWAYS_SKIP_DELTAP_Rules): Remove rule for Trebuchet MS.
564 (sph_set_tweaks): Fix `rasterizer_version' logic.
566 2013-01-26 Infinality <infinality@infinality.net>
568 [truetype] Align more to ClearType whitepaper for sph.
570 * include/freetype/internal/tttypes.h (TT_FaceRec): Add flags
571 for detected opcode patterns and compatibility mode.
573 * src/truetype/ttgload.c (tt_loader_init): Complete conditional.
575 * src/truetype/ttinterp.c: Updated.
576 Remove SPH_DEBUG and replace with FT_TRACE7.
577 (DO_RS): More conditions.
578 (Ins_FDEF): Add more opcode detection patterns.
579 More specific conditions when flagging an fdef.
580 Make compatibility mode only turn on when delta fdefs are found.
581 (Ins_CALL, Ins_LOOPCALL): Set flags for currently executed fdef.
582 (Ins_SHPIX): Remove logic to handle ttfautohinted fonts.
583 Simplify conditionals where possible.
584 Use `&' instead of `%' operator for dumb compilers.
585 (Ins_MIAP): Adjust twilight zone conditional.
586 Ensure `ignore_x_mode' is on when testing sph conditionals.
587 (Ins_MIRP): Ensure `ignore_x_mode' is on when testing sph
589 Do cvt cutin always when `ignore_x_mode' is active.
590 Remove test for ttfautohinted fonts.
591 (Ins_DELTAP): Ensure `ignore_x_mode' is on when testing sph
593 Do cvt cutin always when `ignore_x_mode' is active.
594 Remove test for ttfautohinted fonts.
595 Use `&' instead of `%' operator for dumb compilers.
596 (Ins_GETINFO): Remove SPH_DEBUG and replace with FT_TRACE7.
598 * src/truetype/ttinterp.h: Updated.
599 (TT_ExecContextRec): Remove compatibility_mode variable.
600 Add variable to indicate when executing in special fdefs for sph.
602 * src/truetype/ttobjs.h: Updated.
603 (TT_DefRecord): Add flags to identify special fdefs for sph.
604 (TT_SizeRec): Remove unnecessary ttfautohinted variable.
606 * src/truetype/ttsubpix.c: Updated.
607 (COMPATIBILITY_MODE_Rules): Remove all. Auto-detected now.
608 (PIXEL_HINTING_Rules): Remove all. Unnecessary after fixes.
609 (SKIP_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
610 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Arial Bold `N'.
611 (SKIP_OFFPIXEL_Y_MOVES_Rules): Remove all. Happens automatically
613 (ROUND_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
614 (ROUND_NONPIXEL_Y_MOVES_Rules_Exceptions): Remove all.
615 (NORMAL_ROUND_Rules): Remove Verdana.
616 (NO_DELTAP_AFTER_IUP_Rules): Remove all.
617 (sph_set_tweaks): Performance fix. Don't run prep always.
618 Adjust conditional for sph_compatibility_mode.
620 * src/truetype/ttsubpix.h: Add new fdef flags for sph.
622 2013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
624 [base] Fix broken emboldening at small sizes.
626 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Do not attempt to
627 normalize zero-length vectors.
629 2013-01-25 Werner Lemberg <wl@gnu.org>
631 Fix Savannah bug #38167.
633 This fixes commit 83c0ebab from 2012-06-27.
635 * src/truetype/ttinterp.h:
636 s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.
638 2013-01-25 Xi Wang <xi.wang@gmail.com>
640 [sfnt] Fix broken pointer overflow checks.
642 Many compilers such as gcc and clang optimize away pointer overflow
643 checks `p + n < p', because pointer overflow is undefined behavior.
644 Use a safe form `n > p_limit - p' instead.
646 Also avoid possible integer overflow issues, for example, using
647 `num_glyphs > ( p_limit - p ) / 2' rather than `num_glyphs * 2'
648 given a large `num_glyphs'.
650 * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Implement it.
652 2013-01-25 Werner Lemberg <wl@gnu.org>
654 [base] Fix `make multi'.
656 * src/base/ftoutln.c, src/base/fttrigon.c: Include
659 2013-01-25 David 'Digit' Turner <digit@google.com>
661 [truetype] Fix C++ compilation.
663 * src/truetype/ttsubpix.h: Updated.
664 (SPH_X_SCALING_RULES_SIZE): Moved and renamed to...
665 * src/truetype/ttsubpix.c (X_SCALING_RULES_SIZE): This.
666 (sph_X_SCALING_Rules): Removed.
667 (scale_test_tweak): Make function static.
668 (sph_test_tweak_x_scaling): New function.
670 * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Updated.
672 2013-01-23 Werner Lemberg <wl@gnu.org>
674 [base] Make `FT_Hypot' really internal.
676 * include/freetype/fttrigon.h (FT_Hypot): Move to...
677 * include/freetype/internal/ftcalc.h: This file.
679 * src/base/fttrigon.c (FT_Hypot): Move to...
680 * src/base/ftcalc.c: This file.
681 Include FT_TRIGONOMETRY_H.
683 * src/truetype/ttgload.c: Don't include FT_TRIGONOMETRY_H.
685 2013-01-23 Werner Lemberg <wl@gnu.org>
687 [truetype] Revert change from 2013-01-22.
689 FreeType's `height' value is the baseline-to-baseline distance...
691 * src/truetype/ttobjs.c (tt_size_reset): Undo.
693 2013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
695 [base, truetype] New internal `FT_Hypot' function.
697 * include/freetype/fttrigon.h (FT_Hypot): Declare it.
698 * src/base/fttrigon.c (FT_Hypot): Define it.
699 * src/truetype/ttgload.c (TT_Process_Composite_Component): Use it
700 instead of explicit expressions.
701 * src/truetype/ttinterp.c (Current_Ratio, Normalize): Use it instead
703 (TT_VecLen): Removed.
705 2013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
707 [base] Fix integer overflow.
709 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Normalize incoming and
710 outgoing vectors and use fixed point arithmetic.
712 2013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
714 [base] Fix integer overflow.
716 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Scale the
717 coordinates down to avoid overflow.
719 2013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
721 [base] Split out MSB function.
723 * src/base/fttrigon.c (ft_trig_prenorm): Borrow from here.
724 * include/freetype/internal/ftcalc.h (FT_MSB): Declare here.
725 * src/base/ftcalc.c (FT_MSB): Define here.
727 2013-01-22 Werner Lemberg <wl@gnu.org>
729 [truetype] Fix font height.
731 * src/truetype/ttobjs.c (tt_size_reset): The Windows rendering
732 engine uses rounded values of the ascender and descender to compute
733 the TrueType font height.
735 2013-01-16 Behdad Esfahbod <behdad@behdad.org>
737 [sfnt] Fix optimized sbit loader.
739 It was not taking bit_depth into consideration when blitting!
741 * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_byte_aligned,
742 * tt_sbit_decoder_load_bit_aligned): Handle bit
745 2013-01-16 David 'Digit' Turner <digit@google.com>
747 [truetype] Improve subpixel code.
749 This patches fixes many issues with the ttsubpix implementation.
751 1. Data tables are defined, instead of declared, in the header, and
752 thus copied into each source file that includes it.
754 2. These tables were defined as global, mutable, visible variables,
755 and thus costing private RAM to every process that loads the
756 library (> 50 KB / process, this is huge!).
758 Additionally, this also made the library export the symbols
759 completely needlessly.
761 3. Missing `sph_' and `SPH_' prefixes to some of the definitions.
763 Note that this doesn't try to fix the incredibly inefficient storage
764 format for the data tables used by the code. This one will require
765 another pass in the future.
767 * src/truetype/ttinterp.h (MAX_NAME_SIZE, MAX_CLASS_MEMBERS):
769 (SPH_MAX_NAME_SIZE, SPH_MAX_CLASS_MEMBERS): This.
772 (SPH_TweakRule, SPH_ScaleRule): Decorate with `const' where
775 (Font_Class): Rename to...
776 (SPH_Font_Class): This. Decorate with `const' where appropriate.
778 * src/truetype/ttsubpix.h (scale_test_tweak, sph_test_tweak):
779 Decorate arguments with `const' where appropriate.
781 Move font tweaking tables to...
783 * src/truetype/ttsubpix.c: This file and decorate them with `static'
784 and `const' where appropriate.
786 (X_SCALING_Rules, X_SCALING_RULES_SIZE): Renamed to...
787 (sph_X_SCALING_Rules, SPH_X_SCALING_RULES_SIZE): This.
790 2013-01-12 Alexei Podtelezhnikov <apodtele@gmail.com>
792 [truetype] Improve accuracy of normalization of short vectors.
794 Unit vector components are stored as 2.14 fixed-point numbers. In
795 order to calculate all 14 bits accurately, a short vector to be
796 normalized has to be upscaled to at least 14 bits before its length
797 is calculated. This has been safe since accurate CORDIC algorithms
800 * src/truetype/ttinterp.c (Normalize): Scale short vectors by 0x4000.
802 2013-01-12 Alexei Podtelezhnikov <apodtele@gmail.com>
804 [truetype] Kill very old vector normalization hacks.
806 Back in the days, vector length calculations were not very accurate
807 and the vector normalization function, Normalize, had to meticulously
808 correct the errors for long vectors [commit b7ef2b096867]. It was no
809 longer necessary after accurate CORDIC algorithms were adopted, but
810 the code remained. It is time to kill it.
812 * src/truetype/ttinterp.c (Normalize): Remove error compensation.
813 (TT_VecLen): Remove any mention of old less accurate implementation.
815 2013-01-11 Werner Lemberg <wl@gnu.org>
817 Disable FT_CONFIG_OPTION_OLD_INTERNALS.
819 After the next release we are going to remove the code completely.
821 * devel/ftoption.h, include/freetype/config/ftoption.h
822 (FT_CONFIG_OPTION_OLD_INTERNALS): Comment out.
823 * docs/CHANGES: Document it.
825 2013-01-10 Alexei Podtelezhnikov <apodtele@gmail.com>
827 [base] Update the overflow protection bit.
829 The recent optimizations of CORDIC iterations drastically reduce the
830 expansion factor. Vector components with MSB of 29 are now safe
833 * src/base/fttrigon.c (FT_TRIG_SAFE_MSB): New macro.
834 (ft_trig_prenorm): Use it and remove dead code.
836 2013-01-09 Alexei Podtelezhnikov <apodtele@gmail.com>
838 [base, pshinter] Use FT_ABS, FT_MIN, and FT_MAX for readability.
840 * src/base/ftbbox.c: Updated.
841 * src/base/ftobjs.c: Updated.
842 * src/base/fttrigon.c: Updated.
843 * src/pshinter/pshalgo.c: Updated.
844 * src/pshinter/pshrec.c: Updated.
846 2013-01-08 Alexei Podtelezhnikov <apodtele@gmail.com>
848 [base] Clean up trigonometric core.
850 * src/base/fttrigon.c: Document the algorithm in a large comment.
851 (FT_TRIG_COSCALE): Remove macro.
852 (FT_Tan: Use `FT_TRIG_SCALE' instead.
853 (FT_Cos, FT_Vector_Unit): Ditto and round the return values.
855 2013-01-02 Alexei Podtelezhnikov <apodtele@gmail.com>
857 [base] Use rounding in CORDIC iterations.
859 * src/base/fttrigon.c (ft_trig_pseudo_rotate,
860 ft_trig_pseudo_polarize): Improve accuracy by rounding.
862 2013-01-02 Alexei Podtelezhnikov <apodtele@gmail.com>
864 [base] Reduce trigonometric algorithms.
866 After we get within 45 degrees by means of true 90-degree rotations,
867 we can remove initial 45-degree CORDIC iteration and start from
868 atan(1/2) pseudorotation, reducing expansion factor thereby.
870 * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macros.
871 (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Update.
873 * src/tools/cordic.py: Bring up to date with trigonometric core.
875 * docs/CHANGES: Old typo.
877 2013-01-02 Alexei Podtelezhnikov <apodtele@gmail.com>
879 * src/pshinter/pshalgo.h: Remove unused code.
881 2012-12-27 Werner Lemberg <wl@gnu.org>
883 * src/truetype/ttgload.c (tt_loader_init): Add more tracing.
885 2012-12-23 Werner Lemberg <wl@gnu.org>
887 [type1] Fix handling of /FontBBox in MM fonts.
888 Problem reported by Del Merritt <del@alum.mit.edu>
892 /FontBBox { { 11 12 13 14 15 16 17 18 }
893 { 21 22 23 24 25 26 27 28 }
894 { 31 32 33 34 35 36 37 38 }
895 { 41 42 43 44 45 46 47 48 } }
897 in the /Blend dictionary, then the first BBox is { 11 21 31 41 },
898 the second { 12 22 32 42 }, etc.
900 * include/freetype/internal/psaux.h (T1_FieldType): Add
901 `T1_FIELD_TYPE_MM_BBOX' (for temporary use).
903 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
906 2012-12-21 Alexei Podtelezhnikov <apodtele@gmail.com>
908 * src/tools/cordic.py: Bring up to date with trigonometric core.
910 2012-12-21 Werner Lemberg <wl@gnu.org>
912 Check parameters of `FT_Outline_New'.
913 Problem reported by Robin Watts <robin.watts@artifex.com>.
915 * src/base/ftoutln.c (FT_Outline_New_Internal): Ensure that
916 `numContours' and `numPoints' fit into FT_Outline's `n_points' and
917 `n_contours', respectively.
919 2012-12-20 Werner Lemberg <wl@gnu.org>
921 * Version 2.4.11 released.
922 ==========================
925 Tag sources with `VER-2-4-11'.
927 * docs/CHANGES, docs/release: Updated.
929 * docs/VERSION.DLL: Update documentation and bump version number to
932 * README, Jamfile (RefDoc),
933 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
934 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
935 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
936 builds/win32/visualc/freetype.dsp,
937 builds/win32/visualc/freetype.vcproj,
938 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
939 builds/win32/visualce/freetype.vcproj,
940 builds/win32/visualce/index.html,
941 builds/wince/vc2005-ce/freetype.vcproj,
942 builds/wince/vc2005-ce/index.html,
943 builds/wince/vc2008-ce/freetype.vcproj,
944 builds/wince/vc2008-ce/index.html: s/2.4.10/2.4.11/, s/2410/2411/.
946 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 11.
948 * builds/unix/configure.raw (version_info): Set to 16:0:10.
950 * builds/toplevel.mk (dist): Don't include `.mailmap'.
952 2012-12-20 Alexei Podtelezhnikov <apodtele@gmail.com>
954 [base] Improve trigonometric core.
956 FreeType used to rely on a 24-step iteration CORDIC algorithm to
957 calculate trigonometric functions and rotate vectors. It turns out
958 that once the vector is in the right half-plane, the initial rotation
959 by 63 degrees is not necessary. The algorithm is perfectly capable
960 to converge to any angle starting from the second 45 degree rotation.
961 This patch removes the first rotation and makes it a 23-step CORDIC
964 * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macro
966 (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Remove initial
969 2012-12-19 Werner Lemberg <wl@gnu.org>
971 * src/base/ftobjs.c (ft_property_do): Fix compiler warning.
973 2012-12-19 Alexei Podtelezhnikov <apodtele@gmail.com>
975 * src/base/ftrfork.c (FT_Raccess_Guess): Switch to FT_Int counters.
977 2012-12-19 Alexei Podtelezhnikov <apodtele@gmail.com>
979 [base] Clean up trigonometric core.
981 * src/base/fttrigon.c (ft_trig_pseudo_polarize): Align algorithm
982 with `ft_trig_pseudo_rotate'.
984 2012-12-18 Infinality <infinality@infinality.net>
986 [truetype] Minor performance enhancement.
988 * src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Use FT_MulFix
989 instead of FT_MulDiv.
991 2012-12-17 Infinality <infinality@infinality.net>
993 [truetype] Remove unused code and variables.
995 * src/truetype/ttinterp.c: Updated.
996 (Ins_FDEF): Remove opcode patterns that are not being used.
998 2012-12-16 Werner Lemberg <wl@gnu.org>
1000 Various compiler warning fixes.
1002 * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Use
1003 `logical not' operator instead of negation. The idea is that `~'
1004 returns exactly the data type enforced by the cast to a pointer (be
1005 it 32bit or 64bit or whatever), while a negative integer has not
1007 * src/cache/ftccmap.c (FTC_CMAP_UNKNOWN): Ditto.
1008 * src/truetype/ttgxvar.c (ALL_POINTS, TT_Get_MM_Var): Ditto.
1009 * src/type/t1load.c (T1_Get_MM_Var): Ditto.
1010 (parse_blend_axis_types): Use cast.
1011 * src/bdf/bdflib.c (_bdf_readstream): Use cast.
1013 2012-12-16 Infinality <infinality@infinality.net>
1015 [truetype] Remove unused code and variables. Add minor fixes.
1017 * src/truetype/ttsubpix.h: Updated.
1018 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Trebuchet MS.
1019 (ALLOW_X_DMOVEX_Rules): Remove Arial characters.
1020 (ALLOW_X_DMOVE_Rules): Remove Arial characters.
1021 (RASTERIZER_35_Rules): Verdana no longer needs to be here.
1022 (SKIP_IUP_Rules): Formatting fix.
1023 (DELTAP_SKIP_EXAGGERATED_VALUES_Rules): Remove Segoe UI.
1024 (COMPATIBLE_WIDTHS_Rules): Add Monaco and Trebuchet MS.
1025 (X_SCALING_Rules): Add misc. corrective fixes.
1027 * src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Adjust correction
1028 factor for emboldening during scaling.
1030 * src/truetype/ttinterp.h: Updated.
1031 (TT_ExecContextRec): Remove unused variables.
1033 * src/truetype/ttobjs.h: Updated.
1034 (TT_SizeRec): Add ttfautohinted variable.
1036 * src/truetype/ttinterp.c: Updated.
1037 (Ins_FDEF): Rework code to fix bugs and add more detection.
1038 (Ins_CALL): Remove unused code.
1039 (Ins_LOOPCALL): Remove unused code.
1040 (TT_RunIns): Remove unused code.
1041 (Ins_SHPIX): Add logic to handle ttfautohinted fonts.
1042 (Ins_MIRP): Don't round x in cut-in calculation. Add logic to handle
1043 ttfautohinted fonts.
1045 2012-12-16 Werner Lemberg <wl@gnu.org>
1047 [sfnt] Fix Savannah bug #37936.
1049 * src/sfnt/ttload.c (tt_face_load_gasp): Avoid memory leak.
1051 2012-12-15 Alexei Podtelezhnikov <apodtele@gmail.com>
1053 [base] Fix 11-year old bug.
1055 Since the initial commit (ebe85f59) the value of FT_TRIG_SCALE has
1056 always been slightly less than the correct value, which has been
1057 given in the comment as a hexadecimal. As a result, vector lengths
1058 were underestimated and rotated vectors were shortened.
1060 * src/base/fttrigon.c (FT_TRIG_SCALE): Fix macro value.
1062 2012-12-15 Werner Lemberg <wl@gnu.org>
1064 [bdf] Fix Savannah bug #37907.
1066 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
1067 negative second parameter of `ENCODING' field also.
1069 2012-12-15 Werner Lemberg <wl@gnu.org>
1071 [bdf] Fix Savannah bug #37906.
1073 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Use correct array
1074 size for checking `glyph_enc'.
1076 2012-12-15 Werner Lemberg <wl@gnu.org>
1078 [bdf] Fix Savannah bug #37905.
1080 * src/bdf/bdflib.c (_bdf_parse_start) <STARTPROPERTIES>: Reset
1081 `props_size' to zero in case of allocation error; this value gets
1082 used in a loop in `bdf_free_font'.
1084 2012-12-10 Alexei Podtelezhnikov <apodtele@gmail.com>
1086 [truetype] Scale F_dot_P down.
1088 The dot product between freeVector and projVector or cosine of
1089 the angle between these FT_F2Dot14 unit vectors used to be scaled up
1090 by 4 and routinely occupied 32 bits in an FT_Long field F_dot_P.
1091 This patch scales the value down by 2^14 instead, which simplifies
1092 its use throughout the bytecode interpreter.
1094 This does not lead to the loss of precision because the lower bits
1095 are unreliable anyway. Consider two unit vectors (1,0) and (.6,.8)
1096 for which the true value of F_dot_P is .6 * 0x40000000 = 0x26666666.
1097 These vectors are stored as (0x4000,0) and (0x2666,0x3333) after
1098 rounding and F_dot_P is assigned 0x26660000. The lower bits were
1099 already lost while rounding the unit vector components.
1101 Besides code simplification, this change can lead to better
1102 performance when FT_MulDiv with the scaled-down F_dot_P is less
1103 likely to use the costly 64-bit path. We are not changing the type
1104 of F_dot_P to FT_F2Dot14 at this point.
1106 * src/truetype/ttinterp.c (Compute_Funcs): Scale F_dot_P down by 14
1107 bits and modify its use accordingly.
1108 (Direct_Move, Direct_Move_Orig, Compute_Point_Displacement): Modify
1109 the use of F_dot_P field.
1110 * src/truetype/ttobjs.c (tt_size_run_fpgm): Change arbitrary
1111 assignment of F_dot_P to its theoretical maximum in case we decide
1112 to scale back its type later.
1114 2012-12-09 Johnson Y. Yan <yinsen_yan@foxitsoftware.com>
1116 [type1] Another fix for 2012-09-17 commit.
1118 * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Correctly set
1121 2012-12-06 Alexei Podtelezhnikov <apodtele@gmail.com>
1123 [truetype] Tweak the previous commit.
1125 * src/truetype/ttinterp.c (Current_Ratio): Put unit vector
1126 components as the second TT_MulFix14 arguments. This is required
1129 2012-12-06 Alexei Podtelezhnikov <apodtele@gmail.com>
1131 [truetype] Microoptimizations in bytecode interpreter.
1133 * src/truetype/ttinterp.c (TT_DivFix14): New macro.
1134 (Normalize): Use it here.
1135 (Current_Ratio): Use TT_MulFix14 instead of FT_MulDiv.
1136 (Ins_SHPIX): Cancel out two TT_MulFix14 calls.
1138 2012-12-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1140 [truetype] Cosmetic improvement in bytecode interpreter.
1142 * src/truetype/ttinterp.c: Use explicit calls to FT_MulDiv,
1143 FT_MulFix, and FT_DivFix instead of macros.
1145 2012-12-03 John Tytgat <John.Tytgat@esko.com>
1147 [pshinter] Clamp BlueScale value.
1149 This is Savannah bug #37856.
1151 * src/pshinter/pshglob.c (psh_calc_max_height): New function.
1152 (psh_globals_new): Use it to limit BlueScale value to
1153 `1 / max_of_blue_zone_heights'.
1155 2012-12-01 Alexei Podtelezhnikov <apodtele@gmail.com>
1157 [truetype, type1] Revise the use of FT_MulDiv.
1159 * src/truetype/ttgxvar.c: Updated.
1160 * src/truetype/ttobjs.c: Updated.
1161 * src/type1/t1load.c: Updated.
1163 2012-11-30 Werner Lemberg <wl@gnu.org>
1165 [configure] Preserve customized `ftoption.h'.
1167 Problem reported by Del Merritt <del@alum.mit.edu>.
1169 * builds/unix/configure.raw <cpp computation of bit length>: Don't
1170 remove existing FreeType configuration files.
1172 2012-11-29 John Tytgat <John.Tytgat@esko.com>
1174 [type1] Fix Savannah bug #37831.
1176 The bug report also contains a patch.
1178 * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Really fix
1179 change from 2012-09-17.
1181 2012-11-28 Alexei Podtelezhnikov <apodtele@gmail.com>
1183 [truetype] Fix formatting and typo.
1185 2012-11-27 Alexei Podtelezhnikov <apodtele@gmail.com>
1187 [cid, type1, type42] Clean up units_per_EM calculations.
1189 * src/cid/cidload.c (cid_parse_font_matrix): Updated.
1190 * src/type1/t1load.c (t1_parse_font_matrix): Updated.
1191 * src/type42/t42parse.c (t42_parse_font_matrix): Updated.
1193 2012-11-27 Alexei Podtelezhnikov <apodtele@gmail.com>
1195 [ftstroke] Minor improvement.
1197 * src/base/ftstroke.c: Replace nested FT_DivFix and FT_MulFix with
1200 2012-11-17 Werner Lemberg <wl@gnu.org>
1202 * src/base/fttrigon.c (ft_trig_downscale): Make 64bit version work.
1204 2012-11-15 Alexei Podtelezhnikov <apodtele@gmail.com>
1206 [base] Fix integer overflows in dd5718c7d67a.
1208 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use FT_MulDiv.
1210 2012-11-15 Werner Lemberg <wl@gnu.org>
1212 [autofit] Trace stem widths.
1214 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Add some
1217 2012-11-13 Werner Lemberg <wl@gnu.org>
1219 [cff] Add support for OpenType Collections (OTC).
1221 * src/cff/cffload.c (cff_font_load): Separate subfont and face
1222 index handling to load both pure CFFs with multiple subfonts and
1223 OTCs (with multiple faces where each face holds exactly one
1225 * src/cff/cffobjs.c (cff_face_init): Updated.
1227 2012-11-12 Werner Lemberg <wl@gnu.org>
1229 [autofit] Minor improvement.
1231 * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Fix
1234 2012-11-10 Werner Lemberg <wl@gnu.org>
1236 [autofit] Improve tracing.
1238 * src/autofit/aflatin.c (af_latin_hint_edges)
1239 [FT_DEBUG_LEVEL_TRACE]: Count number of actions and emit something
1240 if there weren't any.
1242 2012-11-04 Alexei Podtelezhnikov <apodtele@gmail.com>
1244 [base] Fortify emboldening code against egregious distortions.
1246 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Threshold emboldening
1247 strength when it leads to segment collapse.
1249 2012-11-03 Alexei Podtelezhnikov <apodtele@gmail.com>
1251 [base] Clean up emboldening code and improve comments there.
1253 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Replace sequential
1254 calls to FT_MulFix and FT_DivFix with FT_MulDiv.
1255 Mention that bisectors are used to figure out the shift direction.
1257 2012-10-24 Werner Lemberg <wl@gnu.org>
1259 [autofit] Add standard character to `AF_ScriptClassRec' structure.
1261 * src/autofit/aftypes.h (AF_ScriptClassRec): Add `standard_char'
1263 (AF_DEFINE_SCRIPT_CLASS): Updated.
1265 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Use it.
1266 (af_latin_metrics_init, af_latin_script_class): Updated.
1268 * src/autofit/aflatin.c (af_latin2_metrics_init_widths): Use it.
1269 (af_latin2_metrics_init, af_latin2_script_class): Updated.
1271 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Use it.
1272 (af_cjk_metrics_init, af_cjk_script_class): Updated.
1274 * src/autofit/afindic.c (af_indic_metrics_init,
1275 af_indic_script_class): Updated.
1277 * src/autofit/afcjk.h, src/autofit/aflatin.h: Updated.
1279 * src/autofit/afdummy.c: Updated.
1281 2012-10-24 Werner Lemberg <wl@gnu.org>
1283 [autofit] Only use Unicode CMap.
1285 * src/autofit/aflatin.c (af_latin_metrics_init): Implement it, to be
1286 in sync with `af_face_globals_compute_script_coverage'.
1288 2012-10-21 Werner Lemberg <wl@gnu.org>
1290 [psaux] Improve parsing of invalid numbers.
1292 * src/psaux/psconv.c (PS_Conv_Strtol): Always parse complete number,
1293 even in case of overflow.
1294 (PS_Conv_ToInt): Only increase cursor if parsing was successful.
1295 (PS_Conv_ToFixed): Ditto.
1296 Trace underflow and data error.
1298 2012-10-21 Werner Lemberg <wl@gnu.org>
1300 [smooth] Improve tracing.
1302 * src/smooth/ftgrays.c (gray_sweep): Trace last sweep line of
1305 2012-10-20 Alexei Podtelezhnikov <apodtele@gmail.com>
1307 [truetype] Cheaper way to threshold angles between vectors.
1309 * src/truetype/ttinterp.c (Ins_ISECT): Thresholding tangent is a lot
1310 cheaper than thresholding sine.
1312 2012-10-20 Werner Lemberg <wl@gnu.org>
1314 [cff] Improve parsing of invalid real numbers.
1316 * src/cff/cffparse.c (cff_parse_real): Always parse complete number,
1317 even in case of overflow or underflow.
1318 Also trace one more underflow.
1320 2012-10-20 Andreas Pehnack <andreas.pehnack@me.com>
1322 [sfnt] Load pure CFF fonts wrapped in SFNT container.
1324 Such fonts only have a `cmap' and a `CFF' table.
1326 * src/sfnt/ttload.c (tt_face_load_font_dir): Don't call
1327 `check_table_dir' if font signature is `OTTO'.
1329 2012-10-20 Werner Lemberg <wl@gnu.org>
1331 [psaux] Fix some value overflows and improve tracing.
1333 * src/psaux/psconv.c: Include FT_INTERNAL_DEBUG_H.
1334 (FT_COMPONENT): Define.
1335 (PS_Conv_Strtol): Return FT_Long.
1336 Handle bad data and overflow.
1337 Emit some tracing messages in case of error.
1338 (PS_Conv_ToInt): Return FT_Long.
1339 (PS_Conv_ToFixed): Updated.
1340 * src/psaux/psconv.h: Updated.
1342 * include/freetype/internal/fttrace.h: Add `psconv'.
1344 2012-10-20 Werner Lemberg <wl@gnu.org>
1346 [autofit] Fix `make multi CC=c++'.
1348 * src/autofit/aflatin.c, src/autofit/aflatin2.c: Include
1350 * src/autofit/afloader.c: Fix order of header files.
1351 * src/autofit/afmodule.c: Include `afglobal.h' and `aferrors.h'.
1353 2012-10-19 Werner Lemberg <wl@gnu.org>
1355 [cff] Fix more value errors and improve tracing.
1357 * src/cff/cffparse.c (cff_parse_integer): Emit tracing message in
1359 (cff_parse_real): Handle and trace overflow, underflow, and bad data
1361 (do_fixed): New helper function, handling and tracing overflow.
1362 (cff_parse_fixed, cff_parse_fixed_scaled): Use `do_fixed'.
1364 2012-10-17 Werner Lemberg <wl@gnu.org>
1366 [psaux] Fix some value overflows.
1368 * src/psaux/psconv.c (PS_Conv_ToFixed): Implement it.
1370 2012-10-17 Bram Tassyns <BramT@enfocus.com>
1372 [cff] Fix value overflow.
1374 * src/cff/cffparse.c (cff_parse_fixed_scaled): Implement it.
1376 2012-10-17 Werner Lemberg <wl@gnu.org>
1378 [truetype] Fix Savannah bug #37572.
1380 * src/truetype/ttinterp.c (Ins_ISECT): Use angle between vectors to
1381 avoid grazing intersections. The previous threshold was too coarse,
1382 incorrectly rejecting short but valid vectors.
1384 2012-09-30 Gilles Espinasse <g.esp@free.fr>
1386 Remove useless `rm' detection.
1388 `rm -f' is directly used in the `configure' script created by
1389 autoconf, thus no availability test is necessary.
1391 * builds/unix/configure.raw (RMF): Remove test.
1392 * builds/unix/unix-def.in (DELETE): Updated.
1394 2012-09-29 Werner Lemberg <wl@gnu.org>
1396 [autofit] Minor optimization.
1398 * src/autofit/afglobal.c (af_face_globals_compute_script_coverage):
1401 2012-09-29 Werner Lemberg <wl@gnu.org>
1403 [autofit] Fix thinko.
1405 * src/autofit/aftypes.h (AF_SCRIPT):
1406 s/AF_SCRIPT_NONE/AF_SCRIPT_DUMMY/. We already use `AF_SCRIPT_NONE'
1409 * src/autofit/afdummy.c: Updated.
1411 2012-09-18 Werner Lemberg <wl@gnu.org>
1413 [autofit] Implement `increase-x-height' property.
1415 * include/freetype/ftautoh.h (FT_Prop_IncreaseXHeight): New
1418 * include/autofit/afmodule.c (af_property_get_face_globals): New
1419 function, re-using code from `af_property_get'.
1420 (af_property_set, af_property_get): Handle `increase-x-height'.
1423 2012-09-18 Werner Lemberg <wl@gnu.org>
1425 [autofit] Implement Infinality's `increase glyph heights'.
1427 This is an improved version of a similar fix contained in the
1428 so-called `Infinality patch', taken from
1430 http://www.infinality.net/fedora/linux/zips/freetype-infinality-2.4.10-20120616_01-x86_64.tar.bz2
1432 which addresses various enhancements of the auto-hinter. Without
1433 properties to control a module's metadata it wasn't possible to
1434 adapt the patches because everything was originally controlled by
1435 environment variables which I consider not suitable in general.
1437 A patch to control `increase_x_height' follows.
1439 * src/autofit/afglobal.h (AF_PROP_INCREASE_X_HEIGHT_MIN,
1440 AF_PROP_INCREASE_X_HEIGHT_MAX): New macros.
1441 (AF_FaceGlobalsRec): Add `increase_x_height' member.
1442 * src/autofit/afglobal.c (af_face_globals_new): Initialize it.
1444 * src/autofit/aflatin.c (af_latin_metrics_scale_dim),
1445 * src/autofit/aflatin2.c (af_latin2_metrics_scale_dim): Implement
1446 handling of `increase_x_height'.
1448 2012-09-18 Werner Lemberg <wl@gnu.org>
1450 [autofit] Add hierarchical property access to some structures.
1452 * src/autofit/afglobal.h: Include `afmodule.h'.
1453 (AF_FaceGlobalsRec): Add `module' member.
1454 (AF_FaceGlobals): Typedef moved to...
1455 * src/autofit/aftypes.h: Here.
1456 (AF_ScriptMetricsRec): Add `globals' member.
1458 * src/autofit/afglobal.c (af_face_globals_new,
1459 af_face_globals_compute_script_coverage,
1460 af_face_globals_get_metrics): Updated.
1462 * src/autofit/afloader.c (af_loader_reset), src/autofit/afmodule.c
1463 (af_property_get): Updated.
1465 2012-09-17 Werner Lemberg <wl@gnu.org>
1467 [type1] Fix Savannah bug #37350.
1469 * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Check for ASCII
1470 storage only if we actually have at least four bytes.
1472 2012-09-15 Werner Lemberg <wl@gnu.org>
1474 [autofit] Implement `fallback-script' property.
1476 * src/autofit/afglobal.c: s/default_script/fallback_script/.
1477 * src/autofit/afglobal.h: s/AF_SCRIPT_DEFAULT/AF_SCRIPT_FALLBACK/.
1479 * src/autofit/afmodule.c: s/default_script/fallback_script/.
1480 (af_property_set, af_property_get): Implement `fallback-script'.
1481 * src/autofit/afmodule.h: s/default_script/fallback_script/.
1483 * include/freetype/ftautoh.h: Document it.
1485 2012-09-15 Werner Lemberg <wl@gnu.org>
1487 [autofit] Correct previous Unicode 6.1.0 change.
1489 The auto-hinter's latin module only handles latin ligatures in the
1490 `Alphabetical Presentation Forms' block.
1492 * src/autofit/aflatin.c (af_latin_uniranges): Fix it.
1494 2012-09-15 Werner Lemberg <wl@gnu.org>
1496 * src/autofit/afmodule.c: s/FT_Err_/AF_Err_/.
1498 2012-09-15 Werner Lemberg <wl@gnu.org>
1500 [autofit] Make default script a global property.
1502 * src/autofit/afmodule.h (AF_ModuleRec): Add `default_script' field.
1504 * src/autofit/afglobal.c (af_face_globals_compute_script_coverage,
1505 af_face_globals_new), src/autofit/afloader.c (af_loader_reset),
1506 src/autofit/afmodule.c (af_property_get) <glyph-to-script-map>,
1508 Handle default script.
1510 * src/autofit/afglobal.h: Updated.
1512 2012-09-15 Werner Lemberg <wl@gnu.org>
1514 Use `FT_Module' instead of `FT_Library' argument in property funcs.
1516 This internal change simplifies access to global module data.
1518 * include/freetype/internal/services/svprop.h
1519 (FT_Properties_SetFunc, FT_Properties_GetFunc): Change accordingly.
1521 * src/base/ftobjs.c (ft_property_do), src/autofit/afmodule.c
1522 (af_property_set, af_property_get): Updated.
1524 2012-09-14 Werner Lemberg <wl@gnu.org>
1526 [autofit] Update to Unicode 6.1.0.
1528 * src/autofit/afcjk.c (af_cjk_uniranges), src/autofit/aflatin.c
1529 (af_latin_uniranges): Add and fix ranges.
1531 2012-09-14 Werner Lemberg <wl@gnu.org>
1533 [autofit] Pass `AF_Module' instead of `AF_Loader'.
1535 We want to access the (not yet existing) module's global data later
1538 * src/autofit/afloader.c: Include `afmodule.h'.
1539 (af_loader_init, af_loader_reset, af_loader_done,
1540 af_loader_load_glyph): Change accordingly.
1541 * src/autofit/afmodule.c (AF_ModuleRec): Move to `afmodule.h'.
1544 * src/autofit/afmodule.h: Include `afloader.h'.
1545 (AF_ModuleRec): Define here.
1546 * src/autofit/afloader.h (AF_Module): Define here.
1549 2012-09-14 Werner Lemberg <wl@gnu.org>
1551 [autofit] Fix `make multi'.
1553 * include/freetype/internal/fttrace.h: Add `afmodule'.
1554 * src/autofit/afmodule.c: Include FT_INTERNAL_DEBUG_H.
1555 (FT_COMPONENT): Define.
1557 2012-09-14 Werner Lemberg <wl@gnu.org>
1559 * src/autofit/afmodule.c: s/FT_Autofitter/AF_Module/.
1561 2012-09-12 Werner Lemberg <wl@gnu.org>
1563 [autofit] Minor reorganization.
1565 * src/autofit/afglobal.c (AF_SCRIPT_LIST_DEFAULT,
1566 AF_SCRIPT_LIST_NONE, AF_DIGIT): Move to...
1567 * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT, AF_SCRIPT_LIST_NONE,
1568 AF_DIGIT): This and update code.
1570 2012-09-01 Werner Lemberg <wl@gnu.org>
1572 [autofit] Implement `glyph-to-script-map' property.
1574 * include/freetype/ftautoh.h: New public header file.
1575 * include/freetype/config/ftheader.h (FT_AUTOHINTER_H): New macro.
1577 * src/autofit/afglobal.c (AF_FaceGlobalsRec): Move structure to...
1578 * src/autofit/afglobal.h: This header file.
1579 * src/autofit/afmodule.c: Include FT_AUTOHINTER_H.
1580 (af_property_get): Handle `glyph-to-script-map'.
1582 2012-08-31 Werner Lemberg <wl@gnu.org>
1584 [autofit] Implement properties service framework.
1586 No properties are added yet.
1588 * src/autofit/afmodule.c: Include FT_SERVICE_PROPERTIES_H.
1589 (af_property_set, af_property_get): New dummy functions.
1590 (af_service_properties, af_services, af_get_interface): Provide
1592 (autofit_moduleclass): Add service interface.
1594 * src/autofit/afpic.c: Add necessary forward declarations.
1595 (autofit_module_class_pic_init): Add code for service addition.
1596 (autofit_module_pic_free): Add code for service removal.
1597 * src/autofit/afpic.h (AF_SERVICES_GET, AF_SERVICE_PROPERTIES_GET):
1598 New macros which provide necessary syntactical sugar for PIC
1601 2012-08-30 Werner Lemberg <wl@gnu.org>
1603 Implement properties to control FreeType modules.
1605 * include/freetype/fterrdef.h (FT_Err_Missing_Property): New error
1607 * include/freetype/ftmodapi.h (FT_Property_Set, FT_Property_Get):
1610 * include/freetype/internal/services/svprop.h: New file.
1611 * include/freetype/internal/ftserv.h (FT_SERVICE_PROPERTIES_H): New
1614 * src/base/ftobjs.c: Include FT_SERVICE_PROPERTIES_H.
1615 (ft_property_do, FT_Property_Set, FT_Property_Get): New functions.
1617 2012-08-29 Werner Lemberg <wl@gnu.org>
1619 [docmaker] Allow `-' in tags and identifiers.
1621 * src/tools/docmaker/content.py (re_identifier),
1622 src/tools/docmaker/sources.py (re_markup_tag1, re_markup_tag2,
1623 re_crossref): Add `-' in patterns.
1625 2012-08-27 Werner Lemberg <wl@gnu.org>
1627 [FT_CONFIG_OPTION_PIC] Fix g++ 4.6.2 compiler warnings.
1629 * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER),
1630 include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
1631 FT_DEFINE_MODULE), include/freetype/internal/ftserv.h
1632 (FT_DEFINE_SERVICEDESCREC1, FT_DEFINE_SERVICEDESCREC2,
1633 FT_DEFINE_SERVICEDESCREC3, FT_DEFINE_SERVICEDESCREC4,
1634 FT_DEFINE_SERVICEDESCREC5, FT_DEFINE_SERVICEDESCREC6),
1635 src/autofit/afpic.c (autofit_module_class_pic_init),
1636 src/base/basepic.c (ft_base_pic_init), src/base/ftinit.c
1637 (ft_create_default_module_classes), src/cff/cffparse.c
1638 (FT_Create_Class_cff_field_handlers), src/cff/cffpic.c
1639 (cff_driver_class_pic_init), src/pshinter/pshpic.c
1640 (pshinter_module_class_pic_init), src/psnames/pspic.c
1641 (psnames_module_class_pic_init), src/raster/rastpic.c
1642 (ft_raster1_renderer_class_pic_init), src/sfnt/sfntpic.c
1643 (sfnt_module_class_pic_init), src/sfnt/ttcmap.c
1644 (FT_Create_Class_tt_cmap_classes), src/smooth/ftspic.c
1645 (ft_smooth_renderer_class_pic_init), src/truetype/ttpic.c
1646 (tt_driver_class_pic_init): Initialize allocation variable.
1648 2012-08-27 Werner Lemberg <wl@gnu.org>
1650 [truetype] Fix compilation warning.
1652 * src/truetype/ttgload.c (IS_HINTED): Move macro to...
1653 * src/truetype/ttobjs.h: This header file.
1655 2012-08-27 Werner Lemberg <wl@gnu.org>
1657 [autofit, cff, pshinter, psnames] More renamings for orthogonality.
1659 * src/autofit/afmodule.c, src/autofit/afpic.h:
1660 s/AF_AUTOFITTER_/AF_/.
1662 * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffparse.c,
1663 src/cff/cffpic.h: s/FT_CFF_/CFF_/.
1665 * src/pshinter/pshmod.c, src/pshinter/pshpic.h:
1666 s/FT_PSHINTER_/PSHINTER_/.
1668 * src/psnames/psmodule.c, src/psnames/pspic.h:
1669 s/FT_PSCMAPS/PSCMAPS_/.
1671 2012-08-27 Werner Lemberg <wl@gnu.org>
1673 [sfnt, truetype] More renamings for orthogonality.
1675 * src/sfnt/sfdriver.c, src/sfnt/sfntpic.h, src/sfnt/ttcmap.c,
1676 src/truetype/ttdriver.c, src/truetype/ttpic.h: s/FT_SFNT_/SFNT_/,
1677 s/FT_TT_/TT_/, s/GET_CMAP_INFO_GET/CMAP_INFO_GET/.
1679 2012-08-27 Werner Lemberg <wl@gnu.org>
1681 [autofit] Some macro and variable renamings for orthogonality.
1683 * include/freetype/internal/autohint.h, src/base/ftobjs.c,
1684 src/autofit/afmodule.c, src/autofit/afpic.c, src/autofit/afpic.h:
1685 s/SERVICE/INTERFACE/, s/service/interface/, s/Service/Interface/.
1687 2012-08-26 Werner Lemberg <wl@gnu.org>
1689 Fix Savannah bug #37178.
1691 * src/base/ftobjs.c (FT_Open_Face): Initialize `error' with
1692 `FT_Err_Missing_Module' before loop to indicate `no valid drivers'.
1694 2012-08-17 Werner Lemberg <wl@gnu.org>
1696 * src/base/ftsynth.c (FT_GlyphSlot_Oblique): Fix shear angle.
1698 The old value was far too large (more than 20°). The new one
1699 corresponds to 12°, quite common in typography.
1701 2012-08-12 Alexei Podtelezhnikov <apodtele@gmail.com>
1703 [smooth] Fix Savannah bug #37017.
1705 * src/smooth/ftgrays.c (gray_render_cubic): Use a different set of
1706 checks when detecting super curvy splines to be split.
1708 2012-08-05 Werner Lemberg <wl@gnu.org>
1710 [autofit] Improve recognition of flat segments.
1712 Problem reported by Brad Dunzer <BDunzer@extensis.com>.
1714 * src/autofit/aflatin.c (af_latin_metrics_init_blues): We have
1715 a flat segment if the horizontal distance of best on-points is
1716 larger than a given threshold.
1718 2012-08-05 Werner Lemberg <wl@gnu.org>
1720 [autofit] Variable renamings.
1722 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Replace
1723 `glyph' with `outline'.
1724 s/best_first/best_contour_first/.
1725 s/best_last/best_contour_last/.
1727 2012-07-31 Werner Lemberg <wl@gnu.org>
1729 [type1] Fix Savannah bug #37000.
1731 * src/type1/t1load.c (parse_encoding): Fix order of checks.
1733 2012-07-17 Werner Lemberg <wl@gnu.org>
1735 [psaux] Fix Savannah bug #36833.
1737 * src/psaux/t1decode.c (t1operator_seac): `seac' is not a valid
1738 operator if we want metrics only.
1740 2012-07-16 Werner Lemberg <wl@gnu.org>
1742 [type1] Fix Savannah bug #36832.
1744 * src/type1/t1load.c (parse_charstrings): Reject negative number of
1747 2012-07-13 Werner Lemberg <wl@gnu.org>
1749 [type1] Fix Savannah bug #36829.
1751 * src/type1/t1load.c (parse_encoding): Check cursor position after
1752 call to T1_Skip_PS_Token.
1754 2012-07-12 Alexei Podtelezhnikov <apodtele@gmail.com>
1756 Revert the last commit 45337b07.
1758 * src/base/ftstroke.c (FT_Stroker_New): Revert the previous change.
1760 2012-07-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1762 [ftstroke] Fix uninitialized return value.
1764 * src/base/ftstroke.c (FT_Stroker_New): Return FT_Err_Ok instead.
1766 2012-07-11 Werner Lemberg <wl@gnu.org>
1768 [smooth] Avoid memory leak in case of failure.
1770 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use flags to
1771 indicate what to clean up after finishing the function, with and
1774 2012-07-09 Werner Lemberg <wl@gnu.org>
1776 Fix compilation with MSVC 5.0.
1778 Problem reported by Peter Breitenlohner and Akira Kakuto.
1780 * include/freetype/config/ftstdlib.h (ft_setjmp): Updated.
1781 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove cast.
1783 2012-07-09 Werner Lemberg <wl@gnu.org>
1785 [autofit] Improve debugging messages; do some code cleanup.
1787 * src/autofit/aflatin.c (af_latin_align_linked_edge,
1788 af_latin_hint_edges): Synchronize with formatting used in the
1789 ttfautohint project.
1791 2012-07-07 Gilles Espinasse <g.esp@free.fr>
1793 Fix strict-aliasing warning.
1795 * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Avoid double cast.
1797 2012-07-07 Dave Thomas <dave.thomas@metaforic.com>
1799 [ARM] Fix FT_MulFix_arm.
1801 * include/freetype/config/ftconfig.h (FT_MulFix_arm) [__arm__]:
1802 Avoid ADDS instruction to clobber condition codes.
1804 2012-07-06 Werner Lemberg <wl@gnu.org>
1806 [autofit] Do some code cleanup.
1808 * src/autofit/afglobal.c (af_face_globals_new): Simplify.
1810 * src/autofit/afhints.c: Use `FT_TRACE7' instead of `printf'
1812 (FT_COMPONENT): New macro.
1813 (af_glyph_hints_done): Simplify.
1815 * include/freetype/internal/fttrace.h: Updated.
1817 2012-07-05 Werner Lemberg <wl@gnu.org>
1819 [autofit] Improve output of debugging information.
1821 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Print more
1822 data; report no data.
1823 (af_glyph_hints_dump_edges): Report no data.
1825 2012-07-04 Werner Lemberg <wl@gnu.org>
1827 [autofit] Fix Savannah bug #36091.
1829 * src/autofit/aflatin.c (af_latin_metrics_init_blues),
1830 src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Change the
1831 constraint for testing round vs. flat segment: Accept either a
1832 small distance or a small angle.
1834 2012-07-04 Werner Lemberg <wl@gnu.org>
1836 [autofit] Beautify blue zone tracing.
1838 * src/autofit/aflatin.c (af_latin_metrics_init_blues),
1839 src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Implement it.
1841 2012-07-03 Werner Lemberg <wl@gnu.org>
1843 [autofit] Quantize stem widths.
1845 * src/autofit/afangles.c (af_sort_widths): Rename to...
1846 (af_sort_and_quantize_widths): This.
1847 Add code to avoid stem widths which are almost identical.
1848 * src/autofit/aftypes.h, src/autofit/aflatin.c, src/autofit/afcjk.c:
1851 2012-07-03 Werner Lemberg <wl@gnu.org>
1853 [autofit] Minor speed-up.
1855 * src/autofit/afangles (af_sort_pos, af_sort_widths): Don't swap
1856 elements if they are equal.
1858 2012-06-30 Gilles Espinasse <g.esp@free.fr>
1860 Fix `checking if gcc static flag -static works' test.
1862 On my linux build tree, I receive yes answer in every package I
1863 build except FreeType for this test checking if gcc static flag
1866 In FreeType, no is received, unless bzip2 and zlib are disabled using
1868 ./configure --without-bzip2 --without-zlib
1870 The reason is that bzip2 and zlib tests add `-lz' and `-lbz2' to
1871 LDFLAGS and this broke static flag test.
1873 * builds/unix/configure.raw: Update CFLAGS and LDFLAGS only after
1876 2012-06-28 Infinality <infinality@infinality.net>
1878 [truetype] Fix various artifacts.
1880 Verdana was broken in the original Infinality commit. Also
1881 includes other minor fixes.
1883 * src/truetype/ttsubpix.h: Updated. Removed unused macros.
1884 (RASTERIZER_35_Rules): Add Verdana.
1885 (SKIP_NONPIXEL_Y_MOVES_Rules): Add Tahoma `s'.
1886 (MIRP_CVT_ZERO_Rules): Remove Verdana.
1887 (ALWAYS_SKIP_DELTAP_Rules): Add Russian char 0x438.
1888 (COMPATIBLE_WIDTHS_Rules): Rearrange some rules.
1889 (X_SCALING_Rules): Adjust Verdana `a' at 12 and 13 ppem.
1891 * src/truetype/ttsubpix.c: Updated.
1892 (sph_set_tweaks): Re-execute fpgm always.
1894 2012-06-28 Gilles Espinasse <g.esp@free.fr>
1896 Fix CFLAGS and LDFLAGS share configure test.
1898 * builds/unix/configure.raw: Fix typo.
1900 2012-06-28 Werner Lemberg <wl@gnu.org>
1902 [truetype] Set the `subpixel_positioned' flag unconditionally.
1904 This is how the code currently behaves.
1906 * src/truetype/ttgload.c (tt_loader_init): Do it.
1908 2012-06-27 Werner Lemberg <wl@gnu.org>
1910 Fix conditional compilation.
1912 * src/base/basepic.c: Use FT_CONFIG_OPTION_MAC_FONTS.
1914 2012-06-27 Werner Lemberg <wl@gnu.org>
1916 Fix conditional compilation.
1918 * include/freetype/internal/ftcalc.h (FT_MulDiv_No_Round): Don't
1919 enclose with `TT_USE_BYTECODE_INTERPRETER'; we now need the function
1922 * src/autofit/afcjk.h: Use AF_CONFIG_OPTION_CJK.
1924 * src/truetype/ttgload.c (tt_loader_init): Fix compiler warning.
1926 * src/truetype/ttinterp.c (Ins_MSIRP): Fix compiler warning.
1928 * src/truetype/ttinterp.h: Use
1929 TT_CONFIG_OPTION_BYTECODE_INTERPRETER.
1931 2012-06-26 Infinality <infinality@infinality.net>
1933 [truetype] Remove unused rounding functionality.
1935 The subpixel hinting patch contained the concept of an adjustable
1936 number of gridlines per pixel. This is no longer used due to x
1937 being completely ignored instead. This will return some of the
1938 code to its existing state prior to the original Infinality
1941 * include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
1942 FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): Removed.
1944 * src/truetype/ttinterp.c: Updated.
1945 (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
1946 Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, Round_Super_45,
1947 SetSuperRound): Remove parameter to handle the number of grid lines per
1949 (SET_SuperRound, ROUND_None, CUR_Func_round): Updated.
1950 (DO_SROUND, DOS45ROUND, DO_ODD, DO_EVEN): Updated.
1951 (DO_ROUND, DO_NROUND): Updated.
1952 (Move_Zp2_Point, Ins_SHPIX, Ins_MSIRP, Ins_MDAP, Ins_MIAP,
1953 Ins_MDRP, Ins_MIRP): Perform Round_None instead of calling a modified
1954 rounding function. Remove gridlines_per_pixel. Create a local
1955 variable to store control value cutin. Simplify the conditional for
1956 ignore_x_mode. Adjust rounding calls to pass only two values.
1958 2012-06-25 Werner Lemberg <wl@gnu.org>
1960 [cff] Fix Savannah bug #36705.
1962 Handle numbers like 2.001 correctly.
1964 * src/cff/cffparse.c (cff_parse_real): Avoid negative values for
1967 2012-06-18 Infinality <infinality@infinality.net>
1969 [truetype] Support subpixel hinting.
1971 This is the large, famous `Infinality' patch to support ClearType
1972 bytecode which has been available from
1973 http://www.infinality.net/blog/ for some time, and which has been
1974 refined over the last years. While still experimental, it is now
1975 mature enough to be included directly into FreeType.
1977 Most of the code is based on the ClearType whitepaper written by
1980 https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
1982 which gives a detailed overview of the necessary changes to the
1983 Microsoft rasterizer so that older fonts are supported. However, a
1984 lot of details are still missing, and this patches provides a
1985 framework to easily handle rendering issues down to the glyph level
1988 Note that ClearType support is not completely implemented! In
1989 particular, full support for the options `compatible_widths',
1990 `symmetrical_smoothing, and `bgr' (via the GETINFO bytecode
1991 instruction) is missing.
1993 * src/truetype/ttsubpix.c: New file, providing code to handle
1994 `tweaks', this is, rules for certain glyphs in certain fonts
1995 (including wildcards) which need a special treatment.
1997 * src/truetype/ttsubpix.h: New file, holding the tweaking rules.
1999 * include/freetype/config/ftoption.h, src/devel/ftoption.h
2000 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): New macro.
2002 * include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
2003 FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): New macros.
2005 * src/truetype/truetype.c [TT_USE_BYTECODE_INTERPRETER]: Include
2008 * src/truetype/ttgload.c: Include `ttsubpix.h'.
2009 [All changes below are guarded by TT_CONFIG_OPTION_SUBPIXEL_HINTING.]
2011 (tt_get_metrics): Set tweak flags.
2012 (TT_Hint_Glyph): Call `FT_Outline_EmboldenXY' if necessary.
2013 (TT_Process_Simple_Glyph): Compensate emboldening if necessary.
2014 (compute_glyph_metrics): Handle `compatible widths' option.
2015 (tt_loader_init): Handle ClearType GETINFO information bits.
2017 * src/truetype/rules.mk (TT_DRV_SRC): Updated.
2019 * src/truetype/ttinterp.c: Include `ttsubpix.h'.
2020 [Where necessary, changes below are guarded by
2021 TT_CONFIG_OPTION_SUBPIXEL_HINTING.]
2023 (Direct_Move, Direct_Move_X): Extended.
2024 (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
2025 Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, Round_Super_45,
2026 SetSuperRound): Add parameter to handle the number of grid lines per
2028 (SET_SuperRound, ROUND_None, CUR_Func_round): Updated.
2029 (DO_SROUND, DOS45ROUND, DO_ODD, DO_EVEN): Updated.
2030 (DO_ROUND, DO_NROUND): Updated.
2031 (DO_RS): Take care of `Typeman' bytecode patterns.
2032 (Ins_FDEF): Add some debugging code. Commented out.
2033 (Ins_ENDF): Restore state.
2034 (Ins_CALL, Ins_LOOPCALL): Handle inline delta functions.
2035 (Ins_MD): Handle `Vacuform' rounds.
2036 (Move_Zp2_Point, Ins_SHPIX, Ins_MSIRP, Ins_MDAP, Ins_MIAP,
2037 Ins_MDRP, Ins_MIRP): Handle tweaks.
2038 (Ins_ALIGNRP): Add tweak guard.
2039 (Ins_IUP, Ins_DELTAP): Handle tweaks.
2040 (Ins_GETINFO): Handle new ClearType bits.
2041 (TT_RunIns): Handle tweaks.
2043 * src/truetype/ttinterp.h: Updated.
2044 (SPH_TweakRule, SPH_ScaleRule): New structures for tweaks.
2045 (TT_ExecContextRec): Add members for subpixel hinting support.
2047 * src/truetype/ttobjs.h (TT_DefRecord): Add `inline_delta' member.
2049 2012-06-15 Werner Lemberg <wl@gnu.org>
2051 * Version 2.4.10 released.
2052 =========================
2055 Tag sources with `VER-2-4-10'.
2057 * docs/VERSION.DLL: Update documentation and bump version number to
2060 * README, Jamfile (RefDoc),
2061 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
2062 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
2063 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
2064 builds/win32/visualc/freetype.dsp,
2065 builds/win32/visualc/freetype.vcproj,
2066 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
2067 builds/win32/visualce/freetype.vcproj,
2068 builds/win32/visualce/index.html,
2069 builds/wince/vc2005-ce/freetype.vcproj,
2070 builds/wince/vc2005-ce/index.html,
2071 builds/wince/vc2008-ce/freetype.vcproj,
2072 builds/wince/vc2008-ce/index.html: s/2.4.9/2.4.10/, s/249/2410/.
2074 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.
2076 * builds/unix/configure.raw (version_info): Set to 15:0:9.
2078 2012-06-15 Alexei Podtelezhnikov <apodtele@gmail.com>
2080 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Improve spacing.
2082 * docs/CHANGES: Updated.
2084 2012-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2086 * builds/exports.mk: Add CCexe_CFLAGS and CCexe_LDFLAGS.
2088 to pass special compiler/linker flags under cross development.
2089 Suggested by Savannah bug #36367.
2091 ChangeLog on 2010-07-15 saying as they were removed was wrong
2092 for the official trunk of FreeType2. This commit is the first
2093 introduction of them.
2095 2012-06-14 Werner Lemberg <wl@gnu.org>
2097 * docs/CHANGES: Updated.
2099 2012-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2101 [truetype] Add new versions of NEC FA family to tricky font list.
2103 NEC FA family dated in 1996 have different checksum.
2104 Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>; see
2106 https://lists.gnu.org/archive/html/freetype-devel/2012-06/msg00023.html
2108 * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): 4 sets
2109 of fpgm & prep table checksums for FA-Gothic, FA-Minchou,
2110 FA-RoundedGothicM, FA-RoundedGothicB are added. The family
2111 names in sample PDF are truncated, thus the list of the
2112 family names in tt_check_trickyness_family() is not updated yet.
2114 2012-06-06 Werner Lemberg <wl@gnu.org>
2116 [ftraster] Fix rounding issue causing visual artifacts.
2118 Problem reported by jola <hans-jochen.lau@lhsystems.com>; see
2120 https://lists.gnu.org/archive/html/freetype-devel/2012-05/msg00036.html
2122 * src/raster/ftraster.c (SMulDiv_No_Round): New macro.
2124 * src/raster/ftmisc.h (FT_MulDiv_No_Round): Copied from `ftcalc.c'.
2126 2012-05-28 Alexei Podtelezhnikov <apodtele@gmail.com>
2128 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Simplify.
2130 We now use the cross product of the direction vectors to compute the
2131 outline's orientation.
2133 2012-05-28 Werner Lemberg <wl@gnu.org>
2135 * docs/CHANGES: Updated.
2137 2012-05-28 Alexei Podtelezhnikov <apodtele@gmail.com>
2139 New function FT_Outline_EmboldenXY.
2141 * include/freetype/ftoutln.h (FT_Outline_EmboldenXY): Define it.
2143 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Implement it, using a
2144 simplified emboldening algorithm.
2145 (FT_Outline_Embolden): Make it a special case of
2146 `FT_Outline_EmboldenXY'
2148 2012-05-07 Werner Lemberg <wl@gnu.org>
2150 [type1] Fix Savannah bug #36386.
2152 * src/type1/t1load.c (t1_load_keyword): Ignore keyword if context is
2155 2012-04-07 Werner Lemberg <wl@gnu.org>
2157 Remove compiler warning.
2159 * src/truetype/ttgload.c (TT_Load_Glyph)
2160 [!TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Access `glyph->face' directly.
2162 2012-03-28 Werner Lemberg <wl@gnu.org>
2164 [autofit] Properly copy scaler flags to script metrics object.
2166 Without this patch, only the dummy and cjk autohinter modules get
2167 them (since they copy the whole scaler object).
2169 * src/autofit/aflatin.c (af_latin_metrics_scale),
2170 src/autofit/aflatin2.c (af_latin2_metrics_scale): Implement it.
2172 2012-03-22 Alexei Podtelezhnikov <apodtele@gmail.com>
2174 [bdflib] Remove redundant macro.
2176 * src/bdf/bdflib.c (isdigok): Remove and replace with sbitset, which
2177 is exactly the same.
2179 2012-03-20 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2181 [configure] Fix Savannah bug #35644.
2183 * builds/unix/configure.raw: Check `-ansi' flag works even if gcc
2184 is used. Bionic libc headers for Android lose the consistency
2185 when they are parsed with __STDC_VERSION__ older than 199901L or
2188 2012-03-20 Werner Lemberg <wl@gnu.org>
2190 [bdf] Improvement to Savannah bug #35656.
2192 * src/bdf/bdflib.c (isdigok): Add cast, as suggested in report.
2194 2012-03-17 Chris Liddell <chris.liddell@artifex.com>
2196 [type1] Fix Savannah bug #35847.
2198 * src/type1/t1load.c (parse_subrs): Fix the loop exit condition;
2199 we want to exit when we have run out of data.
2201 2012-03-16 Werner Lemberg <wl@gnu.org>
2203 [bdf] Really fix Savannah bug #35658.
2205 * src/bdf/bdflib.c (_bdf_list_split): Add one more `field' initializer.
2207 2012-03-14 Yann Droneaud <yann@droneaud.fr>
2209 [sfnt] Make arrays static like all others.
2211 * src/sfnt/ttload.c (tt_face_load_maxp, tt_face_load_os2),
2212 src/sfnt/ttmtx.c (tt_face_load_hhea): Add `static' keyword to frame
2215 2012-03-14 Huw Davies <huw@codeweavers.com>
2217 [sfnt] A refinement of the previous commit.
2219 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
2220 tt_name_entry_ascii_from_other): Stop at null byte.
2222 2012-03-14 Huw Davies <huw@codeweavers.com>
2224 [sfnt] Add `name' table compatibility to MS Windows.
2226 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
2227 tt_name_entry_ascii_from_other): Don't replace `\0' with question
2228 marks when converting strings.
2230 2012-03-14 Werner Lemberg <wl@gnu.org>
2232 [type1] Fix Savannah bug #35833.
2234 Based on the patch given in the bug report.
2236 * src/type1/t1load.c (IS_INCREMENTAL): New macro.
2237 (read_binary_data): Add parameter `incremental'.
2238 Update all callers using `IS_INCREMENTAL'.
2240 2012-03-11 Werner Lemberg <wl@gnu.org>
2242 [autofit] Return correct linear advance width values.
2244 This was quite a subtle bug which accidentally showed up with glyph
2245 `afii10023' of arial.ttf (version 2.76). This glyph is a composite;
2246 the first component, `E', has an advance width of 1366 font units,
2247 while the advance width of the composite itself (which looks like
2248 uppercase `E' with dieresis) is 1367 font units. I think this is
2249 actually a bug in the font itself, because there is no reason that
2250 this glyph has not the same width as uppercase `E' without the
2251 dieresis. Anyway, it helped identify this problem.
2253 Using the TrueType hinter, the correct value (1367) of `afii10023'
2254 was returned, but the autohinter mysteriously returned 1366.
2256 Digging in the code showed that the autohinter recursively calls
2257 FT_Load_Glyph to load the glyph, adding the FT_LOAD_NO_SCALE load
2258 flag. However, the `linearHoriAdvance' field is still returned as a
2259 scaled value. To avoid scaling twice, the old code in autofit reset
2260 `linearHoriAdvance', using the `horiAdvance' field. This seemed to
2261 work since FT_LOAD_NO_SCALE was in use, but it failed actually,
2262 because `horiAdvance' is defined as the distance of the first
2263 subglyph's phantom points, which in turn are initialized using the
2264 advance width of the first subglyph. And as the given example
2265 shows, these widths can differ.
2267 * src/autofit/afloader.c (af_loader_load_g): Temporarily set
2268 FT_LOAD_LINEAR_DESIGN while calling FT_Load_Glyph to get unscaled
2269 values for the linear advance widths.
2271 2012-03-10 Werner Lemberg <wl@gnu.org>
2273 [truetype] Fix SSW instruction.
2275 * src/truetype/ttinterp.c (DO_SSW): SSW *does* use font units. For
2276 verification, it took some time to find a font which actually uses
2279 2012-03-09 Vinnie Falco <vinnie.falco@gmail.com>
2281 Prepare source code for amalgamation.
2283 * include/freetype/freetype.h: Swap order of preprocessor blocks.
2285 2012-03-08 Werner Lemberg <wl@gnu.org>
2287 * Version 2.4.9 released.
2288 =========================
2291 Tag sources with `VER-2-4-9'.
2293 * docs/CHANGES: Updated.
2295 * docs/VERSION.DLL: Update documentation and bump version number to
2298 * README, Jamfile (RefDoc),
2299 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
2300 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
2301 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
2302 builds/win32/visualc/freetype.dsp,
2303 builds/win32/visualc/freetype.vcproj,
2304 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
2305 builds/win32/visualce/freetype.vcproj,
2306 builds/win32/visualce/index.html,
2307 builds/wince/vc2005-ce/freetype.vcproj,
2308 builds/wince/vc2005-ce/index.html,
2309 builds/wince/vc2008-ce/freetype.vcproj,
2310 builds/wince/vc2008-ce/index.html: s/2.4.8/2.4.9/, s/248/249/.
2312 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 9.
2314 * builds/unix/configure.raw (version_info): Set to 14:1:8.
2316 2012-03-08 Werner Lemberg <wl@gnu.org>
2318 [bdf] Add missing overflow check.
2320 * src/bdf/bdflib.c (_bdf_parse_glyphs) <BITMAP>: Add threshold for
2323 2012-03-07 Vinnie Falco <vinnie.falco@gmail.com>
2325 Prepare source code for amalgamation.
2327 * src/autofit/aferrors.h, src/bdf/bdferror.h, src/bzip2/ftbzip2.c,
2328 src/cache/ftcerror.h, src/cff/cfferrs.h, src/cid/ciderrs.h,
2329 src/gxvalid/gxverror.h, src/gzip/ftgzip.c, src/lzw/ftlzw.c,
2330 src/otvalid/otverror.h, src/pcf/pcferror.h, src/pfr/pfrerror.h,
2331 src/psaux/psauxerr.h, src/pshinter/pshnterr.h,
2332 src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h,
2333 src/smooth/ftsmerrs.h, src/truetype/tterrors.h,
2334 src/type1/t1errors.h, src/type42/t42error.h, src/winfonts/fnterrs.h:
2335 Add #undef FT_ERR_PREFIX before #define FT_ERR_PREFIX.
2337 2012-03-03 Werner Lemberg <wl@gnu.org>
2339 Fix Savannah bug #35660.
2341 For some divisions, we use casts to 32bit entities. Always guard
2342 against division by zero with these casts also.
2344 * src/base/ftcalc.c (ft_div64by32): Remove redundant cast.
2345 (FT_MulDiv, FT_MulDiv_No_Round): Add 32bit cast.
2346 (FT_DivFix): Add 32bit cast (this omission triggered the bug).
2348 2012-03-03 Werner Lemberg <wl@gnu.org>
2350 [psaux] Fix handling of track kerning.
2352 * src/psaux/afmparse.c (afm_parse_track_kern): Don't inverse sign
2353 for `min_kern'. It is indeed quite common that track kerning
2354 *increases* spacing for very small sizes.
2356 2012-03-02 Werner Lemberg <wl@gnu.org>
2358 [truetype] Fix Savannah bug #35689.
2360 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check first outline
2363 2012-03-01 Werner Lemberg <wl@gnu.org>
2365 [bdf] Fix Savannah bug #35656.
2367 * src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity
2368 of nibble characters instead of accessing `a2i' array.
2370 2012-03-01 Werner Lemberg <wl@gnu.org>
2372 [winfonts] Fix Savannah bug #35659.
2374 * src/winfonts/winfnt.c (FNT_Face_Init): Check number of glyphs.
2376 2012-03-01 Werner Lemberg <wl@gnu.org>
2378 [bdf] Fix Savannah bug #35658.
2380 * src/bdf/bdflib.c (_bdf_list_split): Initialize `field' elements
2383 2012-03-01 Werner Lemberg <wl@gnu.org>
2385 [psaux] Fix Savannah bug #35657.
2387 If in function `skip_spaces' the routine `skip_comment' comes to the
2388 end of buffer, `cur' is still increased by one, so we need to check
2389 for `p >= limit' and not `p == limit'.
2391 * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed,
2392 PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Fix boundary checking.
2394 2012-03-01 Werner Lemberg <wl@gnu.org>
2396 [truetype] Fix Savannah bug #35646.
2398 * src/truetype/ttinterp.c (Ins_MIRP): Typo, present since ages. The
2399 code is now in sync with the other operators (e.g. MSIRP) which
2400 modify twilight points.
2402 2012-03-01 Werner Lemberg <wl@gnu.org>
2404 [bdf] Fix Savannah bug #35643.
2406 * src/bdf/bdflib.c (_bdf_list_ensure): Bring code in sync with
2407 comment before `_bdf_list_split', this is, really allocate at least
2408 five `field' elements.
2410 2012-03-01 Werner Lemberg <wl@gnu.org>
2412 [bdf] Fix Savannah bug #35641.
2414 * src/bdf/bdflib.c (_bdf_parse_glyphs) <DWIDTH, BBX>: Abort if
2415 _BDF_ENCODING isn't set. We need this because access to the `glyph'
2416 variable might be undefined otherwise.
2418 2012-03-01 Werner Lemberg <wl@gnu.org>
2420 [truetype] Fix Savannah bug #35640.
2422 * src/truetype/ttinterp.c (SkipCode, TT_RunIns): Fix boundary check
2423 for NPUSHB and NPUSHW instructions.
2425 2012-02-29 Werner Lemberg <wl@gnu.org>
2427 [truetype] Fix Savannah bug #35601.
2429 * src/truetype/ttinterp.c (Ins_SHZ): Use number of points instead of
2430 last point for loop.
2431 Also remove redundant boundary check.
2433 2012-02-29 Werner Lemberg <wl@gnu.org>
2435 [truetype] Remove redundant check.
2437 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
2438 second check for ordered contour start points.
2440 2012-02-29 Werner Lemberg <wl@gnu.org>
2442 [truetype] Make SHC instruction behave similar to MS rasterizer.
2444 * src/truetype/ttinterp.c (Ins_SHC): Handle virtual contour in
2447 2012-02-29 Alexei Podtelezhnikov <apodtele@gmail.com>
2449 Avoid modulo operators against a power-of-two denominator.
2451 * src/afcjk.c (af_hint_normal_stem), src/base/ftoutln.c
2452 (ft_contour_has), src/cff/cffgload.c (cff_decoder_parse_charstrings)
2453 <cff_op_vvcurveto, cff_op_hhcurveto, cff_op_hvcurveto>,
2454 src/gxvalid/gxvcommn.c (GXV_32BIT_ALIGNMENT_VALIDATE),
2455 src/gxvalid/gxvfeat.c (gxv_feat_setting_validate): Replace `%' with
2458 2012-02-29 Werner Lemberg <wl@gnu.org>
2460 [autofit] Don't synchronize digit widths for light rendering mode.
2462 We don't hint horizontally in this mode.
2464 * src/autofit/afloader.c (af_loader_load_g) <Hint_Metrics>:
2467 2012-02-26 Alexei Podtelezhnikov <apodtele@gmail.com>
2469 [type42] Minor code optimization (again).
2471 * src/type42/t42parse.c (t42_parse_sfnts): Simplify previous change.
2473 2012-02-26 Mateusz Jurczyk <mjurczyk@google.com>
2474 Werner Lemberg <wl@gnu.org>
2476 [smooth] Fix Savannah bug #35604.
2478 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `FT_Pos'
2479 instead of `FT_UInt' for some variables and update comparisons
2480 accordingly. A detailed analysis can be found in the bug report.
2482 2012-02-26 Alexei Podtelezhnikov <apodtele@gmail.com>
2484 [type42] Minor code optimization.
2486 * src/type42/t42parse.c (t42_parse_sfnts): Use bitmask instead of
2489 2012-02-26 Werner Lemberg <wl@gnu.org>
2491 * docs/CHANGES: Updated.
2493 2012-02-26 Werner Lemberg <wl@gnu.org>
2495 [type1] Fix Savannah bug #35608.
2497 * src/type1/t1parse.c (T1_Get_Private_Dict): Reject too short
2500 2012-02-26 Werner Lemberg <wl@gnu.org>
2502 [bdf] Support `ENCODING -1 <n>' format.
2504 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Implement it.
2506 2012-02-26 Werner Lemberg <wl@gnu.org>
2508 [bdf] Fix Savannah bug #35607.
2510 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
2511 negative encoding values.
2513 2012-02-26 Werner Lemberg <wl@gnu.org>
2515 [type1] Fix Savannah bug #35606.
2517 * src/type1/t1load.c (parse_subrs): Add proper guards for `strncmp'.
2519 * src/psaux/psobjs.c (ps_parser_skip_PS_token): Emit error message
2520 only if cur < limit.
2522 2012-02-25 Werner Lemberg <wl@gnu.org>
2524 [pcf] Fix Savannah bug #35603.
2526 * src/pcf/pcfread.c (pcf_get_properties): Assure final zero byte in
2529 2012-02-25 Werner Lemberg <wl@gnu.org>
2531 [type42] Fix Savannah bug #35602.
2533 * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size' more
2536 2012-02-25 Werner Lemberg <wl@gnu.org>
2538 [bdf] Fix Savannah bugs #35599 and #35600.
2540 * src/bdf/bdflib.c (ACMSG16): New warning message.
2541 (_bdf_parse_glyphs) <_BDF_BITMAP>: Check line length.
2543 2012-02-24 Werner Lemberg <wl@gnu.org>
2545 [bdf] Fix Savannah bugs #35597 and #35598.
2547 * src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value.
2549 2012-02-24 Vinnie Falco <vinnie.falco@gmail.com>
2551 Prepare source code for amalgamation (6/6).
2553 * src/cff/cffdrivr.c: s/Load_Glyph/cff_glyph_load/.
2555 * src/cid/cidload.c: s/parse_font_matrix/cid_parse_font_matrix/.
2556 s/t1_init_loader/cid_init_loader/.
2557 s/t1_done_loader/cid_done_loader/.
2559 * src/psaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/.
2561 * src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/.
2563 * src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/.
2565 2012-02-24 Vinnie Falco <vinnie.falco@gmail.com>
2567 Prepare source code for amalgamation (5/6).
2569 * include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after
2572 2012-02-22 Vinnie Falco <vinnie.falco@gmail.com>
2574 Prepare source code for amalgamation (4/6).
2576 * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine RAS_ARG,
2577 RAS_ARGS, RAS_VAR, and RAS_VARS before defining it.
2579 * src/smooth/ftgrays.c: s/TRaster/black_TRaster/,
2580 s/PRaster/black_PRaster/.
2581 * src/raster/ftraster.c: s/TRaster/gray_TRaster/,
2582 s/PRaster/gray_PRaster/.
2584 2012-02-20 Vinnie Falco <vinnie.falco@gmail.com>
2586 Prepare source code for amalgamation (3/6).
2588 * src/smooth/ftgrays.c: s/TWorker/black_TWorker/,
2589 s/PWorker/black_PWorker/.
2590 * src/raster/ftraster.c: s/TWorker/gray_TWorker/,
2591 s/PWorker/gray_PWorker/.
2593 2012-02-20 Vinnie Falco <vinnie.falco@gmail.com>
2595 Prepare source code for amalgamation (2/6).
2597 * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR,
2598 CEILING, TRUNC, and SCALED before defining it.
2600 2012-02-20 Vinnie Falco <vinnie.falco@gmail.com>
2602 Prepare source code for amalgamation (1/6).
2604 See discussion starting at
2606 https://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00037.html
2608 * src/smooth/ftgrays.c: s/TBand/gray_TBand/.
2609 * src/raster/ftraster.c: s/TBand/black_TBand/.
2611 2012-02-17 Alexei Podtelezhnikov <apodtele@gmail.com>
2613 [autofit] Fix outline flags.
2615 * src/autofit/afloader.c (af_loader_load_g): Don't reassign
2616 `outline.flags' so that this information is preserved. See
2617 discussion starting at
2619 https://lists.gnu.org/archive/html/freetype-devel/2012-02/msg00046.html
2621 2012-02-11 Werner Lemberg <wl@gnu.org>
2623 [truetype] Fix Savannah bug #35466.
2625 Jump instructions are now bound to the current function. The MS
2626 Windows rasterizer behaves the same, as confirmed by Greg Hitchcock.
2628 * src/truetype/ttinterp.h (TT_CallRec): Add `Cur_End' element.
2629 * src/truetype/ttobjs.h (TT_DefRecord): Add `end' element.
2631 * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Check upper
2632 bound of jump address.
2633 (Ins_FDEF, Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns): Updated.
2635 2012-02-11 Werner Lemberg <wl@gnu.org>
2637 We don't use `extensions'.
2639 * include/freetype/internal/ftobjs.h (FT_DriverRec): Remove
2642 2012-02-11 Werner Lemberg <wl@gnu.org>
2644 Clean up `generic' fields.
2646 * include/freetype/internal/ftobjs.h (FT_ModuleRec, FT_LibraryRec):
2647 Remove `generic' field since users can't access it.
2649 * src/base/ftobjs.c (FT_Done_GlyphSlot): Call `generic.finalizer' as
2650 advertised in the documentation of FT_Generic.
2651 (Destroy_Module, FT_Done_Library): Updated to changes in `ftobjs.h'.
2653 2012-02-07 Werner Lemberg <wl@gnu.org>
2655 [autofit] Harmonize function arguments.
2657 * src/autofit/afloader.c, src/autofit/afloader.h: Use `FT_Int32' for
2660 2012-02-07 Werner Lemberg <wl@gnu.org>
2662 * src/cff/cffobjs.c (cff_face_init): Remove unnecessary casts.
2664 2012-01-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2666 [gxvalid] Fix Savannah bug #35286.
2668 Patch submitted by anonymous reporter.
2670 * src/gxvalid/gxvcommn.c (gxv_XStateTable_subtable_setup):
2671 gxv_set_length_by_ulong_offset() must be called with 3, not 4,
2672 the number of the subtables in the state tables; classTable,
2673 stateArray, entryTable.
2675 2012-01-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2677 [raccess] Modify for PIC build.
2679 Based on the patch provided by Erik Dahlstrom <ed@opera.com>,
2680 https://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00010.html
2682 Also `raccess_guess_table[]' and `raccess_rule_by_darwin_vfs()'
2683 are renamed with `ft_' suffixes.
2685 * src/base/ftbase.h: `raccess_rule_by_darwin_vfs()' is renamed
2686 to `ft_raccess_rule_by_darwin_vfs()'.
2687 * src/base/ftobjs.c: Ditto.
2689 * src/base/ftrfork.c: Declarations of FT_RFork_Rule,
2690 raccess_guess_rec, are moved to...
2691 * include/freetype/internal/ftrfork.h: Here.
2693 * include/freetype/internal/ftrfork.h:
2694 FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END} macros are defined
2695 to replace raccess_guess_table[] in both of PIC and non-PIC
2697 * src/base/ftrfork.c: raccess_guess_table[] array is rewritten
2698 by FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END}.
2700 * src/base/basepic.h (BasePIC): Add `ft_raccess_guess_table'
2701 storage. (FT_RACCESS_GUESS_TABLE_GET): New macro to retrieve
2702 the function pointer from `ft_raccess_guess_table' storage in
2703 `BasePIC' structure.
2704 * src/base/ftrfork.c (FT_Raccess_Guess): Rewritten with
2705 FT_RACCESS_GUESS_TABLE_GET.
2706 (raccess_get_rule_type_from_rule_index): Add `library' as the
2707 first argument to the function, to retrieve the storage of
2708 `ft_raccess_guess_table' from it. Also `raccess_guess_table'
2709 is replaced by FT_RACCESS_GUESS_TABLE_GET.
2710 (ft_raccess_rule_by_darwin_vfs): Ditto.
2712 2012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2714 Remove trailing spaces.
2716 2012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2718 Formatting PIC related sources.
2720 * src/autofit/afpic.c: Harmonize to FT2 coding conventions.
2721 * src/base/basepic.c: Ditto.
2722 * src/base/ftpic.c: Ditto.
2723 * src/cff/cffpic.c: Ditto.
2724 * src/pshinter/pshpic.c: Ditto.
2725 * src/psnames/pspic.c: Ditto.
2726 * src/raster/rastpic.c: Ditto.
2727 * src/sfnt/sfntpic.c: Ditto.
2728 * src/smooth/ftspic.c: Ditto.
2729 * src/truetype/ttpic.c: Ditto.
2731 2012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2733 [autofit] Fix the inclusion of `aflatin2.h' in PIC file.
2735 * src/autofit/afpic.c: Include `aflatin2.h' when
2736 FT_OPTION_AUTOFIT2 is defined, as afglobal.c does so.
2737 Unconditionally inclusion causes declared but unimplemented
2740 2012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2742 [cff] Remove redundant declarations of cff_cmap_XXX_class_rec.
2744 * src/cff/cffpic.c: The declarations of
2745 FT_Init_Class_cff_cmap_encoding_class_rec() and
2746 FT_Init_Class_cff_cmap_unicode_class_rec() are removed.
2747 They can be obtained by the inclusion of cffcmap.h.
2748 cffcmap.h invokes FT_DECLARE_CMAP_CLASS() and it declares
2749 FT_Init_Class_cff_cmap_encoding_class_rec() etc in PIC mode.
2751 2012-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2753 Fix redundant declaration warning in PIC mode.
2755 Originally FT_DEFINE_{DRIVER,MODULE,RENDERER}() macros were
2756 designed to declare xxx_pic_{free,init} by themselves.
2757 Because these macros are used at the end of the module
2758 interface (e.g. ttdriver.c) and the wrapper source to build
2759 a module as a single object (e.g. truetype.c) includes
2760 the PIC file (e.g. ttpic.c) before the module interface,
2761 these macros are expanded AFTER xxx_pic_{free,init} body
2762 when the modules are built as single object.
2763 The declaration after the implementation causes the redundant
2764 declaration warnings, so the declarations are moved to module
2765 PIC headers (e.g. ttpic.h). Separating to other header files
2766 are needed for multi build.
2768 * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER):
2769 Remove class_##_pic_free and class_##_pic_init declarations.
2770 * include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
2771 FT_DEFINE_MODULE): Ditto.
2773 * src/base/basepic.h: Insert a comment and fix coding style.
2774 * src/autofit/afpic.h: Declare autofit_module_class_pic_{free,
2776 * src/cff/cffpic.h: Declare cff_driver_class_pic_{free,init}.
2777 * src/pshinter/pshpic.h: Declare pshinter_module_class_pic_{free,
2779 * src/psnames/pspic.h: Declare psnames_module_class_pic_{free,
2781 * src/raster/rastpic.h: Declare
2782 ft_raster{1,5}_renderer_class_pic_{free,init}
2783 * src/sfnt/sfntpic.h: Declare sfnt_module_class_pic_{free,init}.
2784 * src/smooth/ftspic.h: Declare
2785 ft_smooth_{,lcd_,lcdv_}renderer_class_pic_{free,init}.
2786 * src/truetype/ttpic.h: Declare tt_driver_class_pic_{free,init}.
2788 2012-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2790 Make pspic.c to include module error header to fix multi build.
2792 * src/psnames/pspic.c: Include `psnamerr.h'.
2794 2012-01-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2796 [base] Fix a dereference of uninitialized variable in PIC mode.
2798 * src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be
2799 set before dereferring to obtain `library'. The initialization
2800 of `clazz', `glyph', `library' and NULL pointer check are
2801 reordered to minimize PIC conditionals.
2803 2012-01-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2805 [base] Insert explicit cast for GCC 4.6 in PIC mode.
2807 * src/base/ftinit.c (FT_Add_Default_Modules): Under PIC
2808 configuration, FT_DEFAULT_MODULES_GET returns
2809 FT_Module_Class** pointer, GCC 4.6 warns that
2810 const FT_Module_Class* const* variable is warned as
2811 inappropriate to store it. To calm it, explicit cast is
2812 inserted. Also `library' is checked to prevent the NULL
2813 pointer dereference in FT_DEFAULT_MODULES_GET.
2815 2012-01-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2817 Fix PIC build broken by d9145241fe378104ba4c12a42534549faacc92e6.
2819 Under PIC configuration, FT_{CFF,PSCMAPS,SFNT,TT}_SERVICES_GET
2820 take no arguments but derefer the variable named `library'
2823 * src/cff/cffdrivr.c (cff_get_interface): Declare `library' and
2824 set it if non-NULL driver is passed.
2825 * src/truetype/ttdriver.c (tt_get_interface): Ditto.
2827 * src/sfnt/sfdriver.c (sfnt_get_interface): Declare `library'
2828 under PIC configuration, and set it if non-NULL module is given.
2829 * src/psnames/psmodule.c (psnames_get_interface): Ditto.
2831 2012-01-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2833 Make PIC files include module error headers, to use the error codes
2834 with per-module prefix.
2836 * src/autofit/afpic.c: Include `aferrors.h'.
2837 * src/cff/cffpic.c: Include `cfferrs.h'.
2838 * src/pshinter/pshpic.c: Include `pshnterr.h'.
2839 * src/raster/rastpic.c: Include `rasterrs.h'.
2840 * src/sfnt/sfntpic.c: Include `sferrors.h'.
2841 * src/smooth/ftspic.c: Include `ftsmerrs.h'.
2842 * src/truetype/ttpic.c: Include `tterrors.h'.
2844 2012-01-04 Tobias Ringström <tobias@ringis.se>
2846 [truetype] Fix IP instruction if x_ppem != y_ppem.
2848 * src/truetype/ttinterp.c (Ins_IP): Scale `orus' coordinates
2851 2012-01-02 Werner Lemberg <wl@gnu.org>
2853 Fix tracing message for `loca' table.
2855 * src/truetype/ttpload.c (tt_face_get_location): Don't emit a
2856 warning message if the last `loca' entry references an empty glyph.
2858 2011-12-10 Werner Lemberg <wl@gnu.org>
2860 Add some variable initializations.
2861 Reported by Richard COOK <rscook@unicode.org>.
2863 * src/type1/t1driver.c (t1_ps_get_font_value): Initialize `val'.
2864 * src/smooth/ftgrays.c (gray_render_conic): Initialize `levels'
2867 2011-12-08 Werner Lemberg <wl@gnu.org>
2869 Fix serious scaling bug in `FT_Get_Advances'.
2871 * src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by
2872 `FT_Load_Glyph' must be simply multiplied by 1024.
2874 2011-12-08 Werner Lemberg <wl@gnu.org>
2876 * src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing.
2878 2011-12-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2880 [mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH.
2882 Originally FT_MACINTOSH was a pure auto macro and DARWIN_NO_CARBON
2883 was a configurable macro to disable Carbon-dependent code. Because
2884 now configure script sets DARWIN_NO_CARBON by default and disables
2885 Darwin & Carbon-dependent codes, these macros can be unified.
2886 FT_MACINTOSH (undefined by default) is kept and DARWIN_NO_CARBON
2887 (defined by default) is removed, because DARWIN_NO_CARBON violates
2888 FT_XXX naming convention of public macros, and a macro configured by
2889 default is not portable for the building without configure (e.g.
2892 * builds/unix/configure.raw: Define FT_MACINTOSH if Carbon-based
2893 old Mac font support is requested and Carbon is available.
2894 * builds/unix/ftconfig.in: Undefine FT_MACINTOSH when the support
2895 for Mac OS X without Carbon (e.g. Mac OS X 10.4 for ppc64) is
2897 * include/freetype/config/ftconfig.in: Ditto.
2898 * builds/vms/ftconfig.h: Ditto.
2900 * src/base/ftbase.h: Remove DARWIN_NO_CARBON.
2901 * src/base/ftbase.c: Ditto.
2902 * src/base/ftobjs.c: Ditto.
2903 * src/base/ftrfork.c: Ditto.
2905 * src/base/ftmac.c: Compile the body if FT_MACINTOSH is defined
2906 (same with TT_USE_BYTECODE_INTERPRETER in ttinterp.c).
2907 * builds/mac/ftmac.c: Ditto.
2909 * builds/mac/FreeType.m68k_cfm.make.txt: Define FT_MACINTOSH.
2910 * builds/mac/FreeType.m68k_far.make.txt: Ditto.
2911 * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
2912 * builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
2914 2011-11-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2916 Fix Savannah bug #34728 (`make devel' on Mac OS X).
2918 * builds/toplevel.mk: Check `/dev/null' to identify the Unix-
2919 like systems without `init' nor `hurd' (e.g. Mac OS X >= 10.4).
2920 * builds/unix/detect.mk: Ditto.
2922 2011-11-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2924 [apinames] Fix the overflow of signed integer hash.
2926 * src/tools/apinames.c (names_add): Change the type of `h' from
2927 int to unsigned int, to prevent undefined behaviour in the
2928 overflow of signed integers (overflow of unsigned int is defined
2929 to be wrap around). Found by clang test suggested by Sean
2932 2011-11-30 Werner Lemberg <wl@gnu.org>
2934 [winfonts] Remove casts.
2936 * src/winfonts/winfnt.c (winfnt_driver_class): Remove all casts and
2937 update affected functions.
2938 (FNT_Size_Select): Fix number of arguments.
2940 2011-11-30 Werner Lemberg <wl@gnu.org>
2942 [type42] Remove casts.
2944 * src/type42/t42drivr.c (t42_driver_class): Remove all casts and
2945 update affected functions.
2947 * src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42 driver
2950 2011-11-30 Werner Lemberg <wl@gnu.org>
2952 [type1] Remove casts.
2954 * src/type1/t1driver.c (t1_driver_class): Remove all casts and
2955 update affected functions.
2957 * src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1objs.c:
2958 Updated for t1driver changes.
2959 src/type1/t1objs.h (T1_Driver): Remove unused typedef.
2960 Updated for t1driver changes.
2962 2011-11-27 Werner Lemberg <wl@gnu.org>
2964 [bdf] Fix Savannah bug #34896.
2966 ENCODING now covers the whole Unicode range.
2968 Note, however, that this change is quite expensive since it
2969 increases the size of three arrays by almost 400kByte in total. The
2970 right fix is to replace the logic with something smarter.
2971 Additionally, there exist very old BDFs for three-byte CCCII
2972 encoding which exceeds the range of Unicode (another reason to have
2975 * src/bdf/bdf.h (bdf_font_t): Increase size of `nmod' and `umod'
2977 * src/bdf/bdflib.c (bdf_parse_t): Increase size of `have' array.
2979 2011-11-27 Werner Lemberg <wl@gnu.org>
2981 [bdf] Improve tracing.
2983 * src/bdf/bdflib.c (DBGMSG1, DBGMSG2): New macros.
2984 (_bdf_parse_glyphs): Use them.
2986 2011-11-26 Werner Lemberg <wl@gnu.org>
2990 * src/bdf/bdfdrivr.c (BDF_Face_Done), src/pcf/pcfdrivr.c
2991 (PCF_Face_Done): Remove tracing message.
2993 * src/bdf/bdfdrivr.c (BDF_Face_Init), src/cff/cffobjs.c
2994 (cff_face_init), src/cid/cidobjs.c (cid_face_init),
2995 src/pfr/pfrobjs.c (pfr_face_init), src/sfnt/sfobjs.c
2996 (sfnt_init_face), src/truetype/ttobjs.c (tt_face_init),
2997 src/type1/t1objs.c (T1_Face_Init), src/type42/t42objs.c
2998 (T42_Face_Init), src/winfonts/winfnt.c (FNT_Face_Init): Add
3001 * src/sfnt/sfobjs.c (sfnt_open_font), src/type42/t42objs.c
3002 (T42_Open_Face): Improve tracing.
3004 2011-11-26 Werner Lemberg <wl@gnu.org>
3006 [cid] Fix error code.
3008 * src/cid/cidparse.c (cid_parser_new): Do it.
3010 2011-11-26 Werner Lemberg <wl@gnu.org>
3012 [cff] Fix error code.
3014 * src/cff/cffload.c (cff_font_load): Do it.
3016 2011-11-26 Werner Lemberg <wl@gnu.org>
3018 Add new error code FT_Err_Missing_Module.
3020 Previously, FreeType misleadingly returned
3021 FT_Err_Unknown_File_Format if a module was missing (or a test was
3022 missing completely).
3024 * include/freetype/fterrdef.h (FT_Err_Missing_Module): Define.
3026 * src/cff/cffobjs.c (cff_face_init), src/cff/cffdrivr.c
3027 (cff_get_glyph_name), src/cid/cidobjs.c (cid_face_init),
3028 src/sfnt/sfobjs.c (sfnt_init_face), src/truetype/ttobjs.c
3029 (tt_face_init), src/type1/t1objs.c (T1_Face_Init),
3030 src/type42/t42objs.c (T42_Face_Init, T42_Driver_Init): Updated.
3032 * src/type1/t1afm.c (T1_Read_Metrics), src/type/t1objs.c
3033 (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Remove now
3034 redundant test for `psaux'.
3036 2011-11-25 Werner Lemberg <wl@gnu.org>
3038 [bdf] Add more error messages.
3040 * src/bdf/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
3041 Add line number argument.
3043 (ERRMSG5, ERRMSG6, ERRMSG7, ERRMSG8, ERRMSG9): New macros.
3044 (_bdf_readstream, _bdf_set_default_spacing, _bdf_add_property,
3045 _bdf_parse_glyphs, _bdf_parse_start): Add error messages.
3047 2011-11-24 Werner Lemberg <wl@gnu.org>
3049 * include/freetype/fterrors.h: Remove dead code.
3051 2011-11-15 Werner Lemberg <wl@gnu.org>
3053 * docs/releases: Updated.
3055 2011-11-15 Werner Lemberg <wl@gnu.org>
3057 * Version 2.4.8 released.
3058 =========================
3061 Tag sources with `VER-2-4-8'.
3063 * docs/CHANGES: Updated.
3065 * docs/VERSION.DLL: Update documentation and bump version number to
3068 * README, Jamfile (RefDoc),
3069 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3070 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3071 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3072 builds/win32/visualc/freetype.dsp,
3073 builds/win32/visualc/freetype.vcproj,
3074 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3075 builds/win32/visualce/freetype.vcproj,
3076 builds/win32/visualce/index.html,
3077 builds/wince/vc2005-ce/freetype.vcproj,
3078 builds/wince/vc2005-ce/index.html,
3079 builds/wince/vc2008-ce/freetype.vcproj,
3080 builds/wince/vc2008-ce/index.html: s/2.4.7/2.4.8/, s/247/248/.
3082 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.
3084 * builds/unix/configure.raw (version_info): Set to 14:0:8.
3086 2011-11-13 Chris Liddell <chris.liddell@artifex.com>
3088 Add FT_Get_PS_Font_Value() API.
3090 This allows a Type 1 font face to be interrogated to retrieve most
3091 of the dictionary keys (keys not relevant to FreeType's Type 1
3092 interpreter are not available).
3094 * include/freetype/internal/services/svpsinfo.h
3095 (PS_GetFontValueFunc): New typedef.
3096 (PSInfo): Add `ps_get_font_value'.
3097 (FT_DEFINE_SERVICE_PSINFOREC): Updated.
3099 * include/freetype/internal/t1types.h (T1_EncodingType): Moved to...
3100 * include/freetype/t1tables.h: Here.
3101 (PS_Dict_Keys): New enumeration.
3102 (FT_Get_PS_Font_Value): New declaration.
3104 * src/base/fttype1.c (FT_Get_PS_Font_Value): New function.
3106 * src/type1/t1driver.c (t1_ps_get_font_value): This new function
3108 (t1_service_ps_info): Add it.
3110 * src/cff/cffdrivr.c (cff_service_ps_info), src/cid/cidriver.c
3111 (cid_service_ps_info), src/type42/t42drivr.c (t42_service_ps_info):
3114 2011-11-08 Braden Thomas <bthomas@apple.com>
3116 [cid] Various loading fixes.
3118 * src/cid/cidload.c (cid_load_keyword) <default>,
3119 (parse_font_matrix, parse_expansion_factor): Correctly check number
3121 (cid_read_subrs): Protect against invalid values of `num_subrs'.
3122 Assure that the elements of the `offsets' array are ascending.
3124 2011-11-05 Werner Lemberg <wl@gnu.org>
3126 * README: We use copyright ranges also.
3130 https://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html
3132 this should be mentioned explicitly.
3134 2011-10-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3136 [raccess] Supplement for previous fix.
3138 * src/base/ftbase.h (raccess_rule_by_darwin_vfs): Do not declare
3139 it on native Mac OS X.
3140 * src/base/ftrfork.c (raccess_get_rule_type_from_rule_index):
3141 Hide raccess_get_rule_type_from_rule_index() on native Mac OS X
3144 2011-10-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3146 [raccess] Hide raccess_rule_by_darwin_vfs() on native Mac OS X.
3148 * src/base/ftrfork.c (raccess_rule_by_darwin_vfs): Do not
3149 compile on native Mac OS X because it is not used.
3151 2011-10-25 Werner Lemberg <wl@gnu.org>
3153 [truetype] Fix MD instruction for twilight zone.
3155 * src/truetype/ttinterp.c (Ins_MD): Without this fix, the MD
3156 instruction applied to original coordinates of twilight points
3157 always returns zero.
3159 2011-10-18 Werner Lemberg <wl@gnu.org>
3161 * Version 2.4.7 released.
3162 =========================
3165 Tag sources with `VER-2-4-7'.
3167 * docs/CHANGES: Updated.
3169 * docs/VERSION.DLL: Update documentation and bump version number to
3172 * README, Jamfile (RefDoc),
3173 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3174 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3175 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3176 builds/win32/visualc/freetype.dsp,
3177 builds/win32/visualc/freetype.vcproj,
3178 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3179 builds/win32/visualce/freetype.vcproj,
3180 builds/win32/visualce/index.html,
3181 builds/wince/vc2005-ce/freetype.vcproj,
3182 builds/wince/vc2005-ce/index.html,
3183 builds/wince/vc2008-ce/freetype.vcproj,
3184 builds/wince/vc2008-ce/index.html: s/2.4.6/2.4.7/, s/246/247/.
3186 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7.
3188 * builds/unix/configure.raw (version_info): Set to 13:2:7.
3190 2011-10-15 Kal Conley <kcconley@gmail.com>
3192 Fix handling of transformations if no renderer is present.
3194 * src/base/ftobjs.c (FT_Load_Glyph): Thinko.
3196 2011-10-15 Kal Conley <kcconley@gmail.com>
3198 Fix conditions for autohinting.
3200 * src/base/ftobjs.c (FT_Load_Glyph): Handle
3201 FT_LOAD_IGNORE_TRANSFORM.
3203 2011-10-07 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3205 [gxvalid] Fix a bug to detect too large offset in morx table.
3207 * src/gxvalid/gxvmorx2.c
3208 (gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug
3209 that too large positive offset cannot be detected.
3211 2011-10-01 Braden Thomas <bthomas@apple.com>
3213 Handle some border cases.
3215 * include/freetype/config/ftstdlib.h (FT_USHORT_MAX): New macro.
3217 * src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid
3218 value of `target->rows'.
3220 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for
3223 * src/raster/ftrend1.c (ft_raster1_render): Check `width' and
3226 * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against
3227 invalid values in `localpoints' array.
3229 2011-10-01 Werner Lemberg <wl@gnu.org>
3231 [psnames] Handle zapfdingbats.
3232 Problem reported by Nicolas Rougier <Nicolas.Rougier@inria.fr>.
3234 * src/tools/glnames.py (adobe_glyph_list): Add data from AGL's
3235 `zapfdingbats.txt' file.
3237 * src/psnames/pstables.h: Regenerated.
3239 2011-09-27 Simon Bünzli <zeniko@gmail.com>
3241 [type1] Fix Savannah bug #34189.
3243 * src/type1/t1load.c (T1_Open_Face): Initialize
3244 `face->len_buildchar'.
3246 2011-09-26 Werner Lemberg <wl@gnu.org>
3248 [cff] Dump SIDs while tracing.
3250 * src/cff/cffobjs.c (cff_face_init): Do it.
3252 * src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE]
3253 <cff_kind_string>: Identify as SID.
3255 2011-09-17 Werner Lemberg <wl@gnu.org>
3257 Remove unused FT_ALIGNMENT macro.
3259 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
3260 include/freetype/config/ftconfig.h: Do it.
3262 2011-09-17 Alexei Podtelezhnikov <apodtele@gmail.com>
3264 [smooth] Slightly optimize conic and cubic flatteners.
3266 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
3267 out some code from the main loop to speed it up.
3269 2011-09-11 Tomas Hoger <thoger@redhat.com>
3271 Slightly improve LZW_CLEAR handling.
3273 * src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_CODE>:
3274 Ensure that subsequent (modulo garbage byte(s)) LZW_CLEAR codes are
3275 handled as clear codes. This also re-sets old_code and old_char to
3276 predictable values, which is a little better than using `random'
3277 ones if the code following LZW_CLEAR is invalid.
3279 2011-09-11 Tomas Hoger <thoger@redhat.com>
3281 Add explicit LZW decompression stack size limit.
3283 Stack larger than 1<<LZW_MAX_BITS is never needed if prefix table is
3284 constructed correctly. It's even less than that, see e.g.
3285 libarchive code comment for a better size upper bound:
3287 http://code.google.com/p/libarchive/source/browse/trunk/libarchive/archive_read_support_filter_compress.c?r=3635#121
3289 This patch adds explicit stack size limit, enforced when stack is
3292 An alternative is to ensure that code < state->prefix[code - 256]
3293 when traversing prefix table. Such check is less efficient and
3294 should not be required if prefix table is constructed correctly in
3297 * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it.
3299 2011-09-11 Tomas Hoger <thoger@redhat.com>
3301 Protect against loops in the prefix table.
3303 LZW decompressor did not sufficiently check codes read from the
3304 input LZW stream. A specially-crafted or corrupted input could
3305 create a loop in the prefix table, which leads to memory usage
3306 spikes, as there's no decompression stack size limit.
3308 * src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_START>: First
3309 code in valid LZW stream must be 0..255.
3310 <FT_LZW_PHASE_CODE>: In the special KwKwK case, code == free_ent,
3311 code > free_ent is invalid.
3313 2011-09-09 Werner Lemberg <wl@gnu.org>
3315 Better tracing of metrics.
3317 * src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with
3320 2011-09-07 Werner Lemberg <wl@gnu.org>
3322 [cff] Fix Savannah bug #33816.
3324 * src/cff/cfftypes.h (CFF_FontRecDictRec): New member
3326 * src/cff/cffparse.c (cff_parse_font_matrix): Set it.
3327 Update tracing output.
3328 * src/cff/cffobjs.c (cff_face_init): Use it so that the heuristics
3331 2011-08-30 Werner Lemberg <wl@gnu.org>
3333 Better tracing of metrics.
3335 * src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics):
3336 Decorate with FT_TRACE.
3338 2011-08-25 Werner Lemberg <wl@gnu.org>
3340 [cff] Better tracing of the parsing process.
3342 * src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with
3345 * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
3346 cff_parse_private_dict, cff_parse_cid_ros): Updated.
3347 (CFF_FIELD_NUM, CFF_FIELD_FIXED, CFF_FIELD_FIXED_1000,
3348 CFF_FIELD_STRING, CFF_FIELD_BOOL, CFF_FIELD_CALLBACK, CFF_FIELD,
3349 CFF_FIELD_DELTA): Add argument for ID.
3350 (cff_parser_run): Decorate with FT_TRACE.
3352 * src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add
3355 * src/cff/cfftoken.h: Add IDs to all fields.
3357 2011-08-16 Werner Lemberg <wl@gnu.org>
3359 Fix Savannah bug #34022.
3361 * README, docs/INSTALL: Remove references to UPGRADE.UNIX.
3363 2011-08-15 Werner Lemberg <wl@gnu.org>
3365 Fix Savannah bug #34018.
3367 * docs/UPGRADE.UNIX: Removed. Obsolete.
3369 2011-08-15 David Bevan <david.bevan@pb.com>
3371 Fix Savannah bug #33992.
3373 * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case.
3375 2011-08-12 Werner Lemberg <wl@gnu.org
3377 [truetype] Fix degenerate case in S{P,F,DP}VTL opcodes.
3379 * src/truetype/ttinterp.c (Ins_SxVTL): Handle p1 == p2 specially.
3380 (Ins_SDPVTL): Handle v1 == v2 specially.
3382 2011-08-09 Werner Lemberg <wl@gnu.org>
3384 [cff] Fix Savannah bug #33975.
3386 * src/cff/cffparse.c (cff_parse_font_matrix): Fix typo.
3388 2011-07-29 Werner Lemberg <wl@gnu.org>
3390 * Version 2.4.6 released.
3391 =========================
3394 Tag sources with `VER-2-4-6'.
3396 * docs/CHANGES: Updated.
3398 * docs/VERSION.DLL: Update documentation and bump version number to
3401 * README, Jamfile (RefDoc),
3402 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3403 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3404 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3405 builds/win32/visualc/freetype.dsp,
3406 builds/win32/visualc/freetype.vcproj,
3407 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3408 builds/win32/visualce/freetype.vcproj,
3409 builds/win32/visualce/index.html,
3410 builds/wince/vc2005-ce/freetype.vcproj,
3411 builds/wince/vc2005-ce/index.html,
3412 builds/wince/vc2008-ce/freetype.vcproj,
3413 builds/wince/vc2008-ce/index.html: s/2.4.5/2.4.6/, s/245/246/.
3415 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.
3417 * builds/unix/configure.raw (version_info): Set to 13:1:7.
3419 2011-07-29 Werner Lemberg <wl@gnu.org>
3421 [cff] Add some more tracing infos.
3423 * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
3424 cff_parse_cid_ros): Add tracing.
3426 2011-07-22 Dirk Müller <dmueller@suse.de>
3428 [psaux, type1] Fix null pointer dereferences.
3430 Found with font fuzzying.
3432 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Check
3433 `decoder->buildchar'.
3435 * src/type1/t1load.c (t1_load_keyword): Check `blend->num_designs'.
3437 2011-07-20 Chris Morgan <cmorgan@cybexintl.com>
3439 Add FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT.
3441 Useful for embedded systems which don't need file stream support.
3443 * src/base/ftsystem.c, src/base/ftobjs.c (FT_Stream_New): Implement
3446 2011-07-20 Elton Chung <elton328@gmail.com>
3448 * src/base/ftpatent.c (FT_Face_SetUnpatentedHinting): Fix typo.
3450 2011-07-16 Steven Chu <steven.f.chu@gmail.com>
3452 [truetype] Fix metrics on size request for scalable fonts.
3454 * src/truetype/ttdriver.c (tt_size_request): Fix copying metrics
3455 from TT_Size to FT_Size if scalable font.
3459 https://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00049.html
3461 for some comparison images.
3463 2011-07-14 Matthias Drochner <M.Drochner@fz-juelich.de>.
3465 [psaux] Fix potential sign extension problems.
3467 When shifting right a signed value, it is not defined by the
3468 C standard whether one gets a sign extension or not. Use a macro to
3469 do an explicit cast from a signed short (assuming that this is
3472 * src/psaux/t1decode.c (Fix2Int): New macro.
3473 Use it where appropriate.
3475 2011-07-14 Werner Lemberg <wl@gnu.org>
3477 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
3478 <op_callothersubr>: Better handling of subroutine index 0.
3479 From Matthias Drochner <M.Drochner@fz-juelich.de>.
3481 2011-07-10 Алексей Подтележников <apodtele@gmail.com>
3483 [psaux] Optimize previous commit.
3485 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
3486 <op_callothersubr>: Move error check down to avoid testing twice for
3489 2011-07-08 Werner Lemberg <wl@gnu.org>
3491 [psaux] Add better argument check for `callothersubr'.
3493 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
3494 <op_callothersubr>: Reject negative arguments.
3496 2011-07-07 Werner Lemberg <wl@gnu.org>
3498 [sfnt] Try harder to find non-zero values for ascender and descender.
3500 * src/sfnt/sfobjs.c (sfnt_load_face): Consult `OS/2' table in case
3501 the `hhea' table's values are zero.
3503 2011-07-03 Werner Lemberg <wl@gnu.org>
3505 Fix previous commit.
3507 We want to unset FT_FACE_FLAG_SCALABLE only if there are bitmap
3508 strikes in the font.
3510 * src/truetype/ttobjs.c (tt_face_init): Implement it.
3512 * docs/CHANGES: Updated.
3514 2011-07-02 Just Fill Bugs <mozbugbox@yahoo.com.au>
3516 [truetype] Fix Savannah bug #33246.
3518 * src/truetype/ttobjs.c (tt_check_single_notdef): New function.
3519 (tt_face_init): Use it to test FT_FACE_FLAG_SCALABLE.
3521 2011-07-02 Werner Lemberg <wl@gnu.org>
3523 * docs/CHANGES: Updated.
3525 2011-07-02 David Bevan <david.bevan@pb.com>
3527 [ftstroke] Major revision.
3532 o If FT_STROKER_LINEJOIN_BEVEL was specified, unlimited miter
3533 joins (not bevel joins) were generated. Indeed, the meanings of
3534 `miter' and `bevel' were incorrectly reversed (consistently) in
3535 both the code and comments.
3537 o The way bevel joins were constructed (whether specified
3538 explicitly, or created as a result of exceeding the miter limit)
3539 did not match what is required for stroked text in PostScript or
3545 o The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
3547 o A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has been
3548 introduced to support PostScript and PDF miter joins.
3550 o FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
3551 alias for FT_STROKER_LINEJOIN_MITER.
3553 Additionally, a variety of stroking errors have been fixed. These
3554 would cause various artifacts (including points `at infinity'),
3555 especially when stroking poor quality fonts.
3559 https://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00001.html
3561 for example documents. The FreeType stroker now produces results
3562 very similar to that produced by GhostScript and Distiller for these
3568 The following problems have been resolved:
3570 o Inside corners could be generated incorrectly. Intersecting the
3571 inside corner could cause a missing triangular area and other
3574 The intersection point can only be used if the join is between
3575 two lines and both lines are long enough. The `optimization'
3576 condition in `ft_stroker_inside' has been corrected; this
3577 requires the line length to be passed into various functions and
3578 stored in `FT_StrokerRec'.
3580 o Incorrect cubic curves could be generated. The angle
3581 calculations in `FT_Stroker_CubicTo' have been corrected to
3582 handle the case of the curve crossing the +/-PI direction.
3584 o If the border radius was greater than the radius of curvature of
3585 a curve, then the negative sector would end up outside (not
3586 inside) the border. This situation is now recognized and the
3587 negative sector is circumnavigated in the opposite direction.
3588 (If round line joins are being used, this code is disabled
3589 because the line join will always cover the negative sector.)
3591 o When a curve is split, the arcs may not join smoothly (especially
3592 if the curve turns sharply back on itself). Changes in
3593 direction between adjacent arcs were not handled. A round
3594 corner is now added if the deviation from one arc to the next is
3595 greater than a suitable threshold.
3597 o The current direction wasn't retained if a the outline contained
3598 a zero length lineto or a curve that was determined to be
3599 `basically a point'. This could cause a spurious join to be
3602 o Cubics with close control points could be mishandled. All eight
3603 cases are now distinguished correctly.
3608 o Borders for cubic curves could be too `flat'.
3609 FT_SMALL_CUBIC_THRESHOLD has been reduced a little to prevent
3612 o The handling and use of movable points has been simplified a
3615 o Various values are now computed only if the results are actually
3618 o The directions of the outer and inner borders have been swapped,
3619 as recommended by Graham Asher.
3621 * src/base/ftstroke.c: Revised.
3622 * include/freetype/ftstroke.h: Updated.
3624 2011-06-30 İsmail Dönmez <ismail@namtrac.org>
3626 * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'.
3628 2011-06-29 Werner Lemberg <wl@gnu.org>
3630 [bdf] Fix Savannah bug #33663.
3632 * src/bdf/bdflib.c (_bdf_parse_glyphs): Handle negative values for
3635 * docs/CHANGES: Document it.
3637 2011-06-24 Werner Lemberg <wl@gnu.org>
3639 * Version 2.4.5 released.
3640 =========================
3643 Tag sources with `VER-2-4-5'.
3645 * docs/CHANGES: Updated.
3647 * docs/VERSION.DLL: Update documentation and bump version number to
3650 * README, Jamfile (RefDoc),
3651 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3652 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3653 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3654 builds/win32/visualc/freetype.dsp,
3655 builds/win32/visualc/freetype.vcproj,
3656 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3657 builds/win32/visualce/freetype.vcproj,
3658 builds/win32/visualce/index.html,
3659 builds/wince/vc2005-ce/freetype.vcproj,
3660 builds/wince/vc2005-ce/index.html,
3661 builds/wince/vc2008-ce/freetype.vcproj,
3662 builds/wince/vc2008-ce/index.html: s/2.4.4/2.4.5/, s/244/245/.
3664 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
3666 * builds/unix/configure.raw (version_info): Set to 13:0:7.
3668 2011-06-20 Werner Lemberg <wl@gnu.org>
3670 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Fix change
3673 2011-06-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3675 [gxvalid] make the `prop' validation tracing verbose.
3677 * src/gxvalid/gxvprop.c: Add tracing messages for errors.
3679 2011-06-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3681 [autogen.sh] Reflect environment variable LIBTOOLIZE.
3683 2011-06-18 Werner Lemberg <wl@gnu.org>
3685 Update license documentation.
3687 * docs/GPL.TXT: Renamed to...
3688 * docs/GPLv2.TXT: This.
3690 * docs/LICENSE.TXT: Updated.
3692 2011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3694 Fix g++4.6 compiler warnings in module drivers.
3696 The background is same with previous commit.
3698 * src/truetype/ttgxvar.c (ft_var_readpackedpoints):
3699 Init `points'. (TT_Vary_Get_Glyph_Deltas): Init
3700 `delta_xy'. (TT_Get_MM_Var): Init `mmvar'.
3701 * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
3702 * src/cff/cffdrivr.c (cff_ps_get_font_info): Init
3704 * src/cff/cffload.c (cff_index_get_pointers): Init `t'.
3705 (cff_font_load): Init `sub'.
3706 * src/cff/cffobjs.c (cff_size_init): Init `internal'.
3707 (cff_face_init): Init `cff'.
3708 * src/pfr/pfrload.c (pfr_extra_item_load_stem_snaps):
3710 * src/pcf/pcfread.c (pcf_get_properties): Init `properties'.
3711 (pcf_get_bitmaps): Init `offsets'. (pcf_get_encodings):
3713 * src/sfnt/ttload.c (tt_face_load_gasp): Init `gaspranges'.
3714 * src/sfnt/ttsbit.c (Load_SBit_Image): Init `components'.
3715 * src/cache/ftcmru.c (FTC_MruList_New): Init `node'.
3716 * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Init `zip' and
3718 * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Init `zip'.
3719 * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Init `zip'.
3721 2011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3723 [base] Fix g++4.6 compiler warnings in src/base/*.c.
3725 Passing uninitialized pointer to FT_NEW() families is
3726 not problematic theoretically (as far as the returned
3727 pointer is checked before writing), but g++4.6 dislikes
3728 it and warns by -Wuninitialized. Initialize them by NULL.
3730 * src/base/ftobjs.c (FT_Stream_New): Init `stream'.
3731 (new_memory_stream): Ditto.
3732 (FT_New_GlyphSlot): Init `slot'.
3733 (FT_CMap_New): Init `cmap'.
3734 (open_face_PS_from_sfnt_stream): Init `sfnt_ps'.
3735 (Mac_Read_POST_Resource): Init `pfb_data'.
3736 (Mac_Read_sfnt_Resource): Init `sfnt_data'.
3737 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets):
3738 Init `offsets_internal' and `ref'.
3739 (raccess_guess_darwin_hfsplus): Init `newpath'.
3740 (raccess_guess_darwin_newvfs): Ditto.
3741 * src/base/ftbitmap.c (ft_bitmap_assure_buffer):
3743 * src/base/ftstroke.c (FT_Stroker_New): Init `stroker'.
3745 2011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3749 Some invalid, overrunning, unrecommended non-zero values
3750 are cared in paranoid validation mode only. There are
3751 many lines looking like:
3753 if ( valid->root->level >= FT_VALIDATE_PARANOID )
3756 To simplify them, GXV_SET_ERR_IF_PARANOID( err ) is
3757 introduced for more paranoid validation in future.
3759 * src/gxvalid/gxvcommn.h (IS_PARANOID_VALIDATION):
3760 New macro to assure valid->root->level is more or
3761 equal to FT_VALIDATE_PARANOID. (GXV_SET_ERR_IF_PARANOID):
3762 New macro to raise an error if in paranoid validation.
3763 * src/gxvalid/gxvcommn.c: Use GXV_SET_ERR_IF_PARANOID().
3764 * src/gxvalid/gxvfeat.c: Ditto.
3765 * src/gxvalid/gxvjust.c: Ditto.
3766 * src/gxvalid/gxvkern.c: Ditto.
3767 * src/gxvalid/gxvmort.c: Ditto.
3768 * src/gxvalid/gxvmort0.c: Ditto.
3769 * src/gxvalid/gxvmort1.c: Ditto.
3770 * src/gxvalid/gxvmort2.c: Ditto.
3771 * src/gxvalid/gxvmorx1.c: Ditto.
3772 * src/gxvalid/gxvmorx2.c: Ditto.
3774 2011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3776 [gxvalid] Fix gcc4.6 compiler warnings in gxvtrak.c.
3778 * src/gxvalid/gxvtrak.c (gxv_trak_trackTable_validate):
3779 Check different entries pointing same tracking value.
3780 (gxv_trak_validate): Remove unused variable `table_size'.
3782 2011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3784 [gxvalid] Fix gcc4.6 compiler warnings in gxvmorx*.c.
3786 * src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate):
3787 Conditionalize unvalidated variable `subFeatureFlags'.
3788 (gxv_morx_chain_validate): Conditionalize unvalidated
3789 variable `defaultFlags'.
3791 * src/gxvalid/gxvmorx0.c
3792 (gxv_morx_subtable_type0_entry_validate):
3793 Conditionalize unvalidated variables; `markFirst',
3794 `dontAdvance', `markLast', `verb'.
3796 * src/gxvalid/gxvmorx1.c
3797 (gxv_morx_subtable_type1_entry_validate): Conditionalize
3798 unvalidated variables; `setMark', `dontAdvance'.
3800 * src/gxvalid/gxvmorx2.c
3801 (gxv_morx_subtable_type2_ligActionOffset_validate):
3802 Conditionalize unvalidated variables; `last', `store'.
3803 Checking for overrunning offset is added.
3804 (gxv_morx_subtable_type2_entry_validate):
3805 Conditionalize unvalidated variables; `setComponent',
3806 `dontAdvance', `performAction'.
3807 (gxv_morx_subtable_type2_ligatureTable_validate):
3808 Check if the GID for ligature does not exceed the
3809 max GID in `maxp' table.
3811 * src/gxvalid/gxvmort5.c
3812 (gxv_morx_subtable_type5_InsertList_validate):
3813 Conditionalize unvalidated loading of `insert_glyphID'
3814 array. (gxv_morx_subtable_type5_entry_validate):
3815 Conditionalize unvalidated variables; `setMark',
3816 `dontAdvance', `currentIsKashidaLike',
3817 `markedIsKashidaLike', `currentInsertBefore',
3818 `markedInsertBefore'.
3820 2011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3822 [gxvalid] Fix gcc4.6 compiler warnings in gxvmort*.c.
3824 * src/gxvalid/gxvmort.c (gxv_mort_subtables_validate):
3825 Conditionalize unvalidated variable `subFeatureFlags'.
3826 (gxv_mort_chain_validate): Conditionalize unvalidated
3827 variable `defaultFlags'.
3829 * src/gxvalid/gxvmort0.c
3830 (gxv_mort_subtable_type0_entry_validate): Check the
3831 conflict of the marks for the glyphs.
3833 * src/gxvalid/gxvmort1.c
3834 (gxv_mort_subtable_type1_offset_to_subst_validate):
3835 Local variables `min_gid', `max_gid' are replaced by
3836 variables in the validator.
3837 (gxv_mort_subtable_type1_entry_validate): Conditionalize
3838 unvalidated variables; `setMark', `dontAdvance'.
3839 (gxv_mort_subtable_type1_substTable_validate):
3840 Validate the GID by the min/max GIDs in the validator.
3842 * src/gxvalid/gxvmort2.c
3843 (gxv_mort_subtable_type2_ligActionOffset_validate):
3844 Conditionalize unvalidated variables; `last', `store'.
3845 Checking for overrunning offset is added.
3846 (gxv_mort_subtable_type2_entry_validate):
3847 Conditionalize unvalidated variables; `setComponent',
3849 (gxv_mort_subtable_type2_ligatureTable_validate):
3850 Check if the GID for ligature does not exceed the
3851 max GID in `maxp' table.
3853 * src/gxvalid/gxvmort5.c
3854 (gxv_mort_subtable_type5_InsertList_validate):
3855 Conditionalize unvalidated loading of `insert_glyphID'
3856 array. (gxv_mort_subtable_type5_entry_validate):
3857 Conditionalize unvalidated variables; `setMark',
3858 `dontAdvance', `currentIsKashidaLike',
3859 `markedIsKashidaLike', `currentInsertBefore',
3860 `markedInsertBefore'.
3862 2011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3864 [gxvalid] Fix gcc4.6 compiler warnings in gxvkern.c.
3866 * src/gxvalid/gxvkern.c
3867 (gxv_kern_subtable_fmt0_pairs_validate): Conditionalize
3868 unvalidated variable `kernValue'.
3869 (gxv_kern_subtable_fmt1_entry_validate): Conditionalize
3870 unvalidated variables; `push', `dontAdvance', `kernAction',
3872 (gxv_kern_coverage_new_apple_validate): Conditionalize
3873 trace-only variables; `kernVertical', `kernCrossStream',
3875 (gxv_kern_coverage_classic_apple_validate): Conditionalize
3876 trace-only variables; `horizontal', `cross_stream'.
3877 (gxv_kern_coverage_classic_microsoft_validate):
3878 Conditionalize trace-only variables; `horizontal',
3879 `minimum', `cross_stream', `override'.
3880 (gxv_kern_subtable_validate): Conditionalize trace-only
3881 variables; `version', `tupleIndex'.
3883 2011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3885 [gxvalid] Fix gcc4.6 compiler warnings in gxvjust.c.
3887 * src/gxvalid/gxvjust.c (gxv_just_check_max_gid):
3888 New function to unify the checks of too large GID.
3889 (gxv_just_wdp_entry_validate): Conditionalize unvalidated
3890 variables; `beforeGrowLimit', `beforeShrinkGrowLimit',
3891 `afterGrowLimit', `afterShrinkGrowLimit', `growFlags',
3892 `shrinkFlags'. Additional check for non-zero values in
3893 unused storage `justClass' is added.
3894 (gxv_just_actSubrecord_type0_validate): Conditionalize
3895 unvalidated variable `order'. GID is checked by
3896 gxv_just_check_max_gid(). Additional check for upside-down
3897 relationship between `lowerLimit' and `upperLimit' is added.
3898 (gxv_just_actSubrecord_type1_validate): GID is checked by
3899 gxv_just_check_max_gid().
3900 (gxv_just_actSubrecord_type2_validate): Conditionalize
3901 unvalidated variable `substThreshhold'. GID is checked by
3902 gxv_just_check_max_gid().
3903 (gxv_just_actSubrecord_type5_validate): GID is checked by
3904 gxv_just_check_max_gid().
3905 (gxv_just_classTable_entry_validate): Conditionalize
3906 unvalidated variables; `setMark', `dontAdvance',
3907 `markClass', `currentClass'.
3909 2011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3911 [gxvalid] Preparation to fix gcc4.6 compiler warnings.
3913 * src/gxvalid/gxvcommn.h (GXV_LOAD_TRACE_VARS): New macro to
3914 conditionalize the variable which is only used for trace messages.
3915 Automatically set by FT_DEBUG_LEVEL_TRACE.
3916 (GXV_LOAD_UNUSED_VARS): New macro to conditionalize the loading of
3917 unvalidated variables. Undefined by default to calm gcc4.6 warning.
3918 (GXV_ValidatorRec.{min_gid,max_gid}): New variables to hold defined
3919 GID ranges, for the comparison of GID ranges in different subtables.
3921 2011-06-08 Werner Lemberg <wl@gnu.org>
3923 [autofit] Remove unused structure member.
3925 * src/autofit/afhints.h (AF_SegmentRec): Remove `contour'.
3926 * src/autofit/aflatin.c (af_latin_hints_compute_segments),
3927 src/autofit/aflatin2.c (af_latin2_hints_compute_segments): Updated.
3929 2011-05-30 Werner Lemberg <wl@gnu.org>
3931 Fix g++ 4.6 compilation.
3933 * src/autofit/afhints.c (af_glyph_hints_dump_segments,
3934 af_glyph_hints_dump_edges): Use cast.
3936 2011-05-30 Werner Lemberg <wl@gnu.org>
3938 Fix gcc 4.6 compiler warnings.
3940 * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Use casts and
3941 remove unused variables.
3942 * src/autofit/aflatin.c (af_latin_hints_compute_edges): Comment out
3944 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `height_org'
3945 and `width_org' conditionalized.
3947 2011-05-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3949 [mac] Conditionalize the inclusion of `AvailabilityMacros.h'.
3951 The native SDK on earliest Mac OS X (10.0-10.1) did not have
3952 `AvailabilityMacros.h'. To prevent the inclusion of missing
3953 header file, ECANCELED (introduced in 10.2) in POSIX header
3954 file <errno.h> is checked to detect the system version.
3956 * include/freetype/config/ftconfig.h: Conditionalize the
3957 inclusion of `AvailabilityMacros.h'.
3958 * builds/unix/ftconfig.in: Ditto.
3959 * builds/vms/ftconfig.h: Ditto.
3961 2011-05-27 Werner Lemberg <wl@gnu.org>
3963 [autofit] Improve tracing of hinting process.
3965 * src/autofit/aflatin.c (af_latin_hint_edges): Add tracing message
3968 2011-05-26 Werner Lemberg <wl@gnu.org>
3970 [autofit] Fix trace message.
3972 * src/autofit/aflatin.c (af_latin_hint_edges): Show correct value in
3975 2011-05-24 Daniel Zimmermann <netzimme@googlemail.com>
3977 Reduce warnings for MS Visual Studio 2010.
3979 * src/autofit/afhints.c (af_glyph_hints_get_num_segments,
3980 af_glyph_hints_get_segment_offset) [!FT_DEBUG_AUTOFIT]: Provide
3982 * src/cff/cffgload.c (cff_slot_load): Add cast.
3983 * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Use proper
3986 2011-05-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3988 Automake component `builds/unix/install-sh' is removed.
3990 * builds/unix/install-sh: Removed. It is not needed to
3991 include repository, because autogen.sh installs it.
3992 * builds/unix/.gitignore: Register install-sh.
3994 2011-05-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
3996 [autofit] Make trace message for CJK bluezone more verbose.
3998 2011-05-08 Just Fill Bugs <mozbugbox@yahoo.com.au>
3999 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4001 [autofit] Add bluezones for CJK Ideographs.
4003 To remove extrema of vertical strokes of CJK Ideographs at
4004 low resolution and make the top and bottom horizontal stems
4005 aligned, bluezones for CJK Ideographs are calculated from
4006 sample glyphs. At present, vertical bluezones (bluezones
4007 to align vertical stems) are disabled by default. For detail, see
4008 https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00070.html
4009 https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00092.html
4010 https://lists.gnu.org/archive/html/freetype-devel/2011-05/msg00001.html
4012 * include/freetype/internal/fttrace.h: New trace component `afcjk'.
4013 * src/autofit/afcjk.h (AF_CJK{Blue,Axis,Metric}Rec): Add CJK version
4014 for AF_Latin{Blue,Axis,Metric}Rec.
4015 (af_cjk_metrics_check_digits): Ditto, shared with Indic module.
4016 (af_cjk_metrics_init_widths): Ditto.
4017 (af_cjk_metrics_init): Take AF_CJKMetric instead of AF_LatinMetric.
4018 (af_cjk_metrics_scale): Ditto (declaration).
4019 (af_cjk_hints_init): Ditto (declaration).
4020 (af_cjk_hints_apply): Ditto (declaration).
4021 * src/autofit/afcjk.c (af_cjk_metrics_scale): Ditto (body).
4022 (af_cjk_hints_init): Ditto (body).
4023 (af_cjk_hints_apply): Ditto (body).
4024 (af_cjk_metrics_init_widths): Duplicate af_latin_metrics_init_widths.
4025 (af_cjk_metrics_check_digits): Duplicate af_latin_metrics_check_digits.
4026 (af_cjk_metrics_init): Call CJK bluezone initializer.
4027 (af_cjk_metrics_scale_dim): Add code to scale bluezones.
4028 (af_cjk_hints_compute_blue_edges): New function, CJK version of
4029 af_latin_hints_compute_blue_edges.
4030 (af_cjk_metrics_init_blues): New function, CJK version of
4031 af_latin_metrics_init_blues.
4032 (af_cjk_hint_edges): Add code to align the edge stems to blue zones.
4034 * src/autofit/afindic.c (af_indic_metrics_init): Take AF_CJKMetric
4035 instead of AF_LatinMetric, and initialize as af_cjk_metrics_init.
4036 However bluezones are not initialized.
4037 (af_indic_metrics_scale): Take AF_CJKMetric instead of AF_LatinMetric.
4038 (af_indic_hints_init): Ditto.
4039 (af_indic_hints_apply): Ditto.
4041 * docs/CHANGES: Note about CJK bluezone support.
4043 2011-05-06 Werner Lemberg <wl@gnu.org>
4045 [autofit] Remove unused struct member.
4047 * src/autofit/aflatin.h (AF_LatinAxis): Remove `control_overshoot'.
4049 2011-05-04 Werner Lemberg <wl@gnu.org>
4051 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Simplify.
4053 2011-05-01 Just Fill Bugs <mozbugbox@yahoo.com.au>
4054 Werner Lemberg <wl@gnu.org>
4056 [autofit] Add more debugging functions.
4058 * src/autofit/afhints.c (af_glyph_hints_get_num_segments,
4059 af_glyph_hints_get_segment_offset): New functions.
4061 2011-05-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4063 Add new option `--disable-mmap' to configure script.
4065 * builds/unix/configure.raw: New option `--disable-mmap'
4066 is added. It is for the developers to simulate the systems
4067 without mmap() (like 4.3BSD, minix etc) on POSIX systems.
4069 2011-04-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4071 [truetype] Always recalculate the sfnt table checksum.
4073 * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Recalculate
4074 the sfnt table checksum even if non-zero value is written in
4075 the TrueType font header. Some bad PDF generators write
4076 wrong values. For details see examples and benchmark tests
4077 of the latency by recalculation:
4078 https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00091.html
4079 https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00096.html
4081 2011-04-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4083 [truetype] Register a set of tricky fonts, NEC FA family.
4085 * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids):
4086 Add 8 checksum sets for NEC FA family. For the tricky fonts
4087 without some tables (e.g. NEC FA fonts lack cvt table),
4088 extra check is added to assure that a zero-length table in the
4089 registry is not included in the font.
4091 2011-04-29 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4093 [truetype] Fix a bug in the sfnt table checksum getter.
4095 * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Check the
4096 return value of face->goto_table() correctly.
4098 2011-04-28 Werner Lemberg <wl@gnu.org>
4100 [autofit] Improve tracing messages.
4102 * src/autofit/aflatin.c (af_latin_metrics_init_blues,
4103 af_latin_align_linked_edge, af_latin_hint_edges): Do it.
4105 2011-04-25 Kan-Ru Chen <kanru@kanru.info>
4107 [truetype] Always check the checksum to identify tricky fonts.
4109 Because some PDF generators mangle the family name badly,
4110 the trickyness check by the checksum should be invoked always.
4112 https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00073.html
4114 * src/truetype/ttobjs.c (tt_check_trickyness): Even when
4115 tt_check_trickyness_family() finds no trickyness,
4116 tt_check_trickyness_sfnt_ids() is invoked.
4118 2011-04-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4120 [autofit] Add more Indic scripts with hanging baseline.
4122 * src/autofit/afindic.c (af_indic_uniranges): Tibetan, Limbu,
4123 Sundanese, Meetei Mayek, Syloti Nagri and Sharada scripts are
4126 2011-04-21 Behdad Esfahbod <behdad@behdad.org>
4128 Always ignore global advance.
4130 This makes FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH redundant,
4131 deprecated, and ignored. The new behavior is what every major user
4132 of FreeType has been requesting. Global advance is broken in many
4133 CJK fonts. Just ignoring it by default makes most sense.
4135 * src/truetype/ttdriver.c (tt_get_advances),
4136 src/truetype/ttgload.c (TT_Get_HMetrics, TT_Get_VMetrics,
4137 tt_get_metrics, compute_glyph_metrics, TT_Load_Glyph),
4138 src/truetype/ttgload.h: Implement it.
4140 * docs/CHANGES: Updated.
4142 2011-04-21 rainy6144 <rainy6144@gmail.com>
4144 [autofit] Blur CJK stems if too many to preserve their gaps.
4146 When there are too many stems to preserve their gaps in the
4147 rasterization of CJK Ideographs at a low resolution, blur the
4148 stems instead of showing clumped stems. See
4149 https://lists.gnu.org/archive/html/freetype-devel/2011-02/msg00011.html
4150 https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00046.html
4153 * src/autofit/afcjk.c (af_cjk_hint_edges): Store the position of
4154 the previous stem by `has_last_stem' and `last_stem_pos', and skip
4155 a stem if the current and previous stem are too near to preserve
4158 2011-04-18 Werner Lemberg <wl@gnu.org>
4160 Integrate autofitter debugging stuff.
4162 * devel/ftoption.h, include/freetype/config/ftoption.h
4163 (FT_DEBUG_AUTOFIT): New macro.
4165 * include/freetype/internal/fttrace.h: Add trace components for
4168 * src/autofit/aftypes.h (AF_LOG): Removed.
4169 (_af_debug): Removed.
4171 * src/autofit/*: s/AF_DEBUG/FT_DEBUG_AUTOFIT/.
4172 s/AF_LOG/FT_TRACE5/.
4173 Define FT_COMPONENT where necessary.
4175 2011-04-18 Werner Lemberg <wl@gnu.org>
4177 Synchronize config files.
4179 * builds/unix/ftconfig.in: Copy missing assembler routines from
4180 include/freetype/config/ftconfig.h.
4182 2011-04-13 Werner Lemberg <wl@gnu.org>
4184 [psaux] Fix Savannah bug #33047.
4186 Patch submitted by anonymous reporter.
4188 * src/psaux/psobjs.c (ps_table_add): Use FT_PtrDist for pointer
4191 2011-04-11 Kan-Ru Chen <kanru@kanru.info>
4193 Fix reading of signed integers from files on 64bit platforms.
4195 Previously, signed integers were converted to unsigned integers, but
4196 this can fail because of sign extension. For example, 0xa344a1eb
4197 becomes 0xffffffffa344a1eb.
4199 We now do the reverse which is always correct because the integer
4200 size is the same during the cast from unsigned to signed.
4202 * include/freetype/internal/ftstream.h, src/base/ftstream.c
4203 (FT_Stream_Get*): Replace with...
4204 (FT_Stream_GetU*): Functions which read unsigned integers.
4205 Update all macros accordingly.
4207 * src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Updated.
4209 2011-04-07 Werner Lemberg <wl@gnu.org>
4211 Update Unicode ranges for CJK autofitter; in particular, add Hangul.
4213 * src/autofit/afcjk.c (af_cjk_uniranges): Update to Unicode 6.0.
4215 2011-04-04 Werner Lemberg <wl@gnu.org>
4217 Fix formatting of autofit debug dumps.
4219 * src/autofit/afhints.c (af_glyph_hints_dump_points,
4220 af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Adjust
4223 2011-03-30 Werner Lemberg <wl@gnu.org>
4225 * src/autofit/aftypes.h (AF_OutlineRec): Removed, unused.
4227 2011-03-24 Werner Lemberg <wl@gnu.org>
4229 * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 256.
4230 This limit is given on p. 37 of Adobe Technical Note #5014.
4232 2011-03-23 Werner Lemberg <wl@gnu.org>
4234 * src/truetype/ttpload.c (tt_face_load_loca): Fix mismatch warning.
4236 2011-03-20 Werner Lemberg <wl@gnu.org>
4238 * src/sfnt/sfobjs.c (sfnt_open_font): Check number of TTC subfonts.
4240 2011-03-19 Werner Lemberg <wl@gnu.org>
4242 More C++ compilation fixes.
4244 * src/autofit/afhints.c (af_glyph_hints_dump_points,
4245 af_glyph_hints_dump_segments, af_glyph_hints_dump_edges)
4246 [__cplusplus]: Protect with `extern "C"'.
4248 2011-03-18 Werner Lemberg <wl@gnu.org>
4250 C++ compilation fixes.
4252 * src/autofit/aflatin.c (af_latin_hints_apply), src/autofit/afcjk.c
4253 (af_cjk_hints_apply): Use cast for `dim'.
4255 2011-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
4257 A better fix for Savannah bug #32671.
4259 * src/smooth/ftgrays.c (gray_render_conic): Clean up code and
4260 replace WHILE loop with a more natural DO-WHILE construct.
4262 2011-03-16 Werner Lemberg <wl@gnu.org>.
4264 * src/base/ftstroke.c (FT_StrokerRec): Remove unused `valid' field.
4265 Suggested by Graham Asher.
4267 2011-03-09 Werner Lemberg <wl@gnu.org>
4269 Make FT_Sfnt_Table_Info return the number of SFNT tables.
4271 * src/sfnt/sfdriver.c (sfnt_table_info): Implement it.
4272 * include/freetype/tttables.h: Update documentation.
4273 * docs/CHANGES: Updated.
4275 2011-03-07 Bram Tassyns <bramt@enfocus.be>
4277 [cff] Fix Savannah bug #27988.
4279 * src/cff/cffobjs.c (remove_style): New function.
4280 (cff_face_init): Use it to strip off the style part of the family
4283 2011-03-07 Werner Lemberg <wl@gnu.org>
4285 * docs/CHANGES: Updated.
4287 2011-03-07 Alexei Podtelezhnikov <apodtele@gmail.com>
4289 Quick fix for Savannah bug #32671.
4291 This isn't the optimal solution yet, but it restores the previous
4292 rendering quality (more or less).
4294 * src/smooth/ftgrays.c (gray_render_conic): Do more splitting.
4296 2011-03-06 Werner Lemberg <wl@gnu.org>
4298 Fix autohinting fallback.
4300 * src/base/ftobjs.c (FT_Load_Glyph): Assure that we only check TTFs,
4301 ignoring CFF-based OTFs.
4303 2011-02-27 Werner Lemberg <wl@gnu.org>
4305 Add AF_CONFIG_OPTION_USE_WARPER to control the autofit warper.
4307 * devel/ftoption.h, include/freetype/config/ftoption.h
4308 (AF_CONFIG_OPTION_USE_WARPER): New macro.
4309 * src/autofit/aftypes.h (AF_USE_WARPER): Remove.
4311 * src/autofit/*: s/AF_USE_WARPER/AF_CONFIG_OPTION_USE_WARPER/.
4313 * src/autofit/afwarp.c [!AF_CONFIG_OPTION_USE_WARPER]: Replace dummy
4314 variable assignment with a typedef.
4316 2011-02-26 Werner Lemberg <wl@gnu.org>
4318 [autofit] Slight simplifications.
4320 * src/autofit/aflatin.c (af_latin_hints_link_segments): Remove
4321 test which always returns false.
4322 (af_latin_hints_compute_blue_edges): Remove redundant assignment.
4324 2011-02-24 Werner Lemberg <wl@gnu.org>
4326 * docs/PROBLEMS: Mention rendering differences on different
4328 Suggested and worded by Jason Owen <jason.a.owen@gmail.com>.
4330 2011-02-24 Werner Lemberg <wl@gnu.org>
4332 [autofit] Comment out unused code.
4334 * src/autofit/aflatin.c, src/autofit/aflatin2.c
4335 (af_latin_hints_compute_edges): Do it.
4337 2011-02-24 Werner Lemberg <wl@gnu.org>
4339 * src/autofit/afhints.h (AF_GlyphHints): Remove unused field.
4341 2011-02-20 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4343 [cache] Fix an off-by-one bug in `FTC_Manager_RemoveFaceID'.
4344 Found by <ychen1392001@yahoo.com.cn>, see detail in
4346 https://lists.gnu.org/archive/html/freetype/2011-01/msg00023.html
4348 * src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Check the node
4349 buckets[cache->p + cache->mask] too.
4351 2011-02-19 Kevin Kofler <kevin.kofler@chello.at>
4353 Fall back to autohinting if a TTF/OTF doesn't contain any bytecode.
4354 This is Savannah patch #7471.
4356 * src/base/ftobjs.c (FT_Load_Glyph): Implement it.
4358 2011-02-19 John Tytgat <John.Tytgat@esko.com>
4360 [cff] Fix subset prefix removal.
4361 This is Savannah patch #7465.
4363 * src/cff/cffobjs.c (remove_subset_prefix): Update length after
4364 subset prefix removal.
4366 2011-02-13 Bradley Grainger <bgrainger@logos.com>
4368 Add inline assembly version of FT_MulFix for MSVC.
4370 * include/freetype/config/ftconfig.h: Ported the FT_MulFix_i386
4371 function from GNU inline assembly syntax (see #ifdef __GNUC__ block
4372 above) to MASM syntax for Microsoft Visual C++.
4374 2011-02-13 Bradley Grainger <bgrainger@logos.com>
4376 Add project and solution files in Visual Studio 2010 format.
4378 * builds/win32/.gitignore: Ignore user-specific cache files.
4379 * builds/win32/vc2010/: Add VS2010 project & solution files, created
4380 by upgrading builds/win32/vc2008/freetype.vcproj.
4381 * objs/.gitignore: Ignore Visual Studio output files.
4383 2011-02-01 Werner Lemberg <wl@gnu.org>
4385 * src/autofit/afdummy.c: Include `aferrors.h'.
4386 Problem reported by Chris Liddell <chris.liddell@artifex.com>.
4388 2011-02-01 Werner Lemberg <wl@gnu.org>
4390 [cff] Ignore unknown operators in charstrings.
4391 Patch suggested by Miles.Lau <sunliang_liu@foxitsoftware.com>.
4393 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Emit tracing
4394 message for unknown operators and continue instead of exiting with a
4397 2011-02-01 Werner Lemberg <wl@gnu.org>
4399 [truetype] FT_LOAD_PEDANTIC now affects `prep' and `fpgm' also.
4401 * src/truetype/ttgload.c (tt_loader_init): Handle
4403 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep,
4404 tt_size_init_bytecode, tt_size_ready_bytecode): New argument to
4405 handle pedantic mode.
4406 * src/truetype/ttobjs.h: Updated.
4408 2011-01-31 Werner Lemberg <wl@gnu.org>
4410 [truetype] Protect jump instructions against endless loops.
4412 * src/truetype/interp.c (DO_JROT, DO_JMPR, DO_JROF): Exit with error
4415 2011-01-31 Werner Lemberg <wl@gnu.org>
4417 [truetype] Improve handling of invalid references.
4419 * src/truetype/interp.c: Set even more TT_Err_Invalid_Reference
4420 error codes only if pedantic hinting is active. At the same time,
4421 try to provide sane values which hopefully allow useful
4422 continuation. Exception to this is CALL and LOOPCALL – due to
4423 possible stack corruption it is necessary to bail out.
4425 2011-01-31 Werner Lemberg <wl@gnu.org>
4427 [truetype] Improve handling of stack underflow.
4429 * src/truetype/ttinterp.c (TT_RunIns, Ins_FLIPPT, Ins_DELTAP,
4430 Ins_DELTAC): Exit with error only if `pedantic_hinting' is set.
4431 Otherwise, try to do something sane.
4433 2011-01-30 Werner Lemberg <wl@gnu.org>
4435 * src/sfnt/ttmtx.c (tt_face_load_hmtx): Fix tracing message.
4437 2011-01-30 LIU Sun-Liang <sunliang_liu@foxitsoftware.com>
4439 [truetype]: Fix behaviour of MIAP for invalid arguments.
4441 * src/truetype/ttinterp.c (Ins_MIAP): Set reference points even in
4444 2011-01-18 Werner Lemberg <wl@gnu.org>
4446 [truetype] Fix handling of MIRP instruction.
4448 Thanks to Greg Hitchcock who explained the issue.
4450 * src/truetype/ttinterp.c (Ins_MIRP): Replace a `>=' operator with
4451 `>' since the description in the specification is incorrect.
4452 This fixes, for example, glyph `two' in font `Helvetica Neue LT Com
4453 65 medium' at 15ppem.
4455 2011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4457 Fix ARM assembly code in include/freetype/config/ftconfig.h.
4459 * include/freetype/config/ftconfig.h (FT_MulFix_arm):
4460 Copy the maintained code from builds/unix/ftconfig.in.
4461 Old GNU binutils could not accept the reduced syntax
4462 `orr %0, %2, lsl #16'. Un-omitted syntax like RVCT,
4463 `orr %0, %0, %2, lsl #16' is better. Reported by
4464 Johnson Y. Yan. The bug report by Qt developers is
4467 https://bugreports.qt.io/browse/QTBUG-6521
4469 2011-01-15 Werner Lemberg <wl@gnu.org>
4471 [raster] Make bbox handling the same as with Microsoft's rasterizer.
4473 Right before B/W rasterizing, the bbox gets simply rounded to
4474 integers. This fixes, for example, glyph `three' in font `Helvetica
4475 Neue LT Com 65 Medium' at 11ppem.
4477 Thanks to Greg Hitchcock who explained this behaviour.
4479 * src/raster/ftrend1.c (ft_raster1_render): Implement it.
4481 2011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4483 Copy -mcpu=* & -march=* options from CFLAGS to LDFLAGS.
4485 * builds/unix/configure.raw: Consider recent gcc-standard
4486 flags to specify architecture in CFLAGS & LDFLAGS
4487 harmonization. Requested by Savannah bug #32114, to
4488 support multilib feature of BuildRoot SDK correctly.
4490 2011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4492 Fix off-by-one bug in CFLAGS & LDFLAGS harmonizer.
4494 * builds/unix/configure.raw: Some important options that
4495 included in CFLAGS but not in LDFLAGS are copied to
4496 LDFLAGS, but the last option in CFLAGS was not checked.
4498 2011-01-13 Werner Lemberg <wl@gnu.org>
4500 [raster] Add undocumented drop-out rule to the other bbox side also.
4502 * src/raster/ftraster.c (Vertical_Sweep_Drop,
4503 Horizontal_Sweep_Drop): Implement it.
4505 2011-01-13 Werner Lemberg <wl@gnu.org>
4507 [raster] Reduce jitter value.
4509 This catches a rendering problem with glyph `x' from Tahoma at
4510 10ppem. It seems that the increase of the precision in the change
4511 from 2009-06-11 makes a larger jitter value unnecessary.
4513 * src/raster/ftraster.c (Set_High_Precision): Implement it.
4515 2011-01-13 Werner Lemberg <wl@gnu.org>
4517 [raster] Handle drop-outs at glyph borders according to Microsoft.
4519 If a drop-out rule would switch on a pixel outside of the glyph's
4520 bounding box, use the right (or top) pixel instead. This is an
4521 undocumented feature, but some fonts like `Helvetica Neue LT Com 65
4522 Medium' heavily rely on it.
4524 Thanks to Greg Hitchcock who explained this behaviour.
4526 * src/raster/ftraster.c (Vertical_Sweep_Drop,
4527 Horizontal_Sweep_Drop): Implement it.
4529 2011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4531 [cache] Fix Savannah bug #31923, patch drafted by Harsha.
4533 When a node comparator changes the cached nodes during the
4534 search of a node matching with queried properties, the
4535 pointers obtained before the function should be updated to
4536 prevent the dereference to freed or reallocated nodes.
4537 To minimize the rescan of the linked list, the update is
4538 executed when the comparator notifies the change of cached
4539 nodes. This change depends previous change:
4540 38b272ffbbdaae276d636aec4ef84af407d16181
4542 * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Rescan the
4543 top node if the cached nodes are changed.
4544 * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto.
4546 2011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4548 [cache] Notice if a cache query induced the node list change.
4550 Some node comparators (comparing the cache node contents and the
4551 properties specified by the query) can flush the cache node to
4552 prevent the cache inflation. The change may invalidate the pointers
4553 to the node obtained before the node comparison, so it should be
4554 noticed to the caller. The problem caused by the cache node
4555 changing is reported by Harsha, see Savannah bug #31923.
4557 * src/cache/ftccache.h (FTC_Node_CompareFunc): Add new argument
4558 `FT_Bool* list_changed' to indicate the change of the cached nodes
4560 (FTC_CACHE_LOOKUP_CMP): Watch the change of the cached nodes by
4562 (FTC_CACHE_TRYLOOP_END): Take new macro argument `_list_changed'
4563 and update it when `FTC_Manager_FlushN' flushes any nodes.
4565 * src/cache/ftccback.h (ftc_snode_compare): Updated to fit with new
4566 FTC_Node_CompareFunc type.
4567 (ftc_gnode_compare): Ditto.
4569 * src/cache/ftcbasic.c: Include FT_INTERNAL_OBJECTS_H to use
4571 (ftc_basic_gnode_compare_faceid): New argument `FT_Bool*
4572 list_changed' to indicate the change of the cache nodes (anyway, it
4575 * src/cache/ftccmap.c: Include FT_INTERNAL_OBJECTS_H to use
4577 (ftc_cmap_node_compare): New argument `FT_Bool* list_changed' to
4578 indicate the change of the cache nodes (anyway, it is always FALSE).
4579 (ftc_cmap_node_remove_faceid): Ditto.
4581 * src/cache/ftccache.c (FTC_Cache_NewNode): Pass a NULL pointer to
4582 `FTC_CACHE_TRYLOOP_END', because the result is not needed.
4583 (FTC_Cache_Lookup): Watch the change of the cache nodes by
4585 (FTC_Cache_RemoveFaceID): Ditto.
4587 * src/cache/ftcglyph.c: Include FT_INTERNAL_OBJECTS_H to use
4589 (ftc_gnode_compare): New argument `FT_Bool* list_changed' to
4590 indicate the change of the cache nodes (anyway, it is always FALSE).
4591 (FTC_GNode_Compare): New argument `FT_Bool* list_changed' to be
4592 passed to `ftc_gnode_compare'.
4593 * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto.
4595 * src/cache/ftcsbits.c (ftc_snode_compare): New argument `FT_Bool*
4596 list_changed' to indicate the change of the cache nodes, anyway. It
4597 is updated by `FTC_CACHE_TRYLOOP'.
4598 (FTC_SNode_Compare): New argument `FT_Bool* list_changed' to be
4599 passed to `ftc_snode_compare'.
4600 * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto.
4602 2011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4604 [cache] Fit `FTC_GNode_Compare' to `FTC_Node_CompareFunc'.
4606 * src/cache/ftcglyph.h (FTC_GNode_Compare): Add the 3rd
4607 argument `FTC_Cache cache' to fit FTC_Node_CompareFunc
4609 * src/cache/ftcglyph.c (FTC_GNode_Compare): Ditto. Anyway,
4610 `cache' is not used by its child `ftc_gnode_compare'.
4612 2011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4614 [cache] Deduplicate the code to get the top node by a hash.
4616 There are several duplicated code fragments getting the top node
4617 from a cache by a given hash, like:
4619 idx = hash & cache->mask;
4620 if ( idx < cache->p )
4621 idx = hash & ( cache->mask * 2 + 1 );
4622 pnode = cache->buckets + idx;
4624 To remove duplication, a cpp-macro to do same work
4625 `FTC_NODE__TOP_FOR_HASH' is introduced. For non-inlined
4626 configuration, non-`ftc_get_top_node_for_hash' is also introduced.
4628 * src/cache/ftccache.h (FTC_NODE__TOP_FOR_HASH): Declare
4629 and implement inlined version.
4630 (FTC_CACHE_LOOKUP_CMP): Use `FTC_NODE__TOP_FOR_HASH'.
4631 * src/cache/ftccache.c (ftc_get_top_node_for_hash): Non-inlined
4633 (ftc_node_hash_unlink): Use `FTC_NODE__TOP_FOR_HASH'.
4634 (ftc_node_hash_link): Ditto.
4635 (FTC_Cache_Lookup): Ditto.
4637 2011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4639 [cache] inline-specific functions are conditionalized.
4641 * src/cache/ftcglyph.c (FTC_GNode_Compare): Conditionalized for
4642 inlined configuration. This function is a thin wrapper of
4643 `ftc_gnode_compare' for inlined `FTC_CACHE_LOOKUP_CMP' (see
4644 `nodecmp' argument). Under non-inlined configuration,
4645 `ftc_gnode_compare' is invoked by `FTC_Cache_Lookup', via
4646 `FTC_Cache->clazz.node_compare'.
4648 * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto.
4649 * src/cache/ftcsbits.c (FTC_SNode_Compare): Ditto, for
4650 `ftc_snode_compare'.
4651 * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto.
4653 2011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4655 [cache] Correct a type mismatch under non-inlined config.
4657 * src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): `FTC_GCache_Lookup'
4658 takes the node via a pointer `FTC_Node*', differently from cpp-macro
4659 `FTC_CACHE_LOOKUP_CMP'.
4661 2011-01-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4663 Update Jamfile to include Bzip2 support.
4665 * Jamfile: Include src/bzip2 to project.
4666 Comments for lzw, gzip, bzip2 are changed to clarify that
4667 they are for compressed PCF fonts, not others.
4668 (e.g. compressed BDF fonts are not supported yet)
4670 2011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4672 Update Symbian project files to include Bzip2 support.
4674 Currently, it provides `FT_Stream_OpenBzip2' that returns
4675 unimplemented error always, to prevent unresolved symbol
4676 error for the applications designed for Unix systems.
4678 * builds/symbian/bld.inf: Include ftbzip2.h.
4679 * builds/symbian/freetype.mmp: Include ftbzip2.c.
4681 2011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4683 Update classic MacOS makefiles to include Bzip2 support.
4685 Currently, it provides `FT_Stream_OpenBzip2' that returns
4686 unimplemented error always, to prevent unresolved symbol
4687 error for the applications designed for Unix systems.
4689 * builds/mac/FreeType.m68k_cfm.make.txt: Include ftbzip2.c.o.
4690 * builds/mac/FreeType.m68k_far.make.txt: Ditto.
4691 * builds/mac/FreeType.ppc_carbon.make.txt: Include ftbzip2.c.x.
4692 * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
4694 2011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4696 Update Amiga makefiles to include Bzip2 support.
4698 Currently, it provides `FT_Stream_OpenBzip2' that returns
4699 unimplemented error always, to prevent unresolved symbol
4700 error for the applications designed for Unix systems.
4702 * builds/amiga/makefile: Include bzip2.ppc.o built from ftbzip2.c.
4703 * builds/amiga/makefile.os4: Include bzip2.o built from ftbzip2.c.
4704 * builds/amiga/smakefile: Ditto.
4706 2011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4708 Update pkg-config tools to reflect Bzip2 support.
4710 * builds/unix/freetype-config.in: Include `-lbz2' to
4711 --libs output, if built with Bzip2 support.
4712 * builds/unix/freetype2.in: Ditto.
4714 2011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4716 * builds/unix/configure.raw: Remove `SYSTEM_BZ2LIB' macro.
4718 SYSTEM_ZLIB is used to switch the builtin zlib source
4719 or system zlib source out of FreeType2. But ftbzip2
4720 module has no builtin bzip2 library and always requires
4721 system bzip2 library. Thus SYSTEM_BZ2LIB is always yes,
4724 2011-01-03 Werner Lemberg <wl@gnu.org>
4726 */rules.mk: Handle `*pic.c' files.
4728 2010-12-31 Werner Lemberg <wl@gnu.org>
4730 * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 64.
4731 Problem reported by Tom Bishop <wenlin@wenlin.com>.
4733 2010-12-31 Werner Lemberg <wl@gnu.org>
4735 Improve bzip2 support.
4737 * include/freetype/ftmoderr.h: Add bzip2.
4739 * docs/INSTALL.ANY, docs/CHANGES: Updated.
4741 * src/pcf/README: Updated.
4742 * include/freetype/internal/pcftypes.h: Obsolete, removed.
4744 2010-12-31 Joel Klinghed <the_jk@yahoo.com>
4746 Add bzip2 compression support to handle *.pcf.bz2 files.
4748 * builds/unix/configure.raw: Test for libbz2 library.
4750 * devel/ftoption.h, include/freetype/config/ftoption.h
4751 (FT_CONFIG_OPTION_USE_BZIP2): Define.
4752 * include/freetype/config/ftheader.h (FT_BZIP2_H): Define.
4754 * include/freetype/ftbzip2.h: New file.
4756 * src/bzip2/*: New files.
4758 * src/pcf/pcf.h: s/gzip_/comp_/.
4759 * src/pcf/pcfdrivr.c: Include FT_BZIP2_H.
4761 (PCF_Face_Init): Handle bzip2 compressed files.
4763 * docs/formats.txt, modules.cfg: Updated.
4765 2010-12-25 Harsha <mm.harsha@gmail.com>
4767 Apply Savannah patch #7422.
4769 If we encounter a space in a string then the sbit buffer is NULL,
4770 height and width are 0s. So the check in ftc_snode_compare will
4771 always pass for spaces (comparison with 255). Here the comments
4772 above the condition are proper but the implementation is not. When
4773 we create an snode I think it is the proper way to initialize the
4774 width to 255 and then put a check for being equal to 255 in snode
4777 * src/cache/ftcsbits.c (FTC_SNode_New): Initialize sbit widths with
4779 (ftc_snode_compare): Fix condition.
4781 2010-12-13 Werner Lemberg <wl@gnu.org>
4783 Fix parameter handling of `FT_Set_Renderer'.
4784 Reported by Kirill Tishin <siege@bk.ru>.
4786 * src/base/ftobjs.c (FT_Set_Renderer): Increment `parameters'.
4788 2010-12-09 Werner Lemberg <wl@gnu.org>
4790 [cff] Allow `hlineto' and `vlineto' without arguments.
4792 We simply ignore such instructions. This is invalid, but it doesn't
4793 harm; and indeed, there exist such subsetted fonts in PDFs.
4795 Reported by Albert Astals Cid <aacid@kde.org>.
4797 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
4798 [cff_op_hlineto]: Ignore instruction if there aren't any arguments
4801 2010-11-28 Werner Lemberg <wl@gnu.org>
4803 * Version 2.4.4 released.
4804 =========================
4807 Tag sources with `VER-2-4-4'.
4809 * docs/CHANGES: Updated.
4811 * docs/VERSION.DLL: Update documentation and bump version number to
4814 * README, Jamfile (RefDoc),
4815 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
4816 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
4817 builds/win32/visualc/freetype.dsp,
4818 builds/win32/visualc/freetype.vcproj,
4819 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
4820 builds/win32/visualce/freetype.vcproj,
4821 builds/win32/visualce/index.html,
4822 builds/wince/vc2005-ce/freetype.vcproj,
4823 builds/wince/vc2005-ce/index.html,
4824 builds/wince/vc2008-ce/freetype.vcproj,
4825 builds/wince/vc2008-ce/index.html: s/2.4.3/2.4.4/, s/243/244/.
4827 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
4829 * builds/unix/configure.raw (version_info): Set to 12:2:6.
4831 2010-11-28 Alexei Podtelezhnikov <apodtele@gmail.com>
4833 [ftsmooth]: Minor code simplification.
4835 * src/smooth/ftgrays (gray_render_cubic): Do only one comparison
4838 2010-11-26 Johnson Y. Yan <yinsen_yan@foxitsoftware.com>
4840 [truetype] Better multi-threading support.
4842 * src/truetype/ttinterp.c (TT_Load_Context): Reset glyph zone
4845 2010-11-23 John Tytgat <John.Tytgat@esko.com>
4847 * src/psaux/t1decode.c (t1_decoder_parse_charstring): Expand
4848 start_point, check_points, add_point, add_point1, close_contour
4850 Remove add_contour macro.
4851 Return error code from t1_builder_start_point and
4852 t1_builder_check_points when there was one (instead of returning 0).
4854 2010-11-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4856 [truetype] Identify the tricky fonts by cvt/fpgm/prep checksums.
4857 Some Latin TrueType fonts are still expected to be unhinted.
4858 Fix Savannah bug #31645.
4860 * src/truetype/ttobjs.c (tt_check_trickyness): Divided to...
4861 (tt_check_trickyness_family): this checking family name, and
4862 (tt_check_trickyness_sfnt_ids): this checking cvt/fpgm/prep.
4863 (tt_get_sfnt_checksum): Function to retrieve the sfnt checksum
4864 for specified subtable even if cleared by lazy PDF generators.
4865 (tt_synth_sfnt_checksum): Function to calculate the checksum.
4867 2010-11-18 Werner Lemberg <wl@gnu.org>
4869 [truetype] Fix `loca' handling for inconsistent number of glyphs.
4870 Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.
4872 * src/truetype/ttpload.c (tt_face_load_loca): While sanitizing,
4873 handle case where `loca' is the last table in the font.
4875 2010-11-18 Werner Lemberg <wl@gnu.org>
4877 [sfnt] Ignore all errors while loading `OS/2' table.
4878 Suggested by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.
4880 * src/sfnt/sfobjs.c (sfnt_load_face): Do it.
4882 2010-11-18 Johnson Y. Yan <yinsen_yan@foxitsoftware.com>
4884 [type1] Fix matrix normalization.
4886 * src/type1/t1load.c (parse_font_matrix): Handle sign of scaling
4889 2010-11-18 Werner Lemberg <wl@gnu.org>
4891 [type1] Improve guard against malformed data.
4892 Based on a patch submitted by Johnson Y. Yan
4893 <yinsen_yan@foxitsoftware.com>
4895 * src/type1/t1load.c (read_binary_data): Check `size'.
4897 2010-11-17 Werner Lemberg <wl@gnu.org>
4899 [sfnt] While tracing, output table checksums also.
4901 * src/sfnt/ttload.c (tt_face_load_font_dir): Do it.
4903 2010-11-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4905 [UVS] Fix `find_variant_selector_charmap', Savannah bug #31545.
4907 Since 2010-07-04, `find_variant_selector_charmap' returns
4908 the first cmap subtable always under rogue-compatible
4909 configuration, it causes NULL pointer dereference and
4910 make UVS-related functions crashed.
4912 * src/base/ftobjs.c (Fix find_variant_selector_charmap):
4913 Returns UVS cmap correctly.
4915 2010-11-01 Alexei Podtelezhnikov <apodtele@gmail.com>
4917 [ftsmooth] Improve rendering.
4919 * src/smooth/ftsmooth.c (gray_render_conic): Since version 2.4.3,
4920 cubic deviations have been estimated _after_ UPSCALE, whereas
4921 conic ones have been evaluated _before_ UPSCALE, which produces
4922 inferior rendering results. Fix this.
4923 Partially undo change from 2010-10-15 by using ONE_PIXEL/4; this has
4924 been tested with demo images sent to the mailing list. See
4926 https://lists.gnu.org/archive/html/freetype-devel/2010-10/msg00055.html
4928 and later mails in this thread.
4930 2010-10-28 Werner Lemberg <wl@gnu.org>
4932 [ftraster] Minor fixes.
4934 Reported by Tom Bishop <wenlin@wenlin.com>.
4936 * src/raster/ftraster.c (ULong): Remove unused typedef.
4937 (TWorker): Remove unused variable `precision_mask'.
4939 2010-10-28 Werner Lemberg <wl@gnu.org>
4941 [ftraster] Fix rendering.
4943 Problem reported by Tom Bishop <wenlin@wenlin.com>; see
4944 thread starting with
4946 https://lists.gnu.org/archive/html/freetype/2010-10/msg00049.html
4948 * src/raster/ftraster.c (Line_Up): Replace FMulDiv with SMulDiv
4949 since the involved multiplication exceeds 32 bits.
4951 2010-10-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4953 Revert a change of `_idx' type in `FTC_CACHE_LOOKUP_CMP'.
4955 * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Revert
4956 the type of `_idx' from FT_PtrDist (by previous change)
4957 to original FT_UFast, to match with FT_CacheRec.
4959 2010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4961 [cache] Change the hash types to FT_PtrDist.
4963 On LLP64 platforms (e.g. Win64), FT_ULong (32-bit)
4964 variables are inappropriate to calculate hash values
4965 from the memory address (64-bit). The hash variables
4966 are extended from FT_ULong to FT_PtrDist and new
4967 hashing macro functions are introduced. The hash
4968 values on 16-bit memory platforms are changed, but
4969 ILP32 and LP64 are not changed. The hash value in
4970 the cache subsystem is not reverted to the memory
4971 address, so using signed type FT_PtrDist is safe.
4973 * src/cache/ftccache.h (_FTC_FACE_ID_HASH): New hash
4974 function to replace `FTC_FACE_ID_HASH' for portability.
4975 * src/cache/ftcmanag.h (FTC_SCALER_HASH): Replace
4976 `FTC_FACE_ID_HASH' by `_FTC_FACE_ID_HASH'.
4977 * src/cache/ftccmap.c (FTC_CMAP_HASH): Ditto.
4979 * src/cache/ftccache.h (FTC_NodeRec): The type of the
4980 member `hash' is changed from FT_UInt32 to FT_PtrDist.
4982 * src/cache/ftccache.h (FTC_Cache_Lookup): The type of the
4983 argument `hash' is changed from FT_UInt32 to FT_PtrDist.
4984 (FTC_Cache_NewNode): Ditto.
4985 * src/cache/ftccache.c (ftc_cache_add): Ditto.
4986 (FTC_Cache_Lookup): Ditto. (FTC_Cache_NewNode): Ditto.
4987 * src/cache/ftcglyph.h (FTC_GCache_Lookup): Ditto.
4988 * src/cache/ftcglyph.c (FTC_GCache_Lookup): Ditto.
4990 * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): The type
4991 of the internal variable `hash' is changed to FT_PtrDist
4992 from FT_UInt32. (FTC_ImageCache_LookupScaler): Ditto.
4993 (FTC_SBitCache_Lookup): Ditto.
4994 (FTC_SBitCache_LookupScaler): Ditto.
4995 * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto.
4996 * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Ditto.
4997 Also the type of the internal variable `_idx' is changed to
4998 FT_PtrDist from FT_UFast for better pointer calculation.
5000 2010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5002 [cache] Hide internal macros incompatible with LLP64.
5004 `FT_POINTER_TO_ULONG', `FTC_FACE_ID_HASH', and
5005 `FTC_IMAGE_TYPE_HASH' are enclosed by
5006 FT_CONFIG_OPTION_OLD_INTERNALS and hidden from
5009 For the history of these macros, see the investigation:
5010 https://lists.gnu.org/archive/html/freetype/2010-10/msg00022.html
5012 2010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5014 Change the type of `FT_MEM_VAL' from FT_ULong to FT_PtrDist.
5016 On LLP64 platforms (e.g. Win64), unsigned long (32-bit)
5017 cannot cover the memory address (64-bit). `FT_MEM_VAL' is
5018 used for hashing only and not dereferred, so using signed
5019 type FT_PtrDist is safe.
5021 * src/base/ftdbgmem.c (FT_MEM_VAL): Change the type of the
5022 return value from FT_ULong to FT_PtrDist.
5023 (ft_mem_table_resize): The type of hash is changed to
5024 FT_PtrDist. (ft_mem_table_get_nodep): Ditto.
5026 2010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5028 Replace "%lx" for memory address by "%p", LLP64 platforms.
5030 On LLP64 platforms (e.g. Win64), long (32-bit) cannot cover
5031 the memory address (64-bit). Also the casts from the pointer
5032 type to long int should be removed to preserve the address
5035 * src/raster/ftraster.c (New_Profile): Replace "%lx" by "%p".
5036 (End_Profile) Ditto.
5037 * src/truetype/ttinterp.c (Init_Context): Ditto.
5039 2010-10-15 Alexei Podtelezhnikov <apodtele@gmail.com>
5041 Fix thinko in spline flattening.
5043 FT_MAX_CURVE_DEVIATION is dependent on the value of ONE_PIXEL.
5045 * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): Remove it and
5046 replace it everywhere with ONE_PIXEL/8.
5048 2010-10-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5050 [raccess] Skip unrequired resource access rules by Darwin VFS.
5052 When a resource fork access rule by Darwin VFS could open the
5053 resource fork but no font is found in it, the rest of rules
5054 by Darwin VFS are skipped. It reduces the warnings of the
5055 deprecated resource fork access method by recent Darwin kernel.
5056 Fix MacPorts ticket #18859:
5057 https://trac.macports.org/ticket/18859
5059 * src/base/ftobjs.c (load_face_in_embedded_rfork):
5060 When `FT_Stream_New' returns FT_Err_Cannot_Open_Stream, it
5061 means that the file is possible to be `fopen'-ed but zero-sized.
5062 Also there is a case that the resource fork is not zero-sized,
5063 but no supported font exists in it. If a rule by Darwin VFS
5064 falls into such cases, there is no need to try other Darwin VFS
5065 rules anymore. Such cases are marked by vfs_rfork_has_no_font.
5066 If it is TRUE, the Darwin VFS rules are skipped.
5068 2010-10-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5070 [raccess] Grouping resource access rules based on Darwin VFS.
5072 MacOS X/Darwin kernel supports a few tricky methods to access
5073 a resource fork via ANSI C or POSIX interface. Current resource
5074 fork accessor tries all possible methods to support all kernels.
5075 But if a method could open a resource fork but no font is found,
5076 there is no need to try other methods older than tested method.
5077 To determine whether the rule index is for Darwin VFS, a local
5078 function `ftrfork.c::raccess_rule_by_darwin_vfs' is introduced.
5079 To use this function in ftobjs.c etc but it should be inlined,
5080 it is exposed by ftbase.h.
5082 * src/base/ftrfork.c (FT_RFork_Rule): New enum type to identify
5083 the rules to access the resource fork.
5084 (raccess_guess_rec): New structure to bind the rule function and
5086 (FT_Raccess_Guess): The list of the rule functions is replaced by
5087 (raccess_guess_table): This. This is exposed to be used by other
5088 intra module functions.
5089 (raccess_rule_by_darwin_vfs): A function to return a boolean
5090 if the rule specified by the rule index is based on Darwin VFS.
5092 2010-10-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5094 Prevent to open a FT_Stream for zero-sized file on non-Unix.
5096 builds/unix/ftsystem.c prevents to open an useless stream from
5097 zero-sized file and returns FT_Err_Cannot_Open_Stream, but the
5098 stream drivers for ANSI C, Amiga and VMS return useless streams.
5099 For cross-platform consistency, all stream drivers should act
5102 * src/base/ftsystem.c (FT_Stream_Open): If the size of the opened
5103 file is zero, FT_Err_Cannot_Open_Stream is returned.
5104 * builds/amiga/src/base/ftsystem.c (FT_Stream_Open): Ditto.
5105 * src/vms/ftsystem.c (FT_Stream_Open): Ditto.
5107 2010-10-12 Werner Lemberg <wl@gnu.org>
5109 [truetype] Fix Savannah bug #31310.
5111 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against
5112 invalid `runcnt' values.
5114 2010-10-08 Chris Liddell <chris.liddell@artifex.com>
5116 [sfnt] Fix Savannah bug #31275.
5118 * src/sfnt/ttpost.c: Include FT_INTERNAL_DEBUG_H.
5120 2010-10-06 Werner Lemberg <wl@gnu.org>
5122 [truetype] Improve error handling of `SHZ' bytecode instruction.
5123 Problem reported by Chris Evans <scarybeasts@gmail.com>.
5125 * src/truetype/ttinterp.c (Ins_SHZ): Check `last_point'.
5127 2010-10-05 Werner Lemberg <wl@gnu.org>
5129 Fix Savannah bug #31253.
5130 Patch submitted by an anonymous reporter.
5132 * configure: Use `awk' instead of `sed' to manipulate output of `ls
5135 2010-10-03 Werner Lemberg <wl@gnu.org>
5137 * Version 2.4.3 released.
5138 =========================
5141 Tag sources with `VER-2-4-3'.
5143 * docs/CHANGES: Updated.
5145 * docs/VERSION.DLL: Update documentation and bump version number to
5148 * README, Jamfile (RefDoc),
5149 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5150 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5151 builds/win32/visualc/freetype.dsp,
5152 builds/win32/visualc/freetype.vcproj,
5153 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5154 builds/win32/visualce/freetype.vcproj,
5155 builds/win32/visualce/index.html,
5156 builds/wince/vc2005-ce/freetype.vcproj,
5157 builds/wince/vc2005-ce/index.html,
5158 builds/wince/vc2008-ce/freetype.vcproj,
5159 builds/wince/vc2008-ce/index.html: s/2.4.2/2.4.3/, s/242/243/.
5161 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
5163 * builds/unix/configure.raw (version_info): Set to 12:1:6.
5165 2010-10-03 Werner Lemberg <wl@gnu.org>
5167 Avoid `configure' issues with symbolic links.
5168 Based on a patch from Alexander Stohr <Alexander.Stohr@gmx.de>.
5170 * configure: Compare directories using `ls -id'.
5171 Check existence of `reference' subdirectory before creating it.
5173 2010-10-02 Werner Lemberg <wl@gnu.org>
5175 [sfnt] Fix Savannah bug #31088 (sort of).
5177 * src/sfnt/ttload.c (tt_face_load_maxp): Always allocate at least 64
5180 2010-10-02 Werner Lemberg <wl@gnu.org>
5182 [smooth] Fix splitting of cubics for negative values.
5184 Reported by Róbert Márki <gsmiko@gmail.com>; see
5185 https://lists.gnu.org/archive/html/freetype/2010-09/msg00019.html.
5187 * src/smooth/ftgrays.c (gray_render_cubic): Fix thinko.
5189 2010-10-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5191 [truetype] Fix Savannah bug #31040.
5193 * src/truetype/ttinterp.c (free_buffer_in_size): Remove.
5194 (TT_RunIns): Updated.
5196 2010-09-20 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5198 [sfnt] Make error message filling NULL names less verbose.
5200 * src/sfnt/ttpost.c (load_format_20): Showing 1 summary message
5201 when we fill `post' names by NULL, instead of per-entry message.
5203 2010-09-20 Graham Asher <graham.asher@btinternet.com>
5204 David Bevan <david.bevan@pb.com>
5206 [smooth] Fix and improve spline flattening.
5208 This fixes the flattening of cubic, S-shaped curves and speeds up
5209 the handling of both the conic and cubic arcs.
5211 See the discussions on the freetype-devel mailing list in late
5212 August and September 2010 for details.
5214 * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): New macro.
5215 (TWorker): Remove `conic_level' and `cubic_level' elements.
5216 (gray_render_conic): Simplify algorithm.
5217 (gray_render_cubic): New algorithm; details are given in the code
5219 (gray_convert_glyph): Remove heuristics.
5221 2010-09-19 Werner Lemberg <wl@gnu.org>
5225 * src/cff/cffload.c (cff_charset_compute_cids): `charset->sids[i]'
5227 (cff_index_access_element): Don't use additions in comparison.
5228 * src/sfnt/ttpost.c (load_format_20): Make `post_limit' of type
5230 Don't use additions in comparison.
5231 Improve tracing messages.
5232 (load_format_25, load_post_names): Make `post_limit' of type
5235 2010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5237 [cff] Truncate the element length at the end of the stream.
5238 See Savannah bug #30975.
5240 * src/cff/cffload.c (cff_index_access_element): `off2', the offset
5241 to the next element is truncated at the end of the stream to prevent
5242 invalid I/O. As `off1', the offset to the requested element has
5243 been checked by `FT_STREAM_SEEK', `off2' should be checked
5246 2010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5248 [cff] Ignore CID > 0xFFFFU.
5249 See Savannah bug #30975.
5251 * src/cff/cffload.c (cff_charset_compute_cids): Ignore CID if
5252 greater than 0xFFFFU. CFF font spec does not mention maximum CID in
5253 the font, but PostScript and PDF spec define that maximum CID is
5256 2010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5258 [cff] Make trace message in` cff_charset_load' verbose.
5259 See Savannah bug #30975.
5261 * src/cff/cffload.c (cff_charset_load): Report the original `nleft'
5262 and truncated `nleft'.
5264 2010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5266 [cff] Correct `max_cid' from CID array length to max CID.
5267 See Savannah bug #30975.
5269 * src/cff/cffload.c (cff_charset_compute_cids): Don't increment
5270 max_cid after detecting max CID. The array CFF_Charset->cids is
5271 allocated by max_cid + 1.
5272 (cff_charset_cid_to_gindex): Permit CID is less than or equal to
5273 CFF_Charset->max_cid.
5274 * src/cff/cffobjs.c (cff_face_init): FT_Face->num_glyphs is
5275 calculated as CFF_Charset->max_cid + 1.
5277 2010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5279 [truetype] Sanitize the broken offsets in `loca'.
5280 See Savannah bug #31040.
5282 * src/truetype/ttpload.c (tt_face_get_location): If `pos1', the
5283 offset to the requested entry in `glyf' exceeds the end of the
5284 table, return offset=0, length=0. If `pos2', the offset to the next
5285 entry in `glyf' exceeds the end of the table, truncate the entry
5286 length at the end of `glyf' table.
5288 2010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5290 [sfnt] Prevent overrunning in `post' table parser.
5291 See Savannah bug #31040.
5293 * src/sfnt/ttpost.c (load_post_names): Get the length of `post'
5294 table and pass the limit of `post' table to `load_format_20' and
5296 (load_format_20): Stop the parsing when we reached at the limit of
5297 `post' table. If more glyph names are required, they are filled by
5300 2010-09-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5302 [truetype] Don't duplicate size->twilight structure to be freed.
5303 See Savannah bug #31040 for detail.
5305 * src/truetype/ttinterp.c (free_buffer_in_size): Don't duplicate
5306 FT_GlyphZoneRec size->twilight to be freed. If duplicated,
5307 `FT_FREE' erases the duplicated pointers only and leave original
5308 pointers. They can cause the double-free crash when the burst
5309 errors occur in TrueType interpreter and `free_buffer_in_size' is
5312 2010-09-15 Werner Lemberg <wl@gnu.org>
5314 Make bytecode debugging with FontForge work again.
5316 * src/truetype/ttinterp.c (TT_RunIns): Don't call
5317 `free_buffer_in_size' in case of error if a debugger is active.
5319 2010-09-14 Werner Lemberg <wl@gnu.org>
5321 Improve tracing messages.
5323 * src/truetype/ttinterp.c (TT_RunIns): Improve wording of tracing
5325 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Add
5327 * src/truetype/ttgload.c (tt_loader_init): Add tracing message.
5328 * src/cache/ftcsbits.c (ftc_snode_load): Emit tracing message if
5329 glyph doesn't fit into a small bitmap container.
5331 2010-09-13 Werner Lemberg <wl@gnu.org>
5333 Fix minor issues reported by <muktha.narayan@wipro.com>.
5335 * src/autofit/aflatin.c (af_latin_compute_stem_width): Remove
5336 redundant conditional check.
5337 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Ditto.
5338 * src/cff/cffload.c (cff_encoding_load): Remove conditional check
5339 which always evaluates to `true'.
5340 * src/pshinter/pshalgo.c (ps_glyph_interpolate_strong_points):
5342 * src/truetype/ttinterp.c (Ins_IUP): Ditto.
5343 * src/cid/cidgload.c (cid_slot_load_glyph): Don't check for NULL if
5344 value is already dereferenced.
5345 * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix check of `face'.
5347 2010-08-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5349 Ignore the environmental setting of LIBTOOL.
5350 Patch is suggested by Adrian Bunk, to prevent unexpected
5351 reflection of environmental LIBTOOL. See:
5352 https://savannah.nongnu.org/patch/?7290
5354 * builds/unix/unix-cc.in: LIBTOOL is unconditionally set to
5355 $(FT_LIBTOOL_DIR)/libtool. FT_LIBTOOL_DIR is set to $(BUILD_DIR)
5357 * configure: When configured for the building out of source tee,
5358 FT_LIBTOOL_DIR is set to $(OBJ_DIR).
5360 2010-08-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5362 [truetype] Decrease the trace level catching the interpreter error.
5364 * src/truetype/ttinterp.c (TT_RunIns): Decrease the trace level
5365 showing the error when the interpreter returns with an error,
5366 from` FT_TRACE7' to `FT_TRACE1'.
5368 2010-08-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5370 [truetype] Prevent bytecode reuse after the interpretation error.
5372 * src/truetype/ttinterp.c (free_buffer_in_size): New function to
5373 free the buffer allocated during the interpretation of this glyph.
5374 (TT_RunIns): Unset FT_Face->size->{cvt_ready,bytecode_ready} if
5375 an error occurs in the bytecode interpretation. The interpretation
5376 of invalid bytecode may break the function definitions and referring
5377 them in later interpretation is danger. By unsetting these flags,
5378 `fpgm' and `prep' tables are executed again in next interpretation.
5380 This fixes Savannah bug #30798, reported by Robert Święcki.
5382 2010-08-29 Werner Lemberg <wl@gnu.org>
5384 [ftraster] Pacify compiler.
5386 * src/raster/ftraster.c (ft_black_new) [_STANDALONE_]: `memory' is
5389 2010-08-29 Werner Lemberg <wl@gnu.org>
5391 [cff] Allow SIDs >= 65000.
5393 * src/cff/cffload.c (cff_charset_load): Fix change from 2009-03-20:
5394 The threshold for SIDs is not applicable here. I misinterpreted the
5395 `SID values 65000 and above are available for implementation use'
5396 sentence in the CFF specification.
5398 Problem reported by Ivan Ninčić <inincic@pdftron.com>.
5400 2010-08-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5402 Force hinting when the font lacks its familyname.
5404 In Type42 or Type11 font embedded in PostScript & PDF, TrueType sfnt
5405 stream may lack `name' table because they are not required. Hinting
5406 for nameless fonts is safer for PDFs including embedded Chinese
5407 fonts. Written by David Bevan, see:
5409 https://lists.gnu.org/archive/html/freetype-devel/2010-08/msg00021.html
5410 https://lists.freedesktop.org/archives/poppler/2010-August/006310.html
5412 * src/truetype/ttobjs.c (tt_check_trickyness): If a NULL pointer by
5413 nameless font is given, TRUE is returned to enable hinting.
5415 2010-08-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5417 Register yet another tricky TrueType font.
5419 * src/truetype/ttobjs.c (tt_check_trickyness): Add `HuaTianKaiTi?',
5420 a Kaishu typeface paired with `HuaTianSongTi?' by Huatian
5421 Information Industry.
5423 2010-08-17 Teijo Kinnunen <Teijo.Kinnunen@nuance.com>
5425 [cache] Fix Savannah bug #30788.
5427 * src/cache/ftccache.c (FTC_Cache_Clear): Check `cache->buckets' for
5430 2010-08-10 Werner Lemberg <wl@gnu.org>
5432 Try to fix Savannah bug #30717 (and probably #30719 too).
5434 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Add another
5435 overflow test for `width' and `height'.
5437 2010-08-06 Werner Lemberg <wl@gnu.org>
5439 * Version 2.4.2 released.
5440 =========================
5443 Tag sources with `VER-2-4-2'.
5445 * docs/CHANGES: Updated.
5447 * docs/VERSION.DLL: Update documentation and bump version number to
5450 * README, Jamfile (RefDoc),
5451 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5452 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5453 builds/win32/visualc/freetype.dsp,
5454 builds/win32/visualc/freetype.vcproj,
5455 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5456 builds/win32/visualce/freetype.vcproj,
5457 builds/win32/visualce/index.html,
5458 builds/wince/vc2005-ce/freetype.vcproj,
5459 builds/wince/vc2005-ce/index.html,
5460 builds/wince/vc2008-ce/freetype.vcproj,
5461 builds/wince/vc2008-ce/index.html: s/2.4.1/2.4.2/, s/241/242/.
5463 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
5465 * builds/unix/configure.raw (version_info): Set to 12:0:6.
5467 2010-08-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5469 Fix Savannah bug #30648.
5471 * src/base/ftobjs.c (FT_Done_Library): Specify the order of font
5472 drivers during the face closing process. Type42 faces should be
5473 closed before TrueType faces, because a Type42 face refers to
5474 another internal TrueType face which is created from sfnt[] array on
5477 2010-08-06 Yuriy Kaminskiy <yumkam@mail.ru>
5479 [raster] Fix valgrind warning.
5481 * src/raster/ftraster.c (Decompose_Curve) <default>: Access point[0]
5482 only if we don't hit `limit'.
5484 2010-08-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5486 Fix Savannah bug #30658.
5488 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check that the total
5489 length of collected POST segments does not overrun the allocated
5492 2010-08-06 Yuriy Kaminskiy <yumkam@mail.ru>
5494 Fix conditional usage of FT_MulFix_i386.
5495 With -ansi flag, gcc does not define `i386', only `__i386__'.
5497 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in:
5500 2010-08-05 Werner Lemberg <wl@gnu.org>
5502 [truetype] Fix Savannah bug #30657.
5504 * src/truetype/ttinterp.c (BOUNDSL): New macro.
5505 Change `BOUNDS' to `BOUNDSL' where appropriate.
5507 * src/truetype/ttinterp.h (TT_ExecContextRec): Fix type of
5510 2010-08-05 Werner Lemberg <wl@gnu.org>
5512 [type42] Fix Savannah bug #30656.
5514 * src/type42/t42parse.c (t42_parse_sfnts): Protect against negative
5518 2010-08-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5520 [cff] Don't use any values in decoder after parsing error.
5522 * src/cff/cffgload.c (cff_slot_load): Skip the evaluations
5523 of the values in decoder, if `cff_decoder_parse_charstrings'
5526 2010-08-04 Werner Lemberg <wl@gnu.org>
5528 Fix Savannah bug #30644.
5530 * src/base/ftstream.c (FT_Stream_EnterFrame): Fix comparison.
5532 2010-08-04 Werner Lemberg <wl@gnu.org>
5534 `make devel' fails if FT_CONFIG_OPTION_OLD_INTERNALS is set.
5536 * devel/ftoption.h: Synchronize with
5537 include/freetype/config/ftoption.h.
5539 2010-08-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5541 [cff] Improve stack overflow test.
5543 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Check stack
5544 after execution of operations too.
5546 2010-07-18 Werner Lemberg <wl@gnu.org>
5548 Add reference counters and to FT_Library and FT_Face objects.
5550 * include/freetype/freetype.h (FT_Reference_Face): New function.
5551 * include/freetype/ftmodapi.h (FT_Reference_Library): New function.
5553 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec,
5554 FT_LibraryRec): New field `refcount'.
5556 * src/base/ftobjs.c (FT_Open_Face, FT_New_Library): Handle
5558 (FT_Reference_Face, FT_Reference_Library): Implement new functions.
5559 (FT_Done_Face, FT_Done_Library): Handle `refcount'.
5561 * docs/CHANGES: Updated.
5563 2010-07-18 Werner Lemberg <wl@gnu.org>
5565 * Version 2.4.1 released.
5566 =========================
5569 Tag sources with `VER-2-4-1'.
5571 * docs/CHANGES: Updated.
5573 * docs/VERSION.DLL: Update documentation and bump version number to
5576 * README, Jamfile (RefDoc),
5577 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5578 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5579 builds/win32/visualc/freetype.dsp,
5580 builds/win32/visualc/freetype.vcproj,
5581 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5582 builds/win32/visualce/freetype.vcproj,
5583 builds/win32/visualce/index.html,
5584 builds/wince/vc2005-ce/freetype.vcproj,
5585 builds/wince/vc2005-ce/index.html,
5586 builds/wince/vc2008-ce/freetype.vcproj,
5587 builds/wince/vc2008-ce/index.html: s/2.4.0/2.4.1/, s/240/241/.
5589 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
5591 * builds/unix/configure.raw (version_info): Set to 11:1:5.
5593 2010-07-17 Werner Lemberg <wl@gnu.org>
5595 [cff] Final try to fix `hintmask' and `cntrmask' limit check.
5597 Problem reported by Tobias Wolf <towolf@gmail.com>.
5599 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
5600 <cff_op_hintmask>: Sigh. I'm apparently too silly to fix this
5601 correctly in less than three tries.
5603 2010-07-12 Werner Lemberg <wl@gnu.org>
5605 * Version 2.4.0 released.
5606 =========================
5609 Tag sources with `VER-2-4-0'.
5611 * docs/CHANGES: Updated.
5613 * docs/VERSION.DLL: Update documentation and bump version number to
5616 * README, Jamfile (RefDoc),
5617 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5618 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5619 builds/win32/visualc/freetype.dsp,
5620 builds/win32/visualc/freetype.vcproj,
5621 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5622 builds/win32/visualce/freetype.vcproj,
5623 builds/win32/visualce/index.html,
5624 builds/wince/vc2005-ce/freetype.vcproj,
5625 builds/wince/vc2005-ce/index.html,
5626 builds/wince/vc2008-ce/freetype.vcproj,
5627 builds/wince/vc2008-ce/index.html: s/2.3.12/2.4.0/, s/2312/240/.
5629 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 4.
5630 (FREETYPE_PATCH): Set to 0.
5632 * builds/unix/configure.raw (version_info): Set to 11:0:5.
5634 2010-07-12 Werner Lemberg <wl@gnu.org>
5636 Remove C++ warnings.
5638 */*: Initialize pointers where necessary to make g++ happy.
5640 2010-07-12 malc <av1474@comtv.ru>
5641 Richard Henderson <rth@redhat.com>
5643 Fix type-punning issues with C++.
5645 * include/freetype/internal/ftmemory.h (FT_ASSIGNP) [__cplusplus]:
5646 Emulate a `typeof' operator with an inline template which uses
5649 2010-07-11 Werner Lemberg <wl@gnu.org>
5651 Fix C++ compilation issue.
5653 * src/tools/apinames.c (names_dump) <OUTPUT_WATCOM_LBC>: Fix
5654 type of `dot' variable.
5656 2010-07-10 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5658 Fix another case reported in Savannah bug #30373.
5659 Permit a face for Type1, Type42 and CFF without charmap,
5660 patch by Tor Andersson.
5662 * src/type1/t1objs.c (T1_Face_Init): Reset the error if it
5663 is FT_Err_No_Unicode_Glyph_Name.
5664 * src/type42/t42objs.c (T42_Face_Init): Ditto.
5665 * src/cff/cffobjs.c (cff_face_init): Ditto.
5667 2010-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5669 Use defined macros to set {platform,encoding}_id.
5671 * src/bdf/bdfdrivr.c: Include ttnameid.h and use macros to
5672 set charmap.{platform,encoding}_id.
5673 * src/pcf/pcfdrivr.c: Ditto.
5674 * src/winfonts/winfnt.c: Ditto.
5675 * src/type1/t1objs.c: Ditto.
5676 * src/type42/t42objs.c: Ditto.
5677 * src/cff/cffobjs.c: Ditto.
5678 * src/pfr/pfrobjs.c: Ditto.
5680 2010-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5682 Fix Savannah bug #30373.
5683 Too serious check of errors by `FT_CMap_New' since 2010-07-04
5684 is fixed. Reported by Tor Andersson.
5686 * include/freetype/fterrdef.h
5687 (PSnames_Err_No_Unicode_Glyph_Name): New error code to
5688 indicate the Unicode charmap synthesis failed because
5689 no Unicode glyph name is found.
5691 * src/psnames/psmodule.c (ps_unicodes_init): Return
5692 PSnames_Err_No_Unicode_Glyph_Name when no Unicode glyph name
5693 is found in the font.
5694 * src/cff/cffcmap.c (cff_cmap_unicode_init): Return
5695 CFF_Err_No_Unicode_Glyph_Name when no SID is available.
5697 * src/type1/t1objs.c (T1_Face_Init): Proceed if `FT_CMap_New'
5698 is failed by the lack of Unicode glyph name.
5699 * src/type42/t42objs.c (T42_Face_Init): Ditto.
5700 * src/cff/cffobjs.c (cff_face_init): Ditto.
5702 2010-07-09 Ken Sharp <ken.sharp@artifex.com>
5704 Make ftraster.c compile in stand-alone mode with MSVC compiler.
5706 * src/raster/ftmisc.h (FT_Int64) [_WIN32, _WIN64]: Fix typedef
5707 since there is no `inttypes.h' for MSVC.
5709 2010-07-08 Werner Lemberg <wl@gnu.org>
5711 [truetype] Fix Savannah bug #30361.
5713 * src/truetype/ttinterp.c (Ins_IUP): Fix bounds check.
5715 2010-07-06 Werner Lemberg <wl@gnu.org>
5719 * src/cff/cffload.c (cff_index_get_pointers): Initialize
5722 2010-07-05 Eugene A. Shatokhin <spectre@ispras.ru>
5724 Fix Savannah bug #27648.
5726 * src/base/ftobjs.c (ft_remove_renderer, FT_Add_Module): Call
5727 `raster_done' only if we have an outline glyph format.
5729 2010-07-05 Werner Lemberg <wl@gnu.org>
5731 Fix Savannah bug #30030.
5733 * builds/win32/*/freetype.vcproj: Add ftxf86.c.
5735 2010-07-05 Werner Lemberg <wl@gnu.org>
5737 [cff] Next try to fix `hintmask' and `cntrmask' limit check.
5739 Problem reported by malc <av1474@comtv.ru>.
5741 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
5742 <cff_op_hintmask>: It is possible that there is just a single byte
5743 after the `hintmask' or `cntrmask', e.g., a `return' instruction.
5745 2010-07-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5747 Restrict the number of the charmaps in a rogue-compatible mode.
5748 Fix for Savannah bug #30059.
5750 * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Replace `16' the
5751 minimum character code passed by a legacy rogue client by...
5752 * include/freetype/config/ftoption.h (FT_MAX_CHARMAP_CACHEABLE):
5753 This. It is undefined when FT_CONFIG_OPTION_OLD_INTERNALS is
5754 undefined (thus the rogue client compatibility is not required).
5756 * src/cff/cffobjs.c (cff_face_init): Abort the automatic
5757 selection or synthesis of Unicode cmap subtable when the charmap
5758 index exceeds FT_MAX_CHARMAP_CACHEABLE.
5759 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Issue error message
5760 when the charmap index exceeds FT_MAX_CHARMAP_CACHEABLE.
5762 * src/base/ftobjs.c (find_unicode_charmap): When Unicode charmap
5763 is found after FT_MAX_CHARMAP_CACHEABLE, ignore it and search
5765 (find_variant_selector_charmap): When UVS charmap is found after
5766 FT_MAX_CHARMAP_CACHEABLE, ignore it and search earlier one.
5767 (FT_Select_Charmap): When a charmap matching with requested
5768 encoding but after FT_MAX_CHARMAP_CACHEABLE, ignore and search
5770 (FT_Set_Charmap): When a charmap matching with requested
5771 charmap but after FT_MAX_CHARMAP_CACHEABLE, ignore and search
5773 (FT_Get_Charmap_Index): When a requested charmap is found
5774 after FT_MAX_CHARMAP_CACHEABLE, return the inverted charmap
5777 2010-07-04 Werner Lemberg <wl@gnu.org>
5779 TrueType hinting is no longer patented.
5781 * include/freetype/config/ftoption.h, devel/ftoption.h
5782 (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Define.
5783 (TT_CONFIG_OPTION_UNPATENTED_HINTING): Undefine.
5785 * docs/CHANGES, docs/INSTALL, include/freetype/freetype.h: Updated.
5786 * docs/TRUETYPE, docs/PATENTS: Removed.
5788 2010-07-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5790 Check error value by `FT_CMap_New'.
5792 * src/cff/cffobjs.c (cff_face_init): Check error value by
5794 * src/pfr/pfrobjs.c (pfr_face_init): Ditto.
5795 * src/type1/t1objs.c (T1_Face_Init): Ditto.
5796 * src/type42/t42objs.c (T42_Face_Init): Ditto.
5798 2010-07-03 Werner Lemberg <wl@gnu.org>
5800 Make ftgrays.c compile stand-alone again.
5802 * src/smooth/ftgrays.c [_STANDALONE_]: Include `stddef.h'.
5803 (FT_INT_MAX, FT_PtrDist)[_STANDALONE_]: Define.
5805 2010-07-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5807 Additional fix for Savannah bug #30306.
5809 * src/base/ftobjs.c (Mac_Read_POST_Resource): If the type of the
5810 POST fragment is 0, the segment is completely ignored. The declared
5811 length of the segment is not cared at all. According to Adobe
5812 Technical Note 5040, type 0 segment is a comment only and should not
5813 be loaded for the interpreter. Reported by Robert Święcki.
5815 2010-07-01 Werner Lemberg <wl@gnu.org>
5817 [truetype] Protect against code range underflow.
5819 * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Don't allow
5822 2010-07-01 Werner Lemberg <wl@gnu.org>
5824 [truetype] Add rudimentary tracing for bytecode instructions.
5826 * src/truetype/ttinterp.c (opcode_name) [FT_DEBUG_LEVEL_TRACE]: New
5828 (TT_RunIns): Trace opcodes.
5830 2010-06-30 Werner Lemberg <wl@gnu.org>
5832 [smooth] Fix Savannah bug #30263.
5834 * src/smooth/ftgrays.c (gray_render_span): Use cast to `unsigned
5835 int' to avoid integer overflow.
5837 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use smaller
5838 threshold values for `width' and `height'. This is not directly
5839 related to the bug fix but makes sense anyway.
5841 2010-07-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5843 Initial fix for Savannah bug #30306.
5845 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check `rlen', the
5846 length of fragment declared in the POST fragment header, and prevent
5847 an underflow in length calculation. Some fonts set the length to
5848 zero in spite of the existence of a following 16bit `type'.
5849 Reported by Robert Święcki.
5851 2010-07-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5853 Additional fix for Savannah bug #30248 and #30249.
5855 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the buffer size
5856 during gathering PFB fragments embedded in LaserWriter PS font for
5857 Macintosh. Reported by Robert Święcki.
5859 2010-06-30 Alexei Podtelezhnikov <apodtele@gmail.com>
5861 Minor optimizations by avoiding divisions.
5863 * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning):
5864 Replace divisions with multiplication in comparisons.
5866 2010-06-29 Werner Lemberg <wl@gnu.org>
5868 Fix minor tracing issues.
5870 * src/cff/cffgload.c, src/truetype/ttgload.c: Adjust tracing levels.
5872 2010-06-27 Werner Lemberg <wl@gnu.org>
5874 [cff] Really fix `hintmask' and `cntrmask' limit check.
5876 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
5877 <cff_op_hintmask>: Fix thinko and handle tracing also.
5879 2010-06-27 Werner Lemberg <wl@gnu.org>
5881 Fix valgrind warning.
5883 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Initialize
5886 2010-06-27 Werner Lemberg <wl@gnu.org>
5888 [cff] Fix memory leak.
5890 * src/cff/cffgload.c (cff_operator_seac): Free charstrings even in
5893 2010-06-27 Werner Lemberg <wl@gnu.org>
5895 [cff] Protect against invalid `hintmask' and `cntrmask' operators.
5897 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
5898 <cff_op_hintmask>: Ensure that we don't exceed `limit' while parsing
5899 the bit masks of the `hintmask' and `cntrmask' operators.
5901 2010-06-26 Werner Lemberg <wl@gnu.org>
5903 Fix PFR change 2010-06-24.
5905 * src/pfr/pfrgload.c (pfr_glyph_load_simple): Really protect against
5908 2010-06-26 Werner Lemberg <wl@gnu.org>
5910 Improve PFR tracing messages.
5912 * src/pfr/pfrgload.c (pfr_glyph_load_rec): Emit tracing messages for
5913 simple and compound glyph offsets.
5915 2010-06-26 Werner Lemberg <wl@gnu.org>
5917 Fix last PFR change.
5919 * src/pfr/pfrobjs.c (pfr_face_init): Fix rejection logic.
5921 2010-06-26 Werner Lemberg <wl@gnu.org>
5923 [sfnt] Fix Savannah bug #30262.
5925 * src/sfnt/ttload.c (tt_face_load_maxp): Limit `maxComponentDepth'
5926 arbitrarily to 100 to avoid stack exhaustion.
5928 2010-06-26 Werner Lemberg <wl@gnu.org>
5930 Add some memory checks (mainly for debugging).
5932 * src/base/ftstream.c (FT_Stream_EnterFrame): Exit with error
5933 if the frame size is larger than the stream size.
5935 * src/base/ftsystem.c (ft_ansi_stream_io): Exit with error if
5936 seeking a position larger than the stream size.
5938 2010-06-25 Werner Lemberg <wl@gnu.org>
5940 [pfr] Fix Savannah bug #30261.
5942 * src/pfr/pfrobjs.c (pfr_face_init): Reject fonts which contain
5943 neither outline nor bitmap glyphs.
5945 2010-06-25 Werner Lemberg <wl@gnu.org>
5947 [cff] Fix Savannah bug #30254.
5949 * src/cff/cffload.c (cff_index_get_pointers): Do sanity check for
5952 2010-06-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5954 Initial fix for Savannah bug #30248 and #30249.
5956 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the error during
5957 reading a PFB fragment embedded in LaserWriter PS font for Macintosh.
5958 Reported by Robert Święcki.
5960 2010-06-24 Werner Lemberg <wl@gnu.org>
5962 [pcf] Fix Savannah bug #30247.
5964 * src/pcf/pcfread.c (pcf_get_metrics): Disallow (invalid) fonts with
5967 2010-06-24 Graham Asher <graham.asher@btinternet.com>
5969 * src/smooth/ftgrays.c (gray_render_cubic): Fix algorithm.
5970 The previous version was too aggressive, as demonstrated in
5971 https://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00020.html.
5973 2010-06-24 Werner Lemberg <wl@gnu.org>
5975 */*: Use module specific error names where appropriate.
5977 2010-06-24 Werner Lemberg <wl@gnu.org>
5979 [sfnt] Fix Savannah bug #30236.
5981 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Improve check for pointer
5984 2010-06-24 Werner Lemberg <wl@gnu.org>
5986 [pfr] Fix Savannah bug #30235.
5988 * src/pfr/pfrgload.c (pfr_glyph_load_simple): Protect against
5989 invalid indices if there aren't any coordinates for indexing.
5991 2010-06-24 Werner Lemberg <wl@gnu.org>
5993 [bdf]: Font properties are optional.
5995 * src/bdf/bdflib.c (_bdf_readstream): Use special error code to
5996 indicate a redo operation.
5997 (_bdf_parse_start): Handle `CHARS' keyword here too and pass current
5998 input line to `_bdf_parse_glyph'.
6000 2010-06-23 Werner Lemberg <wl@gnu.org>
6002 [bdf] Fix Savannah bug #30220.
6004 * include/freetype/fterrdef.h
6005 (BDF_Err_Missing_Fontboundingbox_Field): New error code.
6007 * src/bdf/bdflib.c (_bdf_parse_start): Check for missing
6008 `FONTBOUNDINGBOX' field.
6009 Avoid memory leak if there are multiple `FONT' lines (which is
6010 invalid but doesn't hurt).
6012 2010-06-21 Werner Lemberg <wl@gnu.org>
6014 [pfr] Fix Savannah bug #30168.
6016 * src/pfr/pfrgload.c (pfr_glyph_load_compound): Limit the number of
6017 subglyphs to avoid endless recursion.
6019 2010-06-20 Werner Lemberg <wl@gnu.org>
6021 [psaux] Fix Savannah bug #30145.
6023 * src/psaux/psobjs.c (t1_builder_add_contour): Protect against
6024 `outline == NULL' which might happen in invalid fonts.
6026 2010-06-19 Werner Lemberg <wl@gnu.org>
6028 [bdf] Fix Savannah bug #30135.
6030 * src/bdf/bdflib.c (_bdf_list_join): Don't modify value in static
6032 (_bdf_parse_glyph): Avoid memory leak in case of error.
6034 2010-06-15 Werner Lemberg <wl@gnu.org>
6036 [autofit] Fix Savannah bug #30108.
6038 * src/autofit/afglobal.c (af_face_globals_compute_script_coverage):
6039 Properly mask AF_DIGIT bit in comparison.
6041 2010-06-11 Werner Lemberg <wl@gnu.org>
6043 [pshinter] Fix Savannah bug #30106.
6045 Point numbers for FreeType's implementation of hinting masks are
6046 collected before the final number of points of a glyph has been
6047 determined; in particular, the code for handling the `endchar'
6048 opcode can reduce the number of points.
6050 * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Assure that
6051 `end_point' is not larger than `glyph->num_points'.
6053 2010-06-11 Werner Lemberg <wl@gnu.org>
6055 [cff]: Improve debugging output.
6057 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
6058 <cff_op_hintmask>: Implement it.
6060 2010-06-10 Graham Asher <graham.asher@btinternet.com>
6062 ftgrays: Speed up rendering of small cubic splines.
6064 * src/smooth/ftgrays.c (gray_render_cubic): Implement new,
6065 simplified algorithm to find out whether the spline can be replaced
6066 with two straight lines. See this thread for more:
6068 https://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00000.html
6070 2010-06-09 Werner Lemberg <wl@gnu.org>
6072 [cff] Fix Savannah bug #30082.
6074 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
6075 <cff_op_callothersubr>: Protect against stack underflow.
6077 2010-06-08 Werner Lemberg <wl@gnu.org>
6079 [cff] Fix Savannah bug #30053.
6081 * src/cff/cffparse.c (cff_parse_real): Handle border case where
6082 `fraction_length' has value 10.
6084 2010-06-07 Werner Lemberg <wl@gnu.org>
6086 Fix Savannah bug #30052.
6087 This bug has been introduced with commit 2415cbf3.
6089 * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Protect
6090 against endless loop in case of corrupted font header data.
6092 2010-05-26 Werner Lemberg <wl@gnu.org>
6094 Remove unused variable.
6097 * src/autofit/afhints.c (af_glyph_hints_reload): Remove unused
6098 variable `first' in first block.
6100 2010-05-22 Werner Lemberg <wl@gnu.org>
6102 Fix various memory problems found by linuxtesting.org.
6104 * src/base/ftgxval.c (FT_TrueTypeGX_Free, FT_ClassicKern_Free),
6105 src/base/ftotval.c (FT_OpenType_Free), src/base/ftpfr.c
6106 (ft_pfr_check): Check `face'.
6108 * src/base/ftobjs.c (FT_Get_Charmap_Index): Check `charmap' and
6110 (FT_Render_Glyph): Check `slot->face'.
6111 (FT_Get_SubGlyph_Info): Check `glyph->subglyphs'.
6113 2010-05-22 Werner Lemberg <wl@gnu.org>
6115 autofit: Remove dead code.
6116 Suggested by Graham.
6118 * src/autofit/afhints.c (af_glyph_hints_compute_inflections):
6120 (af_glyph_hints_reload): Remove third argument.
6123 2010-05-21 Bram Tassyns <bramt@enfocus.be>
6125 [cff] Fix Savannah bug #27987.
6127 * src/cff/cffobjs.c (remove_subset_prefix): New function.
6128 (cff_face_init): Use it to adjust `cffface->family_name'.
6130 2010-05-20 Werner Lemberg <wl@gnu.org>
6132 TrueType: Make FreeType ignore maxSizeOfInstructions in `maxp'.
6134 Acroread does the same.
6136 * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Call
6137 `Update_Max' to adjust size of instructions array if necessary and
6138 add a rough safety check.
6140 (load_truetype_glyph): Save `loader->byte_len' before recursive
6143 * src/truetype/ttinterp.h, src/truetype/ttinterp.c (Update_Max):
6144 Declare it as FT_LOCAL.
6146 2010-05-18 Hongbo Ni <hongbo@njstar.com>
6148 Apply Savannah patch #7196.
6150 * src/cff/cffgload.c (cff_slot_load): Prevent crash if CFF subfont
6151 index is out of range.
6153 2010-05-11 Werner Lemberg <wl@gnu.org>
6155 * docs/formats.txt: Give pointer to PCF documentation.
6156 Information provided by Alan Coopersmith
6157 <alan.coopersmith@oracle.com>.
6159 2010-05-10 Ken Sharp <ken.sharp@artifex.com>
6161 [psaux] Fix Savannah bug #29846.
6163 Previously we discovered fonts which used `setcurrentpoint' to set
6164 the initial point of a contour to 0,0. This caused FreeType to
6165 raise an error, because the `setcurrentpoint' operator is only
6166 supposed to be used with the results from an OtherSubr subroutine.
6168 This was fixed by simply ignoring the error and carrying on.
6170 Now we have found a font which uses setcurrentpoint to actually
6171 establish a non-zero point for a contour during the course of a
6172 glyph program. FWIW, these files may be produced by an application
6173 called `Intaglio' on the Mac, when converting TrueType fonts to
6176 The fix allows the new invalid behaviour, the old invalid behaviour
6177 and real proper usage of the operator to work the same way as Adobe
6178 interpreters apparently do.
6180 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make
6181 `setcurrentpoint' use the top two elements of the stack to establish
6182 unconditionally the current x and y coordinates.
6184 Make the `flex' subroutine handling (OtherSubr 0) put the current
6185 x,y coordinates onto the stack, instead of two dummy uninitialised
6188 2010-04-14 Ken Sharp <ken.sharp@artifex.com>
6190 [psaux] Fix Savannah bug #29444.
6192 * src/psaux/psobjs.c (t1_builder_start_point): Accept (invalid)
6193 `lineto' immediately after `hsbw', in accordance with Acrobat, GS,
6196 2010-04-14 Michał Cichoń <thedmd@artifexmundi.com>
6198 [psaux] Fix Savannah bug #27999.
6200 * src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID): Only remove
6201 selected entry, not all.
6203 2010-04-06 Jonathan Kew <jfkthame@gmail.com>
6205 [truetype] Add overflow check to `fvar' table.
6207 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis and instance
6210 2010-04-05 Ken Sharp <ken.sharp@artifex.com>
6212 [raster] Fix Savannah bug #29335.
6214 * src/raster/ftraster.c (Line_Up): Use slow multiplication to
6215 prevent overflow. This shouldn't have any serious impact on speed,
6218 2010-04-05 Werner Lemberg <wl@gnu.org>
6220 Add new function `FT_Library_SetLcdFilterWeights'.
6222 This is based on code written by Lifter
6223 <https://unixforum.org/index.php?showuser=11691>. It fixes
6224 FreeDesktop bug #27386.
6226 * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): New
6229 * include/freetype/ftlcdfil.h: Updated.
6231 * docs/CHANGES: Updated.
6233 2010-04-01 John Tytgat <John.Tytgat@esko.com>
6235 [truetype] Fix Savannah bug #29404.
6237 * src/truetype/ttgload.c: Revert change 2752bd1a (check on bit 1
6238 of `head' table of TrueType fonts).
6240 2010-03-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6242 Fix `multi build' for Tytgat's CFF driver improvement.
6244 * src/base/cffload.h (cff_index_get_name): Added.
6246 2010-03-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6248 Remove duplicated inclusion of `FT_OUTLINE_H' in ftobjs.c.
6250 * src/base/ftobjs.c: Remove 2nd inclusion of `FT_OUTLINE_H'.
6252 2010-03-11 Chris Liddell <chris.liddell@artifex.com>
6254 [raster] Fix Savannah bug #27442.
6256 * src/raster/ftraster.c (ft_black_reset): Fix `buffer_size'.
6258 2010-03-09 Werner Lemberg <wl@gnu.org>
6260 [cff] Remove unused variable.
6263 * src/cff/cffparse.c (cff_parse_real): Remove `rest'.
6265 2010-03-02 John Tytgat <John.Tytgat@esko.com>
6267 [cff] Improve CFF string (especially glyphname) lookup performance.
6269 We do this by avoiding memory allocation and file I/O. This is
6270 Savannah patch #7104.
6272 * src/cff/cfftypes.h: Include PS cmaps service and
6273 FT_INTERNAL_POSTSCRIPT_HINTS_H.
6274 (CFF_SubFontRec): Remove `num_local_subrs'.
6275 (CFF_FontRec): Add `num_strings', `strings', and `string_pool'
6277 Remove `string_index' and `num_global_subrs' fields.
6278 Use real types instead of `void' for `pshinter' and `psnames' fields.
6280 * src/cff/cffload.c: Don't include PS cmaps service.
6281 (cff_index_get_pointers): Add `pool' parameter which allows inserting
6282 an extra NUL character for each String INDEX entry.
6283 (cff_index_get_name): Make it a local function.
6284 (cff_index_get_string): New function.
6285 (cff_subfont_load): Updated.
6286 (cff_font_load): Initialize `num_strings', `strings', and
6287 `string_pool' fields in the `CFF_FontRec' structure.
6288 (cff_index_get_sid_string): Use `cff_index_get_string' instead of
6289 `cff_index_get_name'.
6290 (cff_font_done): Updated.
6292 * src/cff/cffload.h: Don't include PS cmaps service.
6293 (cff_index_get_string): Added.
6294 (cff_index_get_sid_string): Updated.
6296 * src/cff/cffobjs.c: Don't include PS cmaps service and
6297 FT_INTERNAL_POSTSCRIPT_HINTS_H.
6298 (cff_size_get_globals_funcs, cff_slot_init): Updated.
6299 (cff_face_init): Follow `cff_index_get_name',
6300 `cff_index_get_string', and `cff_index_get_sid_string' changes.
6302 * src/cff/cffcmap.c (cff_sid_free_glyph_name): Removed.
6303 (cff_sid_to_glyph_name): Use `cff_index_get_cid_string'.
6304 (cff_cmap_unicode_init): Updated.
6306 * src/cff/cffdrivr.c: Don't include PS cmap service.
6307 (cff_get_glyph_name): Avoid unnecessary lookup for POSTSCRIPT_CMAPS
6309 (cff_get_glyph_name, cff_ps_get_font_info, cff_get_ros): Follow API
6310 `cff_index_get_sid_string' change.
6311 (cff_get_name_index): Use `cff_index_get_string' instead of
6312 `cff_index_get_name'.
6314 * src/cff/cffgload.c: Don't include FT_INTERNAL_POSTSCRIPT_HINTS_H.
6315 (cff_decoder_init, cff_decoder_prepare): Updated.
6317 2010-02-27 Werner Lemberg <wl@gnu.org>
6320 Suggested by Behdad.
6322 * src/base/ftobjs.c (FT_Get_First_Char): Don't use a loop since we
6323 call FT_Get_Next_Char anyway if necessary.
6325 2010-02-26 Behdad Esfahbod <behdad@behdad.org>
6327 Improve handling of invalid glyph indices in char->index functions.
6329 * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Use a
6332 2010-02-18 Chris Liddell <chris.liddell@artifex.com>
6334 [truetype] Fix Savannah bug #28905.
6336 Initialize phantom points before calling the incremental interface
6337 to update glyph metrics.
6339 * src/truetype/ttgload.c (tt_get_metrics_incr_overrides)
6340 [FT_CONFIG_OPTION_INCREMENTAL]: New function, split off from...
6341 (tt_get_metrics): This.
6343 (load_truetype_glyph): Use tt_get_metrics_incr_overrides.
6345 ----------------------------------------------------------------------------
6347 Copyright 2010-2018 by
6348 David Turner, Robert Wilhelm, and Werner Lemberg.
6350 This file is part of the FreeType project, and may only be used, modified,
6351 and distributed under the terms of the FreeType project license,
6352 LICENSE.TXT. By continuing to use, modify, or distribute this file you
6353 indicate that you have read the license and understand and accept it
6358 version-control: never