12016-07-12 Werner Lemberg <wl@gnu.org> 2 3 * Version 2.6.5 released. 4 ========================= 5 6 7 Tag sources with `VER-2-6-5'. 8 9 This commit immediately follows `[mac] Fix ftexport.sym target in 10 Jamfile.' on a separate branch, which was then merged with master 11 after the release. 12 13 * include/freetype/config/ftoption.h 14 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Comment out. 15 16 * docs/VERSION.TXT: Add entry for version 2.6.5. 17 18 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, 19 builds/windows/vc2005/index.html, 20 builds/windows/vc2008/freetype.vcproj, 21 builds/windows/vc2008/index.html, 22 builds/windows/vc2010/freetype.vcxproj, 23 builds/windows/vc2010/index.html, 24 builds/windows/visualc/freetype.dsp, 25 builds/windows/visualc/freetype.vcproj, 26 builds/windows/visualc/index.html, 27 builds/windows/visualce/freetype.dsp, 28 builds/windows/visualce/freetype.vcproj, 29 builds/windows/visualce/index.html, 30 builds/wince/vc2005-ce/freetype.vcproj, 31 builds/wince/vc2005-ce/index.html, 32 builds/wince/vc2008-ce/freetype.vcproj, 33 builds/wince/vc2008-ce/index.html: s/2.6.4/2.6.5/, s/264/265/. 34 35 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5. 36 37 * builds/unix/configure.raw (version_info): Set to 18:5:12. 38 * CMakeLists.txt (VERSION_PATCH): Set to 5. 39 40 * docs/CHANGES: Updated. 41 422016-07-11 Werner Lemberg <wl@gnu.org> 43 44 Conditionally compile environment support. 45 46 * include/freetype/internal/ftobjs.h, src/autofit/afmodule.c, 47 src/base/ftobjs.c, src/cff/cffdrivr.c, src/truetype/ttdriver.c: 48 Decorate with `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' where 49 necessary. 50 512016-07-11 Werner Lemberg <wl@gnu.org> 52 53 Handle properties in `FREETYPE_PROPERTIES' environment variable. 54 55 This commit covers the most important one. 56 57 * src/autofit/afmodule.c (af_property_set): Handle `warping', 58 `darkening-parameters', and `no-stem-darkening'. 59 60 * src/cff/cffdrivr.c (cff_property_set): Handle 61 `darkening-parameters', `hinting-engine', and `no-stem-darkening'. 62 63 * src/truetype/ttdriver.c (tt_property_set): Handle 64 `interpreter-version'. 65 662016-07-11 Werner Lemberg <wl@gnu.org> 67 68 Replace calls to `atol' with `strtol'. 69 70 We later on need strtol's `endptr' feature. 71 72 * include/freetype/config/ftstdlib.h (ft_atol): Replace with... 73 (ft_strtol): ... this. 74 75 * src/base/ftdbgmem.c (ft_mem_debug_init): Updated. 76 * src/cid/cidparse.c (cid_parser_new): Ditto. 77 * src/type42/t42drivr.c (t42_get_name_index), src/type42/t42objs.c 78 (T42_GlyphSlot_Load): Ditto. 79 802016-07-10 Werner Lemberg <wl@gnu.org> 81 82 Implement handling of `FREETYPE_PROPERTIES' environment variable. 83 84 Recognizing properties follows in another commit. 85 86 * devel/ftoption.h, include/freetype/config/ftoption.h 87 (FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES): New macro. 88 89 * include/freetype/config/ftstdlib.h (ft_getenv): New macro. 90 91 * src/base/ftinit.c (ft_set_default_properties): New function to 92 parse `FREETYPE_PROPERTIES' and calling `ft_property_string_set'. 93 (FT_Init_FreeType): Updated. 94 952016-07-09 Werner Lemberg <wl@gnu.org> 96 97 Add function `ft_property_string_set'. 98 99 This is a preparation for handling an `FREETYPE_PROPERTIES' 100 environment variable to control (some) driver properties. 101 102 No change in functionality. 103 104 * src/base/ftobjs.c (ft_property_do): Add `value_is_string' 105 parameter. 106 (ft_property_string_set): New function. 107 (FT_Property_Set, FT_Property_Get): Updated. 108 109 * include/freetype/internal/ftobjs.h: Updated. 110 111 * include/freetype/internal/services/svprop.h 112 (FT_Properties_SetFunc): Add `value_is_string' parameter. 113 114 * src/autofit/afmodule.c (af_property_set), src/cff/cffdrivr.c 115 (cff_property_set), src/truetype/ttdriver.c (tt_property_set): 116 Updated, emitting an error currently if `value_is_string' is set. 117 1182016-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 119 120 [mac] Fix ftexport.sym target in Jamfile. 121 122 * Jamfile: Update the directories of the header files scanned for 123 ftexport.sym. They were incorrect since the migration of the 124 header files, on 2015-06-22. Either inexisting include/cache 125 (removed on 2006-03-20) is not needed to be listed explicitly. 126 Now ftmac.h is scanned only in the case of Mac OS & Mac OS X. 127 1282016-07-08 Alexei Podtelezhnikov <apodtele@gmail.com> 129 130 [smooth] Sub-banding protocol revision. 131 132 Rasterization sub-banding is utilized at large sizes while using a 133 rather small fixed memory pool. Indeed it is possible to make an 134 educated guess how much memory is necessary at a given size for a 135 given glyph. It turns out that, for a large majority of European 136 glyphs, you should store about 8 times more boundary pixels than 137 their height. Or, vice versa, if your memory pool can hold 800 138 pixels the band height should be 100 and you should sub-band 139 anything larger than that. Should you still run out of memory, 140 FreeType bisects the band but you have wasted some time. This is 141 what has been implemented in FreeType since the beginning. 142 143 It was overlooked, however, that the top band could grow to twice 144 the default band size leading to unnecessary memory overflows there. 145 This commit fixes that. Now the bands are distributed more evenly 146 and cannot exceed the default size. 147 148 Now the magic number 8 is really suitable for rather simple European 149 scripts. For complex Chinese logograms the magic number should be 150 13 but that is subject for another day. 151 152 * src/smooth/ftgrays.c (gray_convert_glyph): Revise sub-banding 153 protocol. 154 1552016-07-07 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 156 157 [mac] Fix Savannah bug #48417. 158 159 Mac OS X linker throws errors when `-exported_symbol_list' input 160 file includes non-existing symbols. Reported by Ryan Schmidt. 161 162 * builds/exports.mk: Exclude ftmac.h from the headers for apinames 163 by default. Include it when ftmac.c would be compiled. 164 1652016-07-06 Werner Lemberg <wl@gnu.org> 166 167 * src/truetype/ttinterp.c (TInstruction_Function): Removed, unused. 168 1692016-07-05 Werner Lemberg <wl@gnu.org> 170 171 * Version 2.6.4 released. 172 ========================= 173 174 175 Tag sources with `VER-2-6-4'. 176 177 * docs/VERSION.TXT: Update documentation and bump version number to 178 2.6.4. 179 180 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, 181 builds/windows/vc2005/index.html, 182 builds/windows/vc2008/freetype.vcproj, 183 builds/windows/vc2008/index.html, 184 builds/windows/vc2010/freetype.vcxproj, 185 builds/windows/vc2010/index.html, 186 builds/windows/visualc/freetype.dsp, 187 builds/windows/visualc/freetype.vcproj, 188 builds/windows/visualc/index.html, 189 builds/windows/visualce/freetype.dsp, 190 builds/windows/visualce/freetype.vcproj, 191 builds/windows/visualce/index.html, 192 builds/wince/vc2005-ce/freetype.vcproj, 193 builds/wince/vc2005-ce/index.html, 194 builds/wince/vc2008-ce/freetype.vcproj, 195 builds/wince/vc2008-ce/index.html: s/2.6.3/2.6.4/, s/263/264/. 196 197 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4. 198 199 * builds/unix/configure.raw (version_info): Set to 18:4:12. 200 * CMakeLists.txt (VERSION_PATCH): Set to 4. 201 202 * docs/CHANGES: Updated. 203 2042016-07-05 Werner Lemberg <wl@gnu.org> 205 206 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Fix compiler warning. 207 2082016-07-04 Alexei Podtelezhnikov <apodtele@gmail.com> 209 210 [smooth] Variable type revision (part 2). 211 212 * src/smooth/ftgrays.c (TArea): Restore original definition as `int'. 213 (gray_render_line) [FT_LONG64]: Updated. 214 (gray_convert_glyph): 32-bit band bisection stack should be 32 bands. 215 (gray_convert_glyph_inner): Trace successes and failures. 216 2172016-07-04 Werner Lemberg <wl@gnu.org> 218 219 [autofit] Handle single-point contours as segments. 220 221 Doing so allows us to link them to edges – some fonts like 222 `NotoSansGurmukhi-Regular' have such isolated points sitting exactly 223 on other outlines. 224 225 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Don't 226 ignore one-point contours but handle them specially as one-point 227 segments. 228 (af_latin_hints_compute_edges): Append one-point segments to edges 229 if possible. 230 2312016-07-02 Werner Lemberg <wl@gnu.org> 232 233 [autofit] Remove unused structure members. 234 235 * src/autofit/afhints.h (AF_SegmentRec, AF_EdgeRec): Remove 236 `num_linked'. 237 238 * src/autofit/afcjk.c (af_cjk_hints_link_segments): Updated. 239 2402016-07-02 Werner Lemberg <wl@gnu.org> 241 242 [autofit] Update to Unicode 9.0.0. 243 244 * src/autofit/afranges.c (af_arab_nonbase_uniranges, 245 af_cyrl_uniranges): Add new data. 246 2472016-07-01 Alexei Podtelezhnikov <apodtele@gmail.com> 248 249 [smooth] Variable type revision (part 1). 250 251 This patch restores original `TCoord' definition as `int' so that the 252 rendering pool is used more efficiently on LP64 platforms (unix). 253 254 * src/smooth/ftgrays.c (gray_TWorker, TCell, gray_TBand): Switch some 255 fields to `TCoord'. 256 (gray_find_cell, gray_render_scanline, gray_render_line, gray_hline, 257 gray_sweep, gray_convert_glyph): Updated. 258 2592016-06-28 Alexei Podtelezhnikov <apodtele@gmail.com> 260 261 [smooth] Minor clean-ups. 262 263 * src/smooth/ftgrays.c (gray_TWorker): Remove redundant `ycount'. 264 (gray_sweep, gray_convert_glyph, gray_dump_cells): Updated. 265 2662016-06-27 Alexei Podtelezhnikov <apodtele@gmail.com> 267 268 [smooth] Minor clean-ups. 269 270 * src/smooth/ftgrays.c (gray_convert_glyph): Do not use volatile 271 qualifier. 272 (gray_raster_render): Move span initializations from here. 273 (gray_sweep): ... to here and remove unused `target' argument. 274 2752016-06-26 Alexei Podtelezhnikov <apodtele@gmail.com> 276 277 [pcf] Fix handling of very large fonts (#47708). 278 279 * src/pcf/pcfread.c (pcf_get_encodings): Make `encodingOffset' an 280 unsigned short. 281 Only reject `0xFFFF' as an invalid encoding offset. 282 2832016-06-25 Werner Lemberg <wl@gnu.org> 284 285 [truetype] Really fix deallocation in case of error (#47726). 286 287 * src/truetype/ttgload.c (load_truetype_glyph): Thinko; initialize 288 `outline.points' also. 289 2902016-06-23 Alexei Podtelezhnikov <apodtele@gmail.com> 291 292 [smooth] Consolidate memory management. 293 294 * src/smooth/ftgrays.c (gray_init_cells): Remove function. 295 (gray_TWorker): Remove fields that become local variables. 296 (gray_raster_render): Move rendering buffer declaration from here. 297 (gray_convert_glyph): ... to here and update accordingly. 298 2992016-06-22 Alexei Podtelezhnikov <apodtele@gmail.com> 300 301 [smooth] Consolidate boundary checks. 302 303 Removing the checks from `gray_hline' shaves 1% off rendering speed. 304 305 * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_MIN' and `FT_MAX'. 306 (gray_TWorker): No need to store `clip_box'. 307 (gray_hline): Remove unnecessary boundary checks. 308 (gray_convert_glyph): Move boundary checks from here. 309 (gray_raster_render): ... to here and consolidate. 310 3112016-06-21 Alexei Podtelezhnikov <apodtele@gmail.com> 312 313 [smooth] Use `FT_Outline_Get_CBox'. 314 315 * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_Outline_Get_CBox'. 316 (gray_compute_cbox): Remove this function. 317 (gray_convert_glyph): Update to use `FT_Outline_Get_CBox'. 318 3192016-06-20 Werner Lemberg <wl@gnu.org> 320 321 [smooth] Remove compiler warnings. 322 323 * src/smooth/ftgrays.c (gray_convert_glyph): Fix reports from clang. 324 3252016-06-20 Alexei Podtelezhnikov <apodtele@gmail.com> 326 327 [smooth] Sanitize memory management. 328 329 * src/smooth/ftgrays.c (gray_convert_glyph): Cleaned up. 330 3312016-06-18 Alexei Podtelezhnikov <apodtele@gmail.com> 332 333 [smooth] Remove `band_shoot' that never worked. 334 335 * src/smooth/ftgrays.c (gray_TWorker): Remove `band_shoot'. 336 (gray_convert_glyph): Updated. 337 3382016-06-17 Alexei Podtelezhnikov <apodtele@gmail.com> 339 340 [raster, smooth] Handle FT_RENDER_POOL_SIZE better. 341 342 * src/raster/ftraster.c (FT_MAX_BLACK_POOL): New macro. 343 (ft_black_render): Updated. 344 * src/smooth/ftgrays.c (FT_MAX_GRAY_POOL): New macro. 345 (gray_raster_render): Updated. 346 3472016-06-16 Werner Lemberg <wl@gnu.org> 348 349 * src/base/md5.c: Updated to recent version. 350 3512016-06-14 Alexei Podtelezhnikov <apodtele@gmail.com> 352 353 * src/smooth/ftgrays.c (gray_hline): Optimize if-condition. 354 3552016-06-13 Werner Lemberg <wl@gnu.org> 356 357 [autofit] Add support for Cherokee script. 358 359 * src/autofit/afblue.dat: Add blue zone data for Cherokee. 360 361 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 362 363 * src/autofit/afscript.h: Add Cherokee standard characters. 364 365 * src/autofit/afranges.c: Add Cherokee data. 366 367 * src/autofit/afstyles.h: Add Cherokee data. 368 3692016-06-09 David Capello <davidcapello@gmail.com> 370 371 [cmake] Avoid modifying `ftconfig.h' and `ftoption.h' files. 372 373 * CMakeLists.txt: Each time cmake is run those files are 374 modified and the whole FreeType library is recompiled. With this 375 change we change the files only if there are real modifications, so 376 we can avoid recompilations. 377 3782016-06-09 Werner Lemberg <wl@gnu.org> 379 380 [bdf] Check number of properties (#48166). 381 382 * src/bdf/bdflib.c (_bdf_parse_start): Implement. 383 3842016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com> 385 386 [smooth] Re-enable new line renderer on 64-bit archs. 387 388 * src/smooth/ftgrays.c (gray_render_line): Conditionally re-enable new 389 implementation, where it is safe from overflows. 390 3912016-06-08 Alexei Podtelezhnikov <apodtele@gmail.com> 392 393 [smooth] Minor clean-ups. 394 395 * src/smooth/ftgrays.c (gray_dump_cells): Move out of the way. 396 (gray_render_span): Remove spurious casts and streamline. 397 3982016-06-07 Werner Lemberg <wl@gnu.org> 399 400 [autofit] Add support for Ethiopic script. 401 402 * src/autofit/afblue.dat: Add blue zone data for Ethiopic. 403 404 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 405 406 * src/autofit/afscript.h: Add Ethiopic standard characters. 407 408 * src/autofit/afranges.c: Add Ethiopic data. 409 410 * src/autofit/afstyles.h: Add Ethiopic data. 411 4122016-06-07 Werner Lemberg <wl@gnu.org> 413 414 [autofit] Fix compilation with VS2016 (#48126). 415 416 This compiler doesn't recognize the end-of-comment sequence `*/' if 417 it immediately follows non-ASCII characters. 418 419 * src/autofit/afscript.h: Ensure whitespace before `*/'. 420 4212016-06-04 Werner Lemberg <wl@gnu.org> 422 423 Fix a test for named instances (#48122). 424 425 This was missed while giving negative face indices an extended 426 meaning. 427 428 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Implement. 429 4302016-05-31 Nikolaus Waxweiler <madigens@gmail.com> 431 432 [truetype] Let SHPIX move points in the twilight zone in v40. 433 434 * src/truetype/ttinterp.c (Ins_SHPIX): Allow SHPIX to move points in 435 the twilight zone. Otherwise, treat SHPIX the same as DELTAP. 436 Unbreaks various fonts such as older versions of Rokkitt and DTL 437 Argo T Light that would glitch severely after calling ALIGNRP after a 438 blocked SHPIX. 439 4402016-05-30 Werner Lemberg <wl@gnu.org> 441 442 [type42] Support `CharStrings' entry format as created by LilyPond. 443 444 * src/type42/t42parse.c (t42_parse_charstrings): Handle entries 445 having the format 446 447 (foo) cvn 12345 def 448 4492016-05-28 Werner Lemberg <wl@gnu.org> 450 451 * src/autofit/afranges.c: Remove `UL' postfix from hex numbers. 452 453 Suggested by Alexei. `UL' is only needed for 16bit compilers, but 454 it seems noone is using this anymore (and we no longer test whether 455 FreeType compiles in such an environment). Otherwise, it is easy to 456 add the postfix to the `AF_UNICODE_RANGE' macro. 457 4582016-05-26 Alexei Podtelezhnikov <apodtele@gmail.com> 459 460 [smooth] Shrink bisection stack. 461 462 The convergence of Bézier flatteners is fast with the deviation 463 from straight line being asymptotically cut 4-fold on each bisection. 464 This justifies smaller bisection stack size. 465 466 * src/smooth/ftgrays.c (gray_TWorker): Remove common `bez_stack'. 467 (gray_render_conic): Create and use conic `bez_stack'. Move back the 468 band analysis from... 469 (gray_conic_to): ... here. 470 (gray_render_cubic): Create and use cubic `bez_stack'. Move back the 471 band analysis from... 472 (gray_cubic_to): ... here. 473 (gray_move_to): Updated. 474 4752016-05-25 Werner Lemberg <wl@gnu.org> 476 477 [autofit] Fixes for Armenian and Gujarati ranges. 478 479 * src/autofit/afranges.c (af_armn_uniranges): Corrected. 480 (af_guru_nonbase_uniranges): Make U+0A3E a base character. 481 4822016-05-24 Werner Lemberg <wl@gnu.org> 483 484 [autofit] Add support for Armenian script. 485 486 * src/autofit/afblue.dat: Add blue zone data for Armenian. 487 488 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 489 490 * src/autofit/afscript.h: Add Armenian standard characters. 491 492 * src/autofit/afranges.c: Add Armenian data. 493 494 * src/autofit/afstyles.h: Add Armenian data. 495 4962016-05-23 Werner Lemberg <wl@gnu.org> 497 498 * builds/unix/unix-cc.in (LINK_LIBRARY): Use `-export-symbols'. 499 500 This was commented about 10 years ago – I think the reason then to 501 disable libtool's `-export-symbols' option was to give some badly 502 programmed applications access to internal FreeType functions. 503 504 I believe that we should no longer take care of such programs; the 505 number of symbols exported should be rather restricted as much as 506 possible. 507 5082016-05-22 Werner Lemberg <wl@gnu.org> 509 510 [autofit] Add blue-zone support for Gurmukhi script. 511 512 This essentially moves the Gurmukhi script from the `Indic' hinter to 513 the `Latin' hinter. 514 515 * src/autofit/afblue.dat: Add blue zone data for Gurmukhi. 516 517 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 518 519 * src/autofit/afscript.h: Add Gurmukhi standard characters and move 520 data out of AF_CONFIG_OPTION_INDIC block. 521 522 * src/autofit/afranges.c: Move Gurmukhi data out of 523 AF_CONFIG_OPTION_INDIC block. 524 525 * src/autofit/afstyles.h: Update Gurmukhi data; in particular, use 526 AF_WRITING_SYSTEM_LATIN. 527 5282016-05-21 Werner Lemberg <wl@gnu.org> 529 530 Minor clang++ fixes. 531 532 * src/base/ftobjs.c (FT_Add_Module), src/psaux/psobjs.c 533 (ps_parser_load_field), src/type1/t1load.c (parse_subrs): Add 534 initializer. 535 536 * src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit 537 conversion from NULL to boolean. 538 5392016-05-21 Werner Lemberg <wl@gnu.org> 540 541 Work around a bug of the C 8.0.0.1 compiler on AIX 5.3 (#47955). 542 543 * include/freetype/internal/ftmemory.h (cplusplus_typeof): Use 544 braces for `extern "C++"'. 545 5462016-05-17 Nikolaus Waxweiler <madigens@gmail.com> 547 548 [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3]. 549 550 * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with... 551 (tt_loader_set_pp): ... this new function. 552 Update all callers. 553 5542016-05-17 Nikolaus Waxweiler <madigens@gmail.com> 555 556 [truetype] New implementation of v38 bytecode interpreter [2/3]. 557 558 This patch actually modifies the bytecode interpreter. 559 560 See added comments in `ttinterp.h' for more information on this and 561 the following commit in the series. 562 563 * src/truetype/ttinterp.c (SUBPIXEL_HINTING): Replaced by... 564 (NO_SUBPIXEL_HINTING, SUBPIXEL_HINTING_INFINALITY, 565 SUBPIXEL_HINTING_MINIMAL): ...new macros. 566 (Direct_Move, Direct_Move_X, Direct_Move_Y): Handle backward 567 compatibility. 568 Updated. 569 (Ins_RS, Ins_FDEF, Ins_ENDF, Ins_CALL, Ins_LOOPCALL, Ins_MD): 570 Updated. 571 (Ins_INSTCTRL): Handle native ClearType mode flag. 572 Updated. 573 (Ins_FLIPPT, Ins_FLIPRGON, Ins_FLIPRGOFF): Handle backward 574 compatibility. 575 (Move_Zp2_Point): Ditto. 576 (Ins_SHP): Updated. 577 (Ins_SHPIX): Handle backward compatibility. 578 Updated. 579 (Ins_MSIRP, Ins_MDAP, Ins_MIAP, Ins_MDRP, Ins_MIRP): Updated. 580 (Ins_ALIGNRP): Updated. 581 (Ins_IUP, Ins_DELTAP): Handle backward compatibility. 582 Updated. 583 (Ins_GETINFO): Handle v38 flags. 584 Updated. 585 (TT_RunIns): Handle backward compatibility mode. 586 Updated. 587 5882016-05-17 Nikolaus Waxweiler <madigens@gmail.com> 589 590 [truetype] New implementation of v38 bytecode interpreter [1/3]. 591 592 This patch prepares data structures and the like. 593 594 See added comments in `ttinterp.h' for more information on this and 595 the following commits in the series. 596 597 * devel/ftoption.h, include/freetype/config/ftoption.h 598 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Assign values to differentiate 599 between subpixel versions. 600 (TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY, 601 TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL): New macros. 602 603 * include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro. 604 605 * include/freetype/internal/tttypes.h (TT_FaceRec): Updated. 606 607 * src/truetype/ttinterp.h (TT_ExecContextRec): Define new fields 608 `subpixel_hinting_lean', `vertical_lcd_lean', 609 `backward_compatibility', `iupx_called', iupy_called', and 610 `grayscale_cleartype' for new hinting mode. 611 612 * src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40 613 interpreters conditionally. 614 615 * src/truetype/ttgload.c (TT_Hint_Glyph): Save phantom points unless 616 in v38 backward compatibility mode. 617 Updated. 618 (compute_glyph_metrics): Add v38 backward compatibility mode 619 constraint for adjusting advance widths. 620 Updated. 621 (tt_loader_init): Handle new flags `subpixel_hinting_lean', 622 `grayscale_cleartype', and `vertical_lcd_lean'. 623 Updated. 624 (tt_get_metrics, TT_Process_Simple_Glyph, TT_LOADER_SET_PP): 625 Updated. 626 627 * src/truetype/ttobjs.c (tt_driver_init): Conditionally set 628 default interpreter version number. 629 630 * src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated. 631 6322016-05-17 Werner Lemberg <wl@gnu.org> 633 634 [cff] Fix matrix scaling (#47848). 635 636 * include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro. 637 638 * src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling 639 value of all matrix coefficients to scale matrix. 640 641 * src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for 642 matrix normalization if `matrix->yy' is zero. 643 6442016-05-16 Werner Lemberg <wl@gnu.org> 645 646 [base] Reject invalid sfnt Mac resource (#47891). 647 648 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity 649 of `CID ' and `TYPE1' table offset and length. 650 6512016-05-16 Werner Lemberg <wl@gnu.org> 652 653 [cid] Fix scanning for `StartData' and `/sfnts' (#47892). 654 655 * src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN): 656 New macros. 657 (cid_parser_new): Fix and document algorithm. 658 6592016-05-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 660 661 [truetype] Improve the recursive reference detector. 662 663 The previous fix for #46372 misunderstood a composite glyph referring 664 same component twice as a recursive reference. See the discussion 665 666 https://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html 667 668 Thanks to Khaled Hosny for finding this issue. 669 670 * src/truetype/ttgload.c (ft_list_get_node_at): A function to get 671 the i-th node from FT_List. 672 (load_truetype_glyph): In the traversal scan of the reference tree 673 in the composite glyph, we clear the nodes filled by previous 674 sibling chain. 675 6762016-05-07 Werner Lemberg <wl@gnu.org> 677 678 [cache] Allow value 0 for face ID. 679 680 We never dereference `face_id', and some implementations might use a 681 running number instead of a pointer. Additionally, disallowing 682 value zero was undocumented. 683 684 * src/cache/ftccmap.c (FTC_CMapCache_Lookup), src/cache/ftcmanag.c 685 (FTC_Manager_LookupFace, FTC_Manager_RemoveFaceID): Remove test for 686 `face_id'. 687 6882016-05-05 Alexei Podtelezhnikov <apodtele@gmail.com> 689 690 [smooth] More efficient accounting of conic splits and draws. 691 692 A single decrement counter of segments to draw, instead of an array, 693 contains all the information necessary to decide when to split and 694 when to draw a conic segment. The number of splits before each draw is 695 equal to the number of trailing zeros in the counter. 696 697 * src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'. 698 (gray_render_conic): Updated to use decrement counter of segments. 699 7002016-05-05 Werner Lemberg <wl@gnu.org> 701 702 [cff, truetype] Fix logic for `FT_Property_Set'. 703 704 Otherwise some properties could be set to arbitrary values, which is 705 harmless, but querying could give wrong positive results. 706 707 * src/cff/cffdrivr.c (cff_property_set) [hinting-engine], 708 * src/truetype/ttdriver.c (tt_property_set) [interpreter-version]: 709 Only allow defined values. 710 7112016-04-25 Werner Lemberg <wl@gnu.org> 712 713 [autofit] Add blue-zone support for Gujarati script. 714 715 This essentially moves the Gujarati script from the `Indic' hinter to 716 the `Latin' hinter. 717 718 * src/autofit/afblue.dat: Add blue zone data for Gujarati. 719 720 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 721 722 * src/autofit/afscript.h: Add Gujarati standard characters and move 723 data out of AF_CONFIG_OPTION_INDIC block. 724 725 * src/autofit/afranges.c: Move Gujarati data out of 726 AF_CONFIG_OPTION_INDIC block. 727 728 * src/autofit/afstyles.h: Update Gujarati data; in particular, use 729 AF_WRITING_SYSTEM_LATIN. 730 7312016-04-24 Werner Lemberg <wl@gnu.org> 732 733 Minor. 734 735 * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Protect macro 736 argument with parentheses. 737 7382016-04-24 Werner Lemberg <wl@gnu.org> 739 740 [truetype] Fix deallocation in case of error (#47726). 741 742 * src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in 743 `outline' that are going to be deallocated in case of error. 744 7452016-04-23 Werner Lemberg <wl@gnu.org> 746 747 [autofit] Improve Georgian blue zone characters. 748 749 Suggested by Akaki Razmadze <razmadzekoko@gmail.com>. 750 751 * src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM): 752 Updated. 753 754 * src/autofit/afblue.c: Regenerated. 755 7562016-04-16 David Capello <davidcapello@gmail.com> 757 758 [cmake] Honor SKIP_INSTALL_* settings (as used in zlib). 759 760 As FreeType depends on zlib, if we don't install zlib (e.g., because 761 we defined SKIP_INSTALL_ALL), FreeType cannot be installed, too 762 (cmake triggers an error saying that FreeType cannot be installed 763 because zlib target isn't in the export set). 764 765 * CMakeLists.txt: Honor `SKIP_INSTALL_HEADERS', 766 `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' settings. 767 7682016-04-16 Behdad Esfahbod <behdad@behdad.org> 769 770 [truetype] Another fix for non-intermediate GX tuples. 771 772 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing 773 cases. 774 7752016-04-12 Alexei Podtelezhnikov <apodtele@gmail.com> 776 777 Remove forgotten macro. 778 779 * include/freetype/internal/internal.h 780 [FT_INTERNAL_POSTSCRIPT_GLOBALS_H]: Remove. 781 7822016-04-09 Werner Lemberg <wl@gnu.org> 783 784 [autofit] Add support for Georgian scripts. 785 786 Georgian is problematic, since `uppercase' forms of Mkhedruli 787 (called Mtavruli) are not yet defined in Unicode, which means that 788 proper blue zones can't be defined. However, there is already a 789 proposal submitted to Unicode; see 790 791 https://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf 792 793 Additionally, due to historical reasons, Unicode treats Khutsuri as 794 the same script as Mkhedruli, and so does OpenType. However, since 795 the two scripts have completely different shapes it can happen that 796 blue zones differ considerably. The tag `geok' used here (derived 797 from ISO 15924) to differentiate the two scripts is not an OpenType 798 tag in use. If we now have a font that contains both glyphs for 799 Mkhedruli and Khutsuri, and it uses OpenType features for both also, 800 HarfBuzz unavoidably treats all glyphs as `geor'. As a consequence, 801 blue zones for `geok' are not used for glyphs involved in the 802 OpenType features. 803 804 An issue not yet resolved is which OpenType feature should be used 805 to access Mtavruli glyph shapes; right now, FreeType doesn't set up 806 support for them, but it is easy to add them later on as soon as 807 more information is available. 808 809 * src/autofit/afblue.dat: Add blue zone data for Georgian. 810 811 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 812 813 * src/autofit/afscript.h: Add Georgian standard characters. 814 815 * src/autofit/afranges.c: Add Georgian data. 816 817 * src/autofit/afstyles.h: Add Georgian data. 818 8192016-04-05 Werner Lemberg <wl@gnu.org> 820 821 [autofit] Provide dummy blue zone for pseudo script `none'. 822 823 Even if the dummy hinter is used as the handler for `none' (which 824 doesn't use blue zones), it is more consistent than the old value 825 (which was 0), pointing to Arabic... 826 827 * src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'. 828 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 829 830 * src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE. 831 8322016-03-30 Werner Lemberg <wl@gnu.org> 833 834 * src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567). 835 8362016-03-30 Werner Lemberg <wl@gnu.org> 837 838 * src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate. 839 8402016-03-30 Werner Lemberg <wl@gnu.org> 841 842 * src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567). 843 8442016-03-29 Werner Lemberg <wl@gnu.org> 845 846 * src/base/ftadvanc.c (FT_Get_Advances): Fix invalid left shift. 847 8482016-03-29 Werner Lemberg <wl@gnu.org> 849 850 [pfr] Fix binary search (#47514). 851 852 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border 853 conditions correctly. 854 8552016-03-29 Werner Lemberg <wl@gnu.org> 856 857 [pfr] Minor. 858 859 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left', 860 `right', and `middle' with `min', `max', and `mid' as used in other 861 FreeType binary search code. 862 (pfr_load_bitmap_metrics): Fix invalid left shift. 863 8642016-03-29 Werner Lemberg <wl@gnu.org> 865 866 * src/pfr/pfrtypes.h: Replace all enums with macros. 867 868 We need `~FOO' to unset bits, and only with unsigned values (which 869 `enum' isn't normally) this works cleanly. 870 8712016-03-26 Werner Lemberg <wl@gnu.org> 872 873 [pfr] Robustify bitmap strike handling (#47514). 874 875 We did a binary search for a charcode without ensuring that the 876 searched data is ordered. Validating the order is now done lazily, 877 this is, the first access to a bitmap glyph triggers the order check 878 in the corresponding bitmap strike. 879 880 * src/pfr/pfrtypes.h (PFR_BitmapFlags): New values 881 `PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'. 882 883 * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Make `flags' argument 884 a pointer. Handle new PFR_BITMAP_XXX flags. 885 (pfr_slot_load_bitmap): Updated. 886 8872016-03-26 Werner Lemberg <wl@gnu.org> 888 889 [pfr] Fix handling of compound glyphs. 890 891 Extra items are indicated with different bit positions. 892 893 * src/pfr/pfrtypes.h (PFR_GlyphFlags): Replace 894 `PFR_GLYPH_EXTRA_ITEMS' with `PFR_GLYPH_SIMPLE_EXTRA_ITEMS' and 895 `PFR_GLYPH_COMPOUND_EXTRA_ITEMS'. 896 897 * src/pfr/pfrgload.c (pfr_glyph_load_simple, 898 pfr_glyph_load_compound): Use them. 899 9002016-03-25 Werner Lemberg <wl@gnu.org> 901 902 [pfr] Minor. 903 904 * src/pfr/pfrsbit.c, src/pfr/pfrobjs.c: Use flag names instead of 905 bare numbers. 906 9072016-03-25 Werner Lemberg <wl@gnu.org> 908 909 [pfr] Various clang sanitizer fixes. 910 911 * src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle 912 signed nibbles. 913 (pfr_slot_load_bitmap): Correctly exit frame in case of error. 914 Fix invalid left shifts. 915 9162016-03-23 Werner Lemberg <wl@gnu.org> 917 918 Rename `VERSION.DLL' (#47472). 919 920 * docs/VERSION.DLL: Renamed to... 921 * docs/VERSIONS.TXT: ...this. 922 9232016-03-23 Werner Lemberg <wl@gnu.org> 924 925 [raster, smooth] Directly test outline size (#47500). 926 927 This improves stand-alone compilation. 928 929 * src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to... 930 931 * src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c 932 (gray_raster_render): ...these functions. 933 9342016-03-23 Werner Lemberg <wl@gnu.org> 935 936 [raster, smooth] Fix some clang sanitizer runtime issues. 937 938 * src/raster/ftraster.c (ft_black_reset, ft_black_set_mode, 939 ft_black_render): Harmonize signatures with `ftimage.h'. 940 941 * src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset): 942 Ditto. 943 9442016-03-22 Werner Lemberg <wl@gnu.org> 945 946 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor. 947 948 This fixes an AddressSanitizer issue: 949 950 ttgload.c:430:7: runtime error: null pointer passed as argument 1, 951 which is declared to never be null 952 9532016-03-21 Werner Lemberg <wl@gnu.org> 954 955 * src/autofit/afhints.c (af_glyph_hints_reload): Thinko. 956 957 This fixes the previous commit to this file. 958 9592016-03-21 Alexei Podtelezhnikov <apodtele@gmail.com> 960 961 [smooth] Partly revert recent changes. 962 963 * src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework 964 conditions to fix rendering issues. 965 9662016-03-20 Werner Lemberg <wl@gnu.org> 967 968 [autofit] Show `near' points in tracing. 969 970 * src/autofit/afhints.h (AF_FLAG_NEAR): New macro. 971 972 * src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it. 973 (af_glyph_hints_reload): Handle AF_FLAG_NEAR. 974 9752016-03-18 Alexei Podtelezhnikov <apodtele@gmail.com> 976 977 [smooth] Minor refactoring and microoptimizations. 978 979 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move 980 band clipping from here. 981 (gray_conic_to, gray_cubic_to): ... to here. 982 (gray_render_line, gray_render_scanline): Initialize variables closer 983 to their use. 984 9852016-03-17 Alexei Podtelezhnikov <apodtele@gmail.com> 986 987 [smooth] Minor refactoring. 988 989 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move 990 upscaling from here. 991 (gray_conic_to, gray_cubic_to): ... to here. 992 9932016-03-15 Werner Lemberg <wl@gnu.org> 994 995 * src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize. 996 9972016-03-14 Alexei Podtelezhnikov <apodtele@gmail.com> 998 999 [smooth] Temporarily revert 6eb6158dd787 (#47114). 1000 1001 * src/smooth/ftgrays.c (gray_render_line): Old implementation. 1002 10032016-03-12 Werner Lemberg <wl@gnu.org> 1004 1005 [ftfuzzer] Improve coverage of rasterfuzzer. 1006 1007 * src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use 1008 input data for `tags' array also. 1009 Trim input data to get more positive hits. 1010 10112016-03-11 Pavlo Denysov <paul.kiev+savannah@gmail.com> 1012 1013 Fix CMake issues for iOS (patch #8941). 1014 1015 * CMakeLists.txt (CMAKE_TOOLCHAIN_FILE): Fix directory. 1016 * builds/cmake/iOS.cmake: No longer enforce gcc. 1017 10182016-03-09 Behdad Esfahbod <behdad@behdad.org> 1019 1020 [truetype] Fix handling of non-intermediate GX tuples. 1021 1022 We probably did not notice this as all fonts we tested had only 1023 tuple_coords[i] be +1 or -1 for non-intermediate tuples. 1024 1025 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it. 1026 10272016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com> 1028 1029 [base] Refuse to render enormous outlines (#47114). 1030 1031 The goal is to avoid integer overflows in the rendering algorithms. 1032 The limit is chosen arbitrarily at some 2^18 pixels, which should be 1033 enough for modern devices including printers. 1034 1035 * src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject 1036 enormous outlines. 1037 10382016-03-06 Alexei Podtelezhnikov <apodtele@gmail.com> 1039 1040 [smooth] Replace left shifts with multiplications (#47114). 1041 1042 * src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it. 1043 10442016-03-05 Werner Lemberg <wl@gnu.org> 1045 1046 [autofit] Avoid excessive stem length rounding (#25392). 1047 1048 * src/autofit/aflatin.c (af_latin_compute_stem_width): Add argument 1049 to pass difference between hinted and unhinted position of base 1050 point; use this to adjust the stem width depending on the PPEM so 1051 that it doesn't become too large under certain circumstances. 1052 Update all callers using value 0 for this argument except... 1053 (af_latin_align_linked_edge): Pass position delta of base point to 1054 `af_latin_compute_stem_width'. 1055 10562016-03-05 J Raynor <jxraynor@gmail.com> 1057 1058 Make FreeType compile on AIX out of the box. 1059 1060 * builds/unix/configure.raw (XX_ANSIFLAGS): Don't use `-ansi' on 1061 AIX. 1062 10632016-03-01 Werner Lemberg <wl@gnu.org> 1064 Kostya Serebryany <kcc@google.com> 1065 1066 [ftfuzzer] Add unit for testing smooth and black rasterizers. 1067 1068 * src/tools/ftfuzzer/rasterfuzzer.cc: New file. 1069 10702016-03-01 Werner Lemberg <wl@gnu.org> 1071 1072 [autofit] Fix reallocation error introduced in 2016-02-27 (#47310). 1073 1074 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign 1075 `prev_segment' after reallocation. 1076 10772016-03-01 Werner Lemberg <wl@gnu.org> 1078 1079 Fix clang warnings. 1080 1081 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Use 1082 FT_UShort for `min_flags' and `max_flags'. 1083 Initialize `prev_*' variables. 1084 1085 * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix 1086 types of local variables. 1087 1088 * src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]: 1089 Update `printf' format string. 1090 1091 * src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast. 1092 (LLVMFuzzerTestOneInput): Fix loop type. 1093 10942016-02-29 Werner Lemberg <wl@gnu.org> 1095 1096 [autofit] Add blue-zone support for Sinhala script. 1097 1098 This essentially moves the Sinhala script from the `Indic' hinter to 1099 the `Latin' hinter. 1100 1101 * src/autofit/afblue.dat: Add blue zone data for Sinhala. 1102 1103 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1104 1105 * src/autofit/afscript.h: Add Sinhala standard character and move data 1106 out of AF_CONFIG_OPTION_INDIC block. 1107 1108 * src/autofit/afranges.c: Move Sinhala data out of 1109 AF_CONFIG_OPTION_INDIC block. 1110 1111 * src/autofit/afstyles.h: Update Sinhala data; in particular, use 1112 AF_WRITING_SYSTEM_LATIN. 1113 11142016-02-27 Werner Lemberg <wl@gnu.org> 1115 1116 [autofit] Properly handle spikes pointing to the x-axis. 1117 1118 An example that gets better rendered is glyph `uusignTaml' (glyph 1119 index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem. 1120 1121 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Properly 1122 handle segments where the last point of the first segment is 1123 identical to the first point in the second one. This can happen for 1124 malformed fonts or spikes. We either merge the new segment with the 1125 previous one (both segments point into the same direction), or we 1126 discard the shorter segment if they point into different directions. 1127 11282016-02-27 Werner Lemberg <wl@gnu.org> 1129 1130 [autofit] Minor code clean-up. 1131 1132 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Change 1133 some local variable names to better differentiate between values 1134 along a segment and values orthogonal to it. 1135 11362016-02-26 Werner Lemberg <wl@gnu.org> 1137 1138 [autofit] Improve BOUND action. 1139 1140 In complex glyph shapes, the original logic was too simple to cater 1141 for situations that would actually need something similar to PS Hint 1142 masks. This fix should alleviate the worst cases. 1143 1144 * src/autofit/aflatin.c (af_latin_hint_edges): Don't allow 1145 complete disappearance of stems. 1146 11472016-02-25 Werner Lemberg <wl@gnu.org> 1148 1149 [autofit] Add blue-zone support for Tamil script. 1150 1151 This essentially moves the Tamil script from the `Indic' hinter to 1152 the `Latin' hinter. 1153 1154 * src/autofit/afblue.dat: Add blue zone data for Tamil. 1155 1156 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1157 1158 * src/autofit/afscript.h: Add Tamil standard character and move data 1159 out of AF_CONFIG_OPTION_INDIC block. 1160 1161 * src/autofit/afranges.c: Move Tamil data out of 1162 AF_CONFIG_OPTION_INDIC block. 1163 1164 * src/autofit/afstyles.h: Update Tamil data; in particular, use 1165 AF_WRITING_SYSTEM_LATIN. 1166 11672016-02-18 Werner Lemberg <wl@gnu.org> 1168 1169 [autofit] Add blue-zone support for Malayalam script. 1170 1171 This essentially moves the Malayalam script from the `Indic' hinter 1172 to the `Latin' hinter. 1173 1174 * src/autofit/afblue.dat: Add blue zone data for Malayalam. 1175 1176 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1177 1178 * src/autofit/afscript.h: Add Malayalam standard characters and move 1179 data out of AF_CONFIG_OPTION_INDIC block. 1180 1181 * src/autofit/afranges.c: Move Malayalam data out of 1182 AF_CONFIG_OPTION_INDIC block. 1183 1184 * src/autofit/afstyles.h: Update Malayalam data; in particular, use 1185 AF_WRITING_SYSTEM_LATIN. 1186 11872016-02-16 Alexei Podtelezhnikov <apodtele@gmail.com> 1188 1189 [smooth] Fix integer overflow (#47114). 1190 1191 * src/smooth/ftgrays.c (TArea): Make it unconditionally `long'. 1192 11932016-02-15 Werner Lemberg <wl@gnu.org> 1194 1195 * src/cff/cffparse.c (cff_parse_multiple_master): Improve tracing. 1196 11972016-02-15 Werner Lemberg <wl@gnu.org> 1198 1199 [cff] Handle T2 operator only with old CFF engine (#47157). 1200 1201 * src/cff/cffparse.c (cff_parser_run) <opcode 31>: Enclose with 1202 #ifdef CFF_CONFIG_OPTION_OLD_ENGINE...#endif. 1203 12042016-02-15 Werner Lemberg <wl@gnu.org> 1205 1206 [cff] Partially handle `load' and `store' ops in old CFF engine. 1207 1208 Now all glyphs of MM CFFs like `ITCGaramondMM-It.otf' can be 1209 displayed. 1210 1211 * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_store, 1212 cff_op_load>: Partially implement it. 1213 1214 * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass 1215 the number of Multiple Master axes. 1216 Update all callers. 1217 (cff_parse_multiple_master): Get number of axes. 1218 (cff_parser_run) <opcode 31>: Updated. 1219 * src/cff/cffparse.h: Updated. 1220 (CFF_ParserRec): Add `num_axes' field. 1221 1222 * src/cff/cffload.c: Updated. 1223 1224 * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_axes' field. 1225 12262016-02-15 Werner Lemberg <wl@gnu.org> 1227 1228 [cff] Correctly trace SIDs that contain NULL bytes. 1229 1230 We need this to properly trace Multiple Master CFFs, which contain 1231 two SIDs that are charstrings. 1232 1233 This commit makes FreeType also show the last SID, omitted 1234 previously due to a bug. 1235 1236 * src/cff/cfftypes.h (CFF_FontRec): Add `string_pool_size' field. 1237 1238 * src/cff/cffload.c (cff_index_get_pointers): Add argument to return 1239 the pool size. 1240 Update all callers. 1241 1242 * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Directly 1243 access `cff->strings' to display the non-default strings. 1244 12452016-02-14 Werner Lemberg <wl@gnu.org> 1246 1247 * src/base/fthash.c: Include FT_INTERNAL_MEMORY_H. 1248 12492016-02-14 Werner Lemberg <wl@gnu.org> 1250 1251 * src/cff/cffparse.c: Include `cffgload.h'. 1252 1253 Problem reported by Colin Walters <walters@verbum.org>. 1254 12552016-02-14 Werner Lemberg <wl@gnu.org> 1256 1257 [cff] Make old CFF engine show MM CFFs (without variations). 1258 1259 The new code only displays the first master in the font. 1260 1261 * src/cff/cffgload.c (cff_decode_parse_charstrings): Add new 1262 parameter to allow function calls from dictionaries also. 1263 <cff_op_blend>: Partially implement it. 1264 Update all callers. 1265 * src/cff/cffgload.h: Updated. 1266 1267 * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass the 1268 number of Multiple Master designs. 1269 Update all callers. 1270 (cff_parse_multiple_master): New function to rudimentarily parse 1271 operator. 1272 (cff_parser_run): Handle `T2' operator. 1273 * src/cff/cffparse.h: Updated. 1274 (CFF_ParserRec): Add `num_designs' field. 1275 1276 * src/cff/cffload.c: Updated. 1277 1278 * src/cff/cfftoken.h: Handle `MultipleMaster' operator. 1279 1280 * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_designs' field. 1281 1282 * src/sfnt/sfobjs.c (sfnt_init_face): Don't handle `fvar' table for 1283 MM CFFs. 1284 12852016-02-09 Werner Lemberg <wl@gnu.org> 1286 1287 [docmaker] Don't emit trailing newlines. 1288 1289 * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_code): 1290 Use `rstrip'. 1291 12922016-02-07 Werner Lemberg <wl@gnu.org> 1293 1294 * Version 2.6.3 released. 1295 ========================= 1296 1297 1298 Tag sources with `VER-2-6-3'. 1299 1300 * docs/VERSION.DLL: Update documentation and bump version number to 1301 2.6.3. 1302 1303 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, 1304 builds/windows/vc2005/index.html, 1305 builds/windows/vc2008/freetype.vcproj, 1306 builds/windows/vc2008/index.html, 1307 builds/windows/vc2010/freetype.vcxproj, 1308 builds/windows/vc2010/index.html, 1309 builds/windows/visualc/freetype.dsp, 1310 builds/windows/visualc/freetype.vcproj, 1311 builds/windows/visualc/index.html, 1312 builds/windows/visualce/freetype.dsp, 1313 builds/windows/visualce/freetype.vcproj, 1314 builds/windows/visualce/index.html, 1315 builds/wince/vc2005-ce/freetype.vcproj, 1316 builds/wince/vc2005-ce/index.html, 1317 builds/wince/vc2008-ce/freetype.vcproj, 1318 builds/wince/vc2008-ce/index.html: s/2.6.2/2.6.3/, s/262/263/. 1319 1320 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. 1321 1322 * builds/unix/configure.raw (version_info): Set to 18:3:12. 1323 * CMakeLists.txt (VERSION_PATCH): Set to 3. 1324 1325 * docs/CHANGES: Updated. 1326 13272016-02-07 Werner Lemberg <wl@gnu.org> 1328 1329 Fix another runtime error found by clang's sanitizer (#47082). 1330 1331 * src/base/ftstroke.c (ft_stroke_border_export): Properly handle 1332 empty input buffer. 1333 13342016-02-07 Werner Lemberg <wl@gnu.org> 1335 1336 Fix runtime errors found by clang's sanitizer (#47082). 1337 1338 * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c 1339 (FT_Outline_Copy), src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): 1340 Properly handle empty input buffer. 1341 13422016-02-07 Werner Lemberg <wl@gnu.org> 1343 1344 [cff] Minor. 1345 1346 * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_sqrt>: 1347 Remove dead code. 1348 13492016-02-07 Werner Lemberg <wl@gnu.org> 1350 1351 [cff] Implement missing operators in new engine (except `random'). 1352 1353 * src/cff/cf2font.h (CF2_STORAGE_SIZE): New macro. 1354 1355 * src/cff/cf2intrp.c (cf2_interpT2CharString): Implement the 1356 following operators: abs, add, and, div, drop, dup, eq, exch, get, 1357 ifelse, index, mul, neg, not, or, put, roll, sqrt, sub. 1358 1359 * src/cff/cf2stack.h, src/cff/cf2stack.c (cf2_stack_roll): New 1360 auxiliary function for `roll' operator. 1361 13622016-02-06 Werner Lemberg <wl@gnu.org> 1363 1364 [cff] Fix some Type 2 operators in old CFF engine. 1365 1366 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Fix `eq' 1367 operator, add `not' and (unsupported) `blend' operators. 1368 13692016-02-05 Sebastian Rasmussen <sebras@gmail.com> 1370 1371 Make direct call of `make install' work (#47072). 1372 1373 * builds/unix/unix-def.in (freetype-config): Make sure 1374 `freetype-config' is generated for both make targets (`all' and 1375 `install'). 1376 13772016-02-05 Werner Lemberg <wl@gnu.org> 1378 1379 [base] Fix advance width loading for MM and GX fonts (#47064). 1380 1381 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for 1382 MM and GX fonts. 1383 Update callers. 1384 13852016-02-03 Werner Lemberg <wl@gnu.org> 1386 1387 [cff] Fix handling of face_index == -1 for pure CFF. 1388 1389 * src/cff/cffobjs.c (cff_face_init): Return correct number of faces. 1390 13912016-01-30 Werner Lemberg <wl@gnu.org> 1392 1393 [autofit] Minor tracing improvement. 1394 1395 * src/autofit/afhints.c (af_glyph_hints_dump_points): Insert newline 1396 at the start of a new contour. 1397 13982016-01-28 Nikolaus Waxweiler <madigens@gmail.com> 1399 1400 Remove unpatented hinter (3/3). 1401 1402 * include/freetype/config/ftoption.h 1403 (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove. 1404 1405 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove 1406 `ignore_unpatented_hinter' field. 1407 Update users. 1408 (FT_DEBUG_HOOK_UNPATENTED_HINTING): Remove. 1409 Update users. 1410 1411 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove 1412 `unpatented_hinting' field. 1413 Update users. 1414 1415 * src/base/ftpatent.c (_tt_check_patents_in_range, 1416 _tt_check_patents_in_table, _tt_face_check_patents): Remove. 1417 (FT_Face_CheckTrueTypePatents, FT_Face_SetUnpatentedHinting): 1418 Replace code with dummies. 1419 1420 * src/truetype/ttobjs.c (tt_face_init): Remove now defunct code. 1421 * src/truetype/ttobjs.h (TT_GraphicsState): Remove `both_x_axis' 1422 field. 1423 14242016-01-28 Nikolaus Waxweiler <madigens@gmail.com> 1425 1426 Remove unpatented hinter (2/3). 1427 1428 * devel/ftoption.h (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove. 1429 14302016-01-28 Nikolaus Waxweiler <madigens@gmail.com> 1431 1432 Remove unpatented hinter (1/3). 1433 1434 * src/truetype/ttinterp.c [TT_CONFIG_OPTION_UNPATENTED_HINTING]: 1435 Remove all code related to this macro. 1436 14372016-01-28 Werner Lemberg <wl@gnu.org> 1438 1439 [autofit] Add blue-zone support for Kannada script. 1440 1441 This essentially moves the Kannada script from the `Indic' hinter to 1442 the `Latin' hinter. 1443 1444 * src/autofit/afblue.dat: Add blue zone data for Kannada. 1445 1446 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1447 1448 * src/autofit/afscript.h: Add Kannada standard characters and move 1449 data out of AF_CONFIG_OPTION_INDIC block. 1450 1451 * src/autofit/afranges.c: Move Kannada data out of 1452 AF_CONFIG_OPTION_INDIC block. 1453 1454 * src/autofit/afstyles.h: Update Kannada data; in particular, use 1455 AF_WRITING_SYSTEM_LATIN. 1456 14572016-01-22 Alexei Podtelezhnikov <apodtele@gmail.com> 1458 1459 Better access to 64-bit integers for C99 compilers. 1460 1461 * include/freetype/config/ftconfig.h [FT_LONG64]: Use 1462 __STDC_VERSION__ to define 64-bit integers. 1463 * builds/unix/ftconfig.in [FT_LONG64]: Ditto. 1464 * builds/vms/ftconfig.h [FT_LONG64]: Ditto. 1465 14662016-01-21 Werner Lemberg <wl@gnu.org> 1467 1468 [gxvalid] Remove commented out code. 1469 1470 * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Do it. 1471 14722016-01-20 Werner Lemberg <wl@gnu.org> 1473 1474 [autofit] Complete last autofit commit. 1475 1476 Problem reported by Kostya Serebryany <kcc@google.com>. 1477 1478 * src/autofit/afshaper.c (af_shaper_get_coverage) 1479 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Update signature. 1480 14812016-01-20 Werner Lemberg <wl@gnu.org> 1482 1483 Still handle `__FTERRORS_H__'. 1484 1485 We need this for backward compatibility. 1486 1487 Problem reported by John Emmas <johne53@tiscali.co.uk>. 1488 1489 * include/freetype/fterrors.h: Fix inclusion guard so that 1490 undefining either `FTERRORS_H_' or `__FTERRORS_H__' works as 1491 expected. 1492 14932016-01-19 Werner Lemberg <wl@gnu.org> 1494 1495 [autofit] Fix handling of default script. 1496 1497 Patch taken from ttfautohint, commit 1498 071ae2c00e0d67f9d19418f4fade1c23d27dc185. 1499 1500 There were two bugs. 1501 1502 - We now use non-standard script tags like `khms' for special 1503 purposes. However, HarfBuzz maps such tags to `DFLT', and 1504 without this commit the associated lookups were incorrectly 1505 assigned to the non-standard tags. 1506 1507 - Let's assume we have a Bengali font, and the font's `DFLT' 1508 script tag handles the necessary lookups for Bengali, too. 1509 Without this commit, the `DFLT' lookups were assigned to 1510 ttfautohint's default script (usually `latn') before the 1511 standard lookups for Bengali were handled. 1512 1513 We now have the following order while searching for covered 1514 glyph indices. 1515 1516 special features of scripts (e.g. `sups' for Cyrillic) 1517 Unicode mappings of scripts 1518 remaining features of scripts (especially important for Indic 1519 scripts) 1520 default features of default script 1521 1522 * src/autofit/afshaper.c, src/autofit/afshaper.h 1523 (af_shaper_get_coverage): Add boolean parameter to indicate default 1524 script. 1525 Update all callers. 1526 1527 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): 1528 Fix search order for coverages. 1529 15302016-01-19 Werner Lemberg <wl@gnu.org> 1531 1532 Various minor clang fixes. 1533 1534 * src/autofit/afcjk.c (af_cjk_metrics_init_widths), 1535 src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize 1536 `ch'. 1537 1538 * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Add cast. 1539 1540 * src/base/ftdbgmem.c (ft_mem_table_destroy): Add cast. 1541 1542 * src/base/fthash.c (hash_num_lookup): Add cast. 1543 1544 * src/base/fttrigon.c (ft_trig_downscale) [FT_LONG64]: Fix cast. 1545 1546 * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Comment out 1547 redundant code. 1548 1549 * src/type1/t1driver.c (t1_get_ps_font_value) <PS_DICT_SUBR>: Add 1550 cast. 1551 1552 * src/type1/t1load.c (parse_subrs): Fix type of `count'. 1553 15542016-01-19 Derek B. Noonburg <derekn@glyphandcog.com> 1555 1556 [truetype] Add another tricky font. 1557 1558 * src/truetype/ttobjs.c (TRICK_SFNT_IDS_NUM_FACES): Increase. 1559 (sfnt_id): Add variant of `DFKaiShu'. 1560 15612016-01-14 Alexei Podtelezhnikov <apodtele@gmail.com> 1562 1563 [base] Empower `FT_Library_SetLcdFilterWeights'. 1564 1565 * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): Enable filter 1566 in addition to setting weights. 1567 (FT_Library_SetLcdFilter): Clean out FT_FORCE_LIGHT_LCD_FILTER and 1568 FT_FORCE_LEGACY_LCD_FILTER. 1569 * include/freetype/ftlcdfil.h: Documentation update. 1570 15712016-01-12 Werner Lemberg <wl@gnu.org> 1572 1573 Don't use macro names that start with `_[A-Z]' [3/3]. 1574 1575 Such macro names are reserved for both C and C++. 1576 1577 * src/cache/ftccache.h: s/_FTC_FACE_ID_HASH/FTC_FACE_ID_HASH/. 1578 Update all callers. 1579 (FTC_CACHE_LOOKUP_CMP): Replace `_XXX' with `XXX_'. 1580 * src/cache/ftcmru.c (FTC_MRULIST_LOOKUP_CMP): Ditto. 1581 15822016-01-12 Werner Lemberg <wl@gnu.org> 1583 1584 Don't use macro names that start with `_[A-Z]' [2/3]. 1585 1586 Such macro names are reserved for both C and C++. 1587 1588 * include/freetype/ftimage.h, src/raster/ftraster.c, 1589 src/smooth/ftgrays.c, src/smooth/ftgrays.h: 1590 s/_STANDALONE_/STANDALONE_/. 1591 15922016-01-12 Werner Lemberg <wl@gnu.org> 1593 1594 Don't use macro names that start with `_[A-Z]' [1/3]. 1595 1596 Such macro names are reserved for both C and C++. 1597 1598 * src/bdf/bdflib.c: Replace macros of the form `_BDF_XXX' with 1599 `BDF_XXX_'. 1600 16012016-01-12 Werner Lemberg <wl@gnu.org> 1602 1603 Don't use macro names that contain `__' [2/2]. 1604 1605 Such macro names are reserved for both C and C++. 1606 1607 * src/cache/*: s/__/_/. 1608 16092016-01-12 Werner Lemberg <wl@gnu.org> 1610 1611 Don't use macro names that contain `__' [1/2]. 1612 1613 Such macro names are reserved for both C and C++. 1614 1615 * */*: Replace macros of the form `__XXX_H__' with `XXX_H_'. 1616 16172016-01-10 Jered Gray <jegray@google.com> 1618 1619 [cff] Fix usage of `|' operator. 1620 1621 * src/cff/cf2intrp.c (cf2_interpT2CharString) [cf2_cmdEXTENDEDNMBR, 1622 default]: `|' is not guaranteed to be processed from left to right 1623 by the compiler. However, the code repeatedly calls 1624 `cf2_buf_readByte' to get the arguments to `|' ... Fix this. 1625 16262015-12-25 Werner Lemberg <wl@gnu.org> 1627 1628 [autofit] Make top-to-bottom hinting work in latin auto-hinter. 1629 1630 This improves rendering of scripts like Bengali or Devanagari. 1631 1632 * src/autofit/afhints.c (af_axis_hints_new_edge): Add parameter to 1633 pass top-to-bottom hinting flag. This makes the function sort edges 1634 in descending vertical position. 1635 1636 * src/autofit/afhints.c: Updated. 1637 1638 * src/autofit/aflatin.c (af_latin_hints_compute_edges, 1639 af_latin_hint_edges): Use `top_to_bottom_hinting' flag. 1640 1641 * src/autofit/afcjk.c (af_cjk_hints_compute_edges), 1642 src/autofit/aflatin2.c (af_latin2_hints_compute_edges): Updated. 1643 16442015-12-24 Werner Lemberg <wl@gnu.org> 1645 1646 [autofit] Add hinting direction to `AF_ScriptClassRec'. 1647 1648 Still unused. 1649 1650 * src/autofit/afglobal.c (SCRIPT): Handle hinting direction. 1651 1652 * src/autofit/aftypes.h (AF_ScriptClassRec): Add 1653 `top_to_bottom_hinting' field. 1654 (AF_HINTING_BOTTOM_TO_TOP, AF_HINTING_TOP_TO_BOTTOM): New macros. 1655 (AF_DEFINE_SCRIPT_CLASS): Updated. 1656 16572015-12-23 Werner Lemberg <wl@gnu.org> 1658 1659 [autofit] Start implementing hinting direction (up/down, down/up). 1660 1661 Right now, it does nothing. 1662 1663 * src/autofit/afscript.h: Add another parameter to `SCRIPT', 1664 specifying hinting direction. 1665 1666 * src/autofit/afglobal.c, src/autofit/afglobal.h, 1667 src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/afshaper.c, 1668 src/autofit/aftypes.h: Extend `SCRIPT' definitions. 1669 16702015-12-22 Werner Lemberg <wl@gnu.org> 1671 1672 * src/type1/t1load.c (parse_subrs): Fix memory leak (#46744). 1673 16742015-12-22 Werner Lemberg <wl@gnu.org> 1675 1676 [base] Make hash interface symmetric. 1677 1678 Use `num' and `str' infixes everywhere. 1679 1680 * src/base/fthash.c (ft_hash_init): Renamed to... 1681 (hash_init): ... This. 1682 (ft_hash_str_init, ft_hash_num_init): New functions. 1683 (ft_hash_free): Renamed to... 1684 (ft_hash_str_free): ... This. 1685 1686 * include/freetype/internal/fthash.h: Updated. 1687 1688 * src/bdf/bdflib.c, src/type1/t1load.c, src/type1/t1objs.c: Updated. 1689 16902015-12-21 Werner Lemberg <wl@gnu.org> 1691 1692 [type1] Avoid shift of negative numbers (#46732). 1693 1694 * src/type1/t1load.c (parse_subrs): Do it. 1695 16962015-12-20 Werner Lemberg <wl@gnu.org> 1697 1698 [type1, psaux] Handle large values of num_subrs correctly (#46692). 1699 1700 We now use a hash to map from subr indices to array elements holding 1701 the subroutines, if necessary. 1702 1703 * include/freetype/internal/t1types.h: Include FT_INTERNAL_HASH_H. 1704 (T1_FontRec): Add `subrs_hash' field. 1705 1706 * include/freetype/internal/psaux.h: Include FT_INTERNAL_HASH_H. 1707 (T1_DecoderRec): Add `subrs_hash' field. 1708 1709 * src/type1/t1load.h (T1_LoaderRec): Add `subrs_hash' field. 1710 1711 * src/type1/t1driver.c: Include FT_INTERNAL_HASH_H. 1712 (t1_ps_get_font_value) [PS_DICT_SUBR]: Look up hash if necessary. 1713 1714 * src/type1/t1load.c: Include FT_INTERNAL_HASH_H. 1715 (parse_subrs): Use hash for subr indices that exceed the allocated 1716 number of subr slots. 1717 (t1_init_loader): Remove unnecessary code. 1718 (t1_done_loader, T1_Open_Face): Updated. 1719 1720 * src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances, 1721 T1_Load_Glyph): Updated. 1722 1723 * src/type1/t1objs.c (T1_Face_Done): Updated. 1724 1725 * src/psaux/t1decode.c: Include FT_INTERNAL_HASH_H. 1726 (t1_decoder_parse_charstrings) [op_callsubr]: Look up hash if 1727 necessary. 1728 1729 * src/cid/cidgload.c (cid_load_glyph): Updated. 1730 17312015-12-20 Werner Lemberg <wl@gnu.org> 1732 1733 [base] Thinko: Remove free function pointer. 1734 1735 We don't copy keys or values while hashing. 1736 1737 * include/freetype/internal/fthash.h (FT_Hash_FreeFunc): Removed. 1738 (FT_HashRec): Remove `free' field. 1739 1740 * src/base/fthash.c (hash_str_free): Removed. 1741 (ft_hash_init, ft_hash_free): Updated. 1742 17432015-12-20 Werner Lemberg <wl@gnu.org> 1744 1745 [base, bdf] Don't expose `FT_Hashnode' in hash functions. 1746 1747 * src/base/fthash.c (hash_lookup, ft_hash_str_lookup, 1748 ft_hash_num_lookup): Return pointer to `size_t' instead of 1749 `FT_Hashnode'. 1750 1751 * include/freetype/internal/fthash.h: Updated. 1752 1753 * src/bdf/bdflib.c (bdf_get_property, _bdf_add_property, 1754 bdf_get_font_property): Updated. 1755 17562015-12-20 Werner Lemberg <wl@gnu.org> 1757 1758 [base, bdf] Add number hashing. 1759 1760 * src/base/fthash.c (hash_num_lookup, hash_num_compare): New 1761 functions. 1762 (ft_hash_init): Add argument to select between number and string 1763 hashing. 1764 (ft_hash_num_insert, ft_hash_num_lookup): New functions. 1765 1766 * include/freetype/internal/fthash.h: Updated. 1767 1768 * src/bdf/bdflib.c (_bdf_parse_start): Updated. 1769 17702015-12-20 Werner Lemberg <wl@gnu.org> 1771 1772 [base] Introduce hash lookup, compare, and free function pointers. 1773 1774 * include/freetype/internal/fthash.c (FT_Hash_LookupFunc, 1775 FT_Hash_CompareFunc, FT_Hash_FreeFunc): New typedefs. 1776 (FT_HashRec): Add `lookup', `compare', and `free' fields. 1777 1778 * src/base/fthash.c (hash_str_lookup, hash_str_compare, 1779 hash_str_free): New functions. 1780 (ft_hash_init): Set function pointers. 1781 (hash_bucket, ft_hash_free): Use them. 1782 17832015-12-20 Werner Lemberg <wl@gnu.org> 1784 1785 [base, bdf] Use a union as a hash key. 1786 1787 We want to support both an integer and a string key later on. 1788 1789 * include/freetype/internal/fthash.h (FT_Hashkey): New union. 1790 (FT_HashnodeRec): Updated. 1791 (ft_hash_insert, ft_hash_lookup): Renamed to ... 1792 (ft_hash_str_insert, ft_hash_str_lookup): ... this. 1793 1794 * src/base/fthash.c (hash_bucket): Updated. 1795 (ft_hash_insert, ft_hash_lookup): Renamed to ... 1796 (hash_insert, hash_lookup): ... this. 1797 (ft_hash_str_insert, ft_hash_str_lookup): New wrapper functions. 1798 1799 * src/bdf/bdflib.c: Updated. 1800 18012015-12-19 Werner Lemberg <wl@gnu.org> 1802 1803 [bdf] Use new hash functions. 1804 1805 * src/bdf/bdf.h: Include FT_INTERNAL_HASH_H. 1806 (hashnode, hashtable): Removed. 1807 (bdf_font_t): Use `FT_HashRec' type for `proptbl'. 1808 1809 * src/bdf/bdflib.c: Remove all hash functions. 1810 Update code for new hash structure and function names. 1811 18122015-12-19 Werner Lemberg <wl@gnu.org> 1813 1814 [bdf, base] Lift hash functions from bdf driver to base module. 1815 1816 * src/base/fthash.c, include/freetype/internal/fthash.h: New files, 1817 containing (massaged) code from `bdflib.c' and `bdf.h'. 1818 1819 * include/freetype/internal/internal.h (FT_INTERNAL_HASH_H): New 1820 macro. 1821 1822 * src/base/ftbase.c: Include `fthash.c'. 1823 1824 * src/base/Jamfile (_sources): Add `fthash'. 1825 1826 * src/base/rules.mk (BASE_SRC): Add `fthash.c'. 1827 1828 * docs/LICENSE.TXT: Updated. 1829 18302015-12-15 Werner Lemberg <wl@gnu.org> 1831 1832 [autofit] Add blue-zone support for Bengali script. 1833 1834 This essentially moves the Bengali script from the `Indic' hinter to 1835 the `Latin' hinter. 1836 1837 * src/autofit/afblue.dat: Add blue zone data for Bengali. 1838 1839 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1840 1841 * src/autofit/afscript.h: Add Bengali standard characters and move 1842 data out of AF_CONFIG_OPTION_INDIC block. 1843 1844 * src/autofit/afranges.c: Move Bengali data out of 1845 AF_CONFIG_OPTION_INDIC block. 1846 1847 * src/autofit/afstyles.h: Update Bengali data; in particular, use 1848 AF_WRITING_SYSTEM_LATIN. 1849 18502015-12-14 Ben Wagner <bungeman@gmail.com> 1851 1852 [bdf] Remove dead code (#46625). 1853 1854 The BDF specification only allows decimal numbers, no octal or 1855 hexadecimal decoding is needed. 1856 1857 * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, 1858 _bdf_atos): Remove unused code and parameters. 1859 Update all callers. 1860 (odigits): Remove. 1861 18622015-12-14 Werner Lemberg <wl@gnu.org> 1863 1864 [base] Fix calls to `FT_Stream_Seek'. 1865 1866 * src/base/ftobjs.c (Mac_Read_sfnt_Resource, FT_Open_Face): Set 1867 `error'. 1868 18692015-12-14 Ben Wagner <bungeman@gmail.com> 1870 1871 [base] Check error when seeking to data supplied offset (#46635). 1872 1873 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): 1874 `ft_lookup_PS_in_sfnt_stream' returns offset and length from 1875 user supplied data. Use of this these values must be checked. 1876 18772015-12-13 Werner Lemberg <wl@gnu.org> 1878 1879 [autofit] Add support for Myanmar script. 1880 1881 * src/autofit/afblue.dat: Add blue zone data for Myanmar. 1882 1883 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1884 1885 * src/autofit/afscript.h: Add Myanmar standard characters. 1886 1887 * src/autofit/afranges.c: Add Myanmar data. 1888 1889 * src/autofit/afstyles.h: Add Myanmar data. 1890 18912015-12-12 Werner Lemberg <wl@gnu.org> 1892 1893 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Minor. 1894 18952015-12-12 Werner Lemberg <wl@gnu.org> 1896 1897 * src/autofit/afscript.h: Avoid potential crash. 1898 18992015-12-10 Werner Lemberg <wl@gnu.org> 1900 1901 [autofit] Restore OpenType feature check. 1902 1903 This was removed while rewriting the HarfBuzz interface. 1904 1905 * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add `hb_buf' field to 1906 hold internal HarfBuzz buffer, needed for feature comparison. 1907 1908 * src/autofit/afglobal.c (af_face_globals_new, 1909 af_face_globals_free): Initialize and destroy `hb_buf'. 1910 1911 * src/autofit/afshaper.c (af_shaper_get_cluster): Compare character 1912 (cluster) with and without applied feature. 1913 1914 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix tracing 1915 message. 1916 19172015-12-10 Werner Lemberg <wl@gnu.org> 1918 1919 [autofit] Remove redundant code. 1920 1921 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Do it. 1922 19232015-12-09 Werner Lemberg <wl@gnu.org> 1924 1925 [autofit] Thinko. 1926 1927 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Don't count 1928 empty blue zones (bug introduced 2015-12-06). 1929 19302015-12-09 Werner Lemberg <wl@gnu.org> 1931 1932 [autofit] Introduce subscript top blue zones. 1933 1934 This feature is mainly for Khmer: The idea is to avoid a clash 1935 between the top of subscript glyphs and the bottom of normal 1936 baseline glyphs. 1937 1938 This only works for character clusters mapped to multiple glyphs. 1939 1940 * src/autofit/afblue.dat: Add subscript top blue zone for Khmer. 1941 1942 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_SUB_TOP): New 1943 macro. 1944 1945 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1946 1947 * src/autofit/aflatin.h (AF_LATIN_IS_SUB_TOP_BLUE, 1948 AF_LATIN_BLUE_SUB_TOP): New macros. 1949 1950 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle new 1951 blue zone property. 1952 Update tracing messages. 1953 (af_latin_metrics_scale_dim): Handle new blue zone property. 1954 (af_latin_hints_compute_blue_edges): Updated. 1955 19562015-12-09 Werner Lemberg <wl@gnu.org> 1957 1958 [autofit] Fix tracing message. 1959 1960 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Display 1961 inactive blue zones also. 1962 19632015-12-06 Werner Lemberg <wl@gnu.org> 1964 1965 * src/autofit/afblue.dat: Add more Khmer clusters. 1966 1967 Some fonts have incorrect ligatures; we need more samples to get a 1968 good mean value. 1969 1970 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1971 19722015-12-06 Werner Lemberg <wl@gnu.org> 1973 1974 [autofit] Typos. 1975 1976 * src/autofit/afshaper.c (af_shaper_buf_create, af_shaper_get_elem) 1977 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Make it compile. 1978 19792015-12-06 Werner Lemberg <wl@gnu.org> 1980 1981 [autofit] Add support for Khmer script. 1982 1983 We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and 1984 `Khmer symbols' (`khms', U+19E0-U+19FF). 1985 1986 * src/autofit/afblue.dat: Add blue zone data for Khmer. 1987 1988 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1989 1990 * src/autofit/afscript.h: Add Khmer standard characters. 1991 1992 * src/autofit/afranges.c: Add Khmer data. 1993 1994 * src/autofit/afstyles.h: Add Khmer data. 1995 19962015-12-06 Werner Lemberg <wl@gnu.org> 1997 1998 [autofit] Rewrite HarfBuzz interface to support character clusters. 1999 2000 Scripts like Khmer have blue zones that can't be directly 2001 represented by Unicode characters. Instead, it is necessary to let 2002 HarfBuzz convert character clusters into proper glyph representation 2003 forms, then deriving the blue zone information from the resulting 2004 glyphs. 2005 2006 * src/autofit/hbshim.c, src/autofit/hbshim.h: Replaced by... 2007 * src/autofit/afshaper.c, src/autofit/afshaper.h: ... these two new 2008 files, providing a new API to access HarfBuzz. 2009 2010 The new API manages a HarfBuzz buffer with `af_shaper_buf_create' 2011 and `af_shaper_buf_destroy'. The buffer receives a UTF8 encoded 2012 string with function `af_shaper_get_cluster', and the resulting 2013 glyph data (indices, advance widths, vertical offsets) can be 2014 iteratively accessed with function `af_shaper_get_elem'. 2015 2016 * src/autofit/afcjk.c (af_cjk_metrics_init_widths, 2017 af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated. 2018 2019 * src/autofit/aflatin.c (af_latin_metrics_init_widths, 2020 af_latin_metrics_init_blues, af_latin_metrics_check_digits): 2021 Updated. 2022 2023 * include/freetype/internal/fttrace.h: s/afharfbuzz/afshaper/. 2024 2025 * src/autofit/afglobal.c: s/hbshim.h/afshaper.h/. 2026 (af_face_globals_compute_style_coverage): Updated. 2027 2028 * src/autofit/afglobal.h: s/hbshim.h/afshaper.h/. 2029 2030 * src/autofit/autofit.c: s/hbshim.c/afshaper.c/. 2031 2032 * src/autofit/Jamfile, src/autofit/rules.mk (AUTOF_DRV_SRC): 2033 Updated. 2034 20352015-12-06 Werner Lemberg <wl@gnu.org> 2036 2037 [autofit] Prepare forthcoming changes. 2038 2039 This makes it easier to control the commits. 2040 2041 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Add dummy 2042 loop. No functional change. 2043 20442015-12-06 Werner Lemberg <wl@gnu.org> 2045 2046 [autofit] Use string of standard characters. 2047 2048 This is more flexible; additionally, it would allow character 2049 clusters. 2050 2051 * src/autofit/aftypes.h (SCRIPT, AF_DEFINE_SCRIPT_CLASS): Updated. 2052 (AF_ScriptClassRec): Replace `standard_char[123]' with 2053 `standard_charstring'. 2054 2055 * src/autofit/afscript.h: Replace last three character arguments 2056 of the `SCRIPT' calls with a string parameter, holding the standard 2057 characters (in UTF-8 encoding) separated with spaces. 2058 2059 * src/autofit/afglobal.c, src/autofit/afglobal.h, 2060 src/autofit/afpic.c, src/autofit/afranges.c, src/autofit/hbshim.c 2061 (SCRIPT): Updated. 2062 2063 * src/autofit/afcjk.c (af_cjk_metrics_init_widths), 2064 src/autofit/aflatin.c (af_latin_metrics_init_widths): Updated. 2065 20662015-12-05 Werner Lemberg <wl@gnu.org> 2067 2068 * src/autofit/afblue.dat: Separate blue zone characters with spaces. 2069 2070 Another preparation for character cluster support. 2071 2072 * src/autofit/afblue.c, src/autofit.afblue.h: Regenerated. 2073 20742015-12-05 Werner Lemberg <wl@gnu.org> 2075 2076 * src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces. 2077 2078 Instead, reduce multiple spaces to a single one. We need this later 2079 for supporting character clusters in `afblue.dat'. 2080 20812015-12-05 Werner Lemberg <wl@gnu.org> 2082 2083 * src/autofit/afblue.hin (GET_UTF8_CHAR): Use `do...while(0)'. 2084 2085 * src/autofit/afblue.h: Regenerated. 2086 20872015-12-05 Werner Lemberg <wl@gnu.org> 2088 2089 * src/autofit/afwarp.c: s/INT_MIN/FT_INT_MIN/. 2090 20912015-12-03 Werner Lemberg <wl@gnu.org> 2092 2093 * builds/unix/install.mk (install): Remove stale `ft2build.h'. 2094 20952015-12-01 Werner Lemberg <wl@gnu.org> 2096 2097 [type1] Avoid dangling pointer (#46572). 2098 2099 * src/type1/t1afm.c (T1_Read_Metrics): Properly reset 2100 `face->afm_data'. 2101 21022015-11-28 Alexei Podtelezhnikov <apodtele@gmail.com> 2103 2104 * include/freetype/ftlcdfil.h: Documentation tweak. 2105 21062015-11-28 Werner Lemberg <wl@gnu.org> 2107 2108 * Version 2.6.2 released. 2109 ========================= 2110 2111 2112 Tag sources with `VER-2-6-2'. 2113 2114 * docs/VERSION.DLL: Update documentation and bump version number to 2115 2.6.2. 2116 2117 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, 2118 builds/windows/vc2005/index.html, 2119 builds/windows/vc2008/freetype.vcproj, 2120 builds/windows/vc2008/index.html, 2121 builds/windows/vc2010/freetype.vcxproj, 2122 builds/windows/vc2010/index.html, 2123 builds/windows/visualc/freetype.dsp, 2124 builds/windows/visualc/freetype.vcproj, 2125 builds/windows/visualc/index.html, 2126 builds/windows/visualce/freetype.dsp, 2127 builds/windows/visualce/freetype.vcproj, 2128 builds/windows/visualce/index.html, 2129 builds/wince/vc2005-ce/freetype.vcproj, 2130 builds/wince/vc2005-ce/index.html, 2131 builds/wince/vc2008-ce/freetype.vcproj, 2132 builds/wince/vc2008-ce/index.html: s/2.6.1/2.6.2/, s/261/262/. 2133 2134 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. 2135 2136 * builds/unix/configure.raw (version_info): Set to 18:2:12. 2137 * CMakeLists.txt (VERSION_PATCH): Set to 2. 2138 2139 * docs/CHANGES: Updated. 2140 21412015-11-28 Werner Lemberg <wl@gnu.org> 2142 2143 Fix C++ compilation. 2144 2145 * src/autofit/afloader.c: Include FT_INTERNAL_CALC_H. 2146 2147 * src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler. 2148 21492015-11-28 Nikolaus Waxweiler <madigens@gmail.com> 2150 2151 Change default LCD filter to be normalized and color-balanced. 2152 2153 * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update 2154 `default_filter'. 2155 21562015-11-28 Werner Lemberg <wl@gnu.org> 2157 2158 [docmaker] Allow references to section names. 2159 2160 In the reference, we show the section's title enclosed in single 2161 quotes. 2162 2163 * src/tools/docmaker/formatter.py (Formatter::__init__): Collect 2164 section names as identifiers. 2165 2166 * src/tools/docmaker/tohtml.py (section_title_header): Split into... 2167 (section_title_header1, section_title_header2): ... these two 2168 strings. 2169 (HtmlFormatter::make_block_url, make_html_word, html_source_quote): 2170 Handle sections. 2171 (HtmlFormatter::section_enter): Updated to add `id' HTML attribute. 2172 21732015-11-27 Tamas Kenez <tamas.kenez@adasworks.com> 2174 2175 [cmake] Add script to test the config module. 2176 2177 * builds/cmake/testbuild.sh: New file. 2178 21792015-11-27 Tamas Kenez <tamas.kenez@adasworks.com> 2180 2181 * CMakeLists.txt: Create `freetype-config.cmake' config module. 2182 21832015-11-27 Tamas Kenez <tamas.kenez@adasworks.com> 2184 2185 * CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'. 2186 21872015-11-27 Tamas Kenez <tamas.kenez@adasworks.com> 2188 2189 [cmake] Add better control of library dependencies. 2190 2191 * CMakeLists.txt: Add `WITH_*' variables to force/auto/omit 2192 ZLIB/BZip2/PNG/HarfBuzz. 2193 21942015-11-27 Tamas Kenez <tamas.kenez@adasworks.com> 2195 2196 [cmake] Make `FindHarfBuzz' observe the REQUIRED option. 2197 2198 * builds/cmake/FindHarfBuzz.cmake: Implement it. 2199 22002015-11-27 Werner Lemberg <wl@gnu.org> 2201 2202 [cmake] Collect files specific to cmake in `builds/cmake'. 2203 2204 * builds/FindHarfBuzz.cmake: Move to ... 2205 * builds/cmake/FindHarfBuzz.cmake: ... this place. 2206 2207 * CMakeLists.txt (CMAKE_MODULE_PATH): Updated. 2208 22092015-11-27 Alexander Bock <alexander.j.bock@nasa.gov> 2210 2211 CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'. 2212 22132015-11-26 Werner Lemberg <wl@gnu.org> 2214 2215 [docmaker] Allow `foo[bar]' as identifier. 2216 2217 We need this to handle equally named properties in different 2218 modules. 2219 2220 * src/tools/docmaker/content.py (re_identifier), 2221 src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'. 2222 2223 * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word, 2224 HtmlFormatter::index_exit, HtmlFormatter::section_enter, 2225 HtmlFormatter::block_enter): Handle `foo[bar]'. 2226 22272015-11-25 Werner Lemberg <wl@gnu.org> 2228 2229 * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480). 2230 2231 (_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its 2232 contents. 2233 22342015-11-21 Werner Lemberg <wl@gnu.org> 2235 2236 * include/freetype/internal/ftcalc.h: Don't use `register' keyword. 2237 2238 This fixes compiler warnings. 2239 2240 Reported by Behdad. 2241 22422015-11-20 Werner Lemberg <wl@gnu.org> 2243 2244 Add `FT_LCD_FILTER_LEGACY1' enum value. 2245 2246 This does the same as `FT_LCD_FILTER_LEGACY'. 2247 2248 See 2249 2250 https://bugs.freedesktop.org/show_bug.cgi?id=92981 2251 2252 for the reasoning. 2253 2254 * include/freetype/ftlcdfil.h (FT_LcdFilter): New value 2255 `FT_LCD_FILTER_LEGACY1'. 2256 2257 * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it. 2258 22592015-11-15 Werner Lemberg <wl@gnu.org> 2260 2261 * src/autofit/afhints.c (af_get_segment_index): Fix it. 2262 2263 The old code was too simple, returning invalid values in most cases 2264 where a segment crosses the contour start. 2265 22662015-11-15 Werner Lemberg <wl@gnu.org> 2267 2268 * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439). 2269 22702015-11-11 Werner Lemberg <wl@gnu.org> 2271 2272 [cff, autofit] Switch off stem darkening by default. 2273 2274 * src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c 2275 (cff_driver_init): Do it. 2276 22772015-11-10 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> 2278 2279 Allow native CFF hinter in FT_RENDER_MODE_LIGHT. 2280 2281 Both the native CFF hinter and the auto-hinter now have a very 2282 similar rendering style. 2283 2284 * include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no 2285 longer implies FT_LOAD_FORCE_AUTOHINT. 2286 2287 * include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New 2288 macro. 2289 2290 * include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New 2291 macro. 2292 2293 * src/cff/cffdrivr.c (cff_driver_class): Use it. 2294 2295 * src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection 2296 logic. 2297 22982015-11-09 Werner Lemberg <wl@gnu.org> 2299 2300 * src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408). 2301 23022015-11-09 Werner Lemberg <wl@gnu.org> 2303 2304 [truetype] Remove integer to pointer conversion compiler warning. 2305 2306 Problem reported by Alexei. 2307 2308 * src/truetype/ttgload.c (load_truetype_glyph): Use a solution found 2309 in the glib library to fix the issue. 2310 23112015-11-08 Behdad Esfahbod <behdad@behdad.org> 2312 2313 [sfnt] Accept version 3 of `EBLC' and `CBLC' tables also. 2314 2315 * src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it. 2316 23172015-11-08 Philipp Knechtges <philipp-dev@knechtges.com> 2318 2319 [autofit] Don't distort (latin) glyphs too much (#46195). 2320 2321 * src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and 2322 `descender' fields. 2323 2324 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect 2325 ascender and descender data for blue zones. 2326 (af_latin_metrics_scale_dim): Reject vertical scaling values that 2327 change the result by more than two pixels. 2328 23292015-11-05 Werner Lemberg <wl@gnu.org> 2330 2331 [sfnt] Ignore embedded bitmaps with zero size (#46379). 2332 2333 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement 2334 it. 2335 23362015-11-04 Werner Lemberg <wl@gnu.org> 2337 2338 [truetype] Catch infinite recursion in subglyphs (#46372). 2339 2340 * include/freetype/internal/tttypes.h (TT_LoaderRec): New field 2341 `composites'. 2342 2343 * src/truetype/ttgload.c: Include FT_LIST_H. 2344 (load_truetype_glyph): Add composite subglyph index to a list; 2345 abort if index is already in list. 2346 (tt_loader_init): Updated. 2347 (tt_loader_done): New function. 2348 (TT_Load_Glyph): Call `tt_loader_done'. 2349 23502015-11-04 Werner Lemberg <wl@gnu.org> 2351 2352 [truetype] Better tracing of composite glyphs. 2353 2354 * src/truetype/ttgload.c (TT_Load_Composite_Glyph, 2355 load_truetype_glyph): Implement it. 2356 23572015-11-03 Werner Lemberg <wl@gnu.org> 2358 2359 [sfnt] Protect against zero-size bitmaps (#46345). 2360 2361 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check 2362 `glyph_size'. 2363 23642015-11-02 Nikolaus Waxweiler <madigens@gmail.com> 2365 2366 * src/autofit/afloader.c (af_loader_load_g): Implement emboldening. 2367 23682015-11-02 Nikolaus Waxweiler <madigens@gmail.com> 2369 2370 [autofit] Implement darkening computation function. 2371 2372 This is a crude adaption of the original `cf2_computeDarkening' 2373 function. 2374 2375 * src/autofit/afloader.c (af_intToFixed, af_fixedToInt, 2376 af_floatToFixed): New macros, taken from `cf2fixed.h'. 2377 (af_loader_compute_darkening): New function. 2378 * src/autofit/afloader.h: Updated. 2379 23802015-11-02 Nikolaus Waxweiler <madigens@gmail.com> 2381 2382 [autofit] Add functions to get standard widths for writing systems. 2383 2384 We need the computed standard horizontal and vertical widths for the 2385 emboldening calculation. This method provides a convenient way to 2386 extract it from writing-system-specific metrics structures, which 2387 all script definitions must implement. 2388 2389 * src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New 2390 function type. 2391 (AF_WritingSystemClassRec): New member `style_metrics_getstdw'. 2392 (AF_DEFINE_WRITING_SYSTEM_CLASS): Updated. 2393 2394 * src/autofit/afcjk.c (af_cjk_get_standard_width): New function. 2395 (af_cjk_writing_system_class): Updated. 2396 * src/autofit/afdummy.c (af_dummy_writing_system_class): Updated. 2397 * src/autofit/afindic.c (af_cjk_get_standard_width): New function. 2398 (af_indic_writing_system_class): Updated. 2399 * src/autofit/aflatin.c (af_latin_get_standard_width): New function. 2400 (af_indic_writing_system_class): Updated. 2401 * src/autofit/aflatin.c (af_latin_get_standard_width): New function. 2402 (af_indic_writing_system_class): Updated. 2403 24042015-11-02 Nikolaus Waxweiler <madigens@gmail.com> 2405 2406 [autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data. 2407 2408 * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields. 2409 2410 * src/autofit/afglobal.c (af_face_globals_new): Initialize new 2411 fields. 2412 (af_face_globals_free): Reset new fields. 2413 24142015-11-02 Nikolaus Waxweiler <madigens@gmail.com> 2415 2416 [autofit] Add stem-darkening properties. 2417 2418 Actual code follows in a later commit. 2419 2420 * include/freetype/ftautoh.h: Document `no-stem-darkening' and 2421 `darkening-parameters'. 2422 2423 * src/autofit/afmodule.h: New fields `no_stem_darkening' and 2424 `darken_params'. 2425 2426 * src/autofit/afmodule.c (af_property_set, af_property_get): 2427 Handle them. 2428 (af_autofitter_init): Initialize them. 2429 24302015-11-02 Ben Wagner <bungeman@gmail.com> 2431 2432 [ftfuzzer] Add support for multiple files (patch #8779). 2433 2434 Currently, libFuzzer only supports mutation of a single file. We 2435 circumvent this problem by using an uncompressed tar archive as 2436 multiple-file input for the fuzzer. 2437 2438 This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing; 2439 a constructed tarball should contain a font file as the first 2440 element, and files to be attached as further elements. 2441 2442 * src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers. 2443 (archive_read_entry_data, parse_data): New functions. 2444 (LLVMFuzzerTestOneInput): Updated. 2445 2446 * src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom 2447 mutator for libFuzzer that can mutate tarballs in a sensible way. 2448 24492015-10-31 Werner Lemberg <wl@gnu.org> 2450 2451 [sfnt] Fix cmap 14 validation (#46346). 2452 2453 * src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before 2454 accessing `numRanges' and `numMappings'. 2455 Fix size check for non-default UVS table. 2456 24572015-10-31 Werner Lemberg <wl@gnu.org> 2458 2459 [sfnt] Handle infinite recursion in bitmap strikes (#46344). 2460 2461 * src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc, 2462 tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned, 2463 tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add 2464 argument for recursion depth. 2465 (tt_sbit_decoder_load_compound): Add argument for recursion depth. 2466 Increase recursion counter for recursive call. 2467 (tt_sbit_decoder_load_image): Add argument for recursion depth. 2468 Check recurse depth. 2469 (tt_face_load_sbit_image): Updated. 2470 24712015-10-29 Werner Lemberg <wl@gnu.org> 2472 2473 * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor. 2474 24752015-10-29 Werner Lemberg <wl@gnu.org> 2476 2477 * CMakeLists.txt: Remove code to set MSVC's /FD compiler switch. 2478 2479 Problem reported by David Capello <davidcapello@gmail.com>; see 2480 2481 https://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html 2482 2483 for details. 2484 24852015-10-27 Werner Lemberg <wl@gnu.org> 2486 2487 [pfr] Add some safety guards (#46302). 2488 2489 * src/pfr/pfrload.h (PFR_CHECK): Rename to... 2490 (PFR_CHECK_SIZE): ... this. 2491 (PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE. 2492 2493 * src/pfr/pfrload.c (pfr_log_font_count): Check `count'. 2494 (pfr_extra_item_load_kerning_pairs): Remove tracing message. 2495 (pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate. 2496 Allocate `chars' after doing a size checks. 2497 2498 * src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid 2499 bitmap format to... 2500 (pfr_slot_load_bitmap): ... this function. 2501 Check bitmap size. 2502 25032015-10-26 Werner Lemberg <wl@gnu.org> 2504 2505 [truetype] Fix sanitizing logic for `loca' (#46223). 2506 2507 * src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an 2508 incorrect adjustment of the number of glyphs, most often using far 2509 too large values. 2510 25112015-10-25 Werner Lemberg <wl@gnu.org> 2512 2513 [autofit] Improve tracing. 2514 2515 * src/autofit/afhints.c (af_print_idx, af_get_segment_index, 2516 af_get_edge_index): New functions. 2517 2518 (af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'. 2519 Add segment and edge index for each point. 2520 Slightly change printing order of some elements. 2521 Don't print `-1' but `--' for missing elements. 2522 2523 (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove 2524 unnecessary `|', `[', and `]'. 2525 Don't print `-1' but `--' for missing elements. 2526 25272015-10-24 Werner Lemberg <wl@gnu.org> 2528 2529 [sfnt] Sanitize bitmap strike glyph height. 2530 2531 Problem reported by Nikolay Sivov <bunglehead@gmail.com>. 2532 2533 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value 2534 for `metrics->height' by applying some heuristics. 2535 25362015-10-22 Werner Lemberg <wl@gnu.org> 2537 2538 [sfnt, type42] Fix clang compiler warnings. 2539 2540 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'. 2541 2542 * src/type42/t42parse.c (t42_parse_sfnts): Use proper cast. 2543 25442015-10-22 Dave Arnold <darnold@adobe.com> 2545 Werner Lemberg <wl@gnu.org> 2546 2547 [cff] Avoid overflow/module arithmetic. 2548 2549 This modifies the addition of subroutine number to subroutine bias 2550 from unsigned to signed, but does not change any results. 2551 2552 * src/cff/cf2ft.c (cf2_initGlobalRegionBuffer, 2553 cf2_initLocalRegionBuffer): Change variable names from (unsigned) 2554 `idx' to (signed) `subrNum', since it is not an index until after 2555 the bias is added. 2556 * src/cff/cf2ft.h: Updated. 2557 2558 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>: 2559 Updated similarly. 2560 25612015-10-22 Werner Lemberg <wl@gnu.org> 2562 2563 [cid] Better check of `SubrCount' dictionary entry (#46272). 2564 2565 * src/cid/cidload.c (cid_face_open): Add more sanity tests for 2566 `fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'. 2567 25682015-10-21 Werner Lemberg <wl@gnu.org> 2569 2570 [base] Pacify compiler (#46266). 2571 2572 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and 2573 `anchor'. 2574 25752015-10-21 Werner Lemberg <wl@gnu.org> 2576 2577 [type42] Fix heap buffer overflow (#46269). 2578 2579 * src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in 2580 bounds checking. 2581 25822015-10-21 Dave Arnold <darnold@adobe.com> 2583 2584 [cff] Fix limit in assert for max hints. 2585 2586 * src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the 2587 limit (96 bits). 2588 25892015-10-21 Dave Arnold <darnold@adobe.com> 2590 2591 [cff] Remove an assert (#46107). 2592 2593 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges 2594 in wrong order. 2595 25962015-10-21 Werner Lemberg <wl@gnu.org> 2597 2598 [sfnt] Avoid unnecessarily large allocation for WOFFs (#46257). 2599 2600 * src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize' 2601 only after thorough checks. 2602 Add tracing messages. 2603 26042015-10-21 Werner Lemberg <wl@gnu.org> 2605 2606 [type42] Better check invalid `sfnts' array data (#46255). 2607 2608 * src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be 2609 checked individually against available data size. 2610 26112015-10-20 Werner Lemberg <wl@gnu.org> 2612 2613 [cid] Add a bunch of safety checks. 2614 2615 * src/cid/cidload.c (parse_fd_array): Check `num_dicts' against 2616 stream size. 2617 (cid_read_subrs): Check largest offset against stream size. 2618 (cid_parse_dict): Move safety check to ... 2619 (cid_face_open): ... this function. 2620 Also test length of binary data and values of `SDBytes', 2621 `SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'. 2622 26232015-10-20 Werner Lemberg <wl@gnu.org> 2624 2625 [cid] Avoid segfault with malformed input (#46250). 2626 2627 * src/cid/cidload.c (cid_read_subrs): Return a proper error code for 2628 unsorted offsets. 2629 26302015-10-20 StudioEtrange <nomorgan@gmail.com> 2631 2632 * CMakeLists.txt: Enable shared library builds on MinGW (#46233). 2633 26342015-10-20 Werner Lemberg <wl@gnu.org> 2635 2636 * src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229). 2637 26382015-10-19 Ben Wagner <bungeman@gmail.com> 2639 2640 [cid] Better handle invalid glyph stream offsets (#46221). 2641 2642 * src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph 2643 length. 2644 26452015-10-18 Werner Lemberg <wl@gnu.org> 2646 2647 [psaux] Fix tracing of negative numbers. 2648 2649 Due to incorrect casting negative numbers were shown as very large 2650 (positive) integers on 64bit systems. 2651 2652 * src/psaux/t1decode.c (t1_decoder_parse_charstrings) <op_none>: 2653 Use division instead of shift. 2654 26552015-10-18 Werner Lemberg <wl@gnu.org> 2656 2657 [truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223). 2658 2659 * devel/ftoption.h, include/freetype/config/ftoption.h: Surround it 2660 with #ifndef ... #endif, as suggested in the tracker issue. 2661 26622015-10-18 Werner Lemberg <wl@gnu.org> 2663 2664 [truetype] Better protection against malformed `fpgm' (#46223). 2665 2666 * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a 2667 malformed `fpgm' table more than once. 2668 26692015-10-17 Werner Lemberg <wl@gnu.org> 2670 2671 * src/cid/cidgload.c (cid_load_glyph): Fix memory leak. 2672 2673 Reported by Kostya Serebryany <kcc@google.com>. 2674 26752015-10-17 Werner Lemberg <wl@gnu.org> 2676 2677 [bdf] Prevent memory leak (#46217). 2678 2679 * src/bdf/bdflib.c (_bdf_parse_glyphs) <STARTCHAR>: Check 2680 _BDF_GLYPH_BITS. 2681 26822015-10-17 Werner Lemberg <wl@gnu.org> 2683 2684 [bdf] Use stream size to adjust number of glyphs. 2685 2686 * src/bdf/bdflib.c (ACMSG17): New message macro. 2687 (_bdf_parse_t): Add member `size'. 2688 (bdf_load_font): Set `size'. 2689 (_bdf_parse_glyphs): Adjust `cnt' if necessary. 2690 26912015-10-17 Werner Lemberg <wl@gnu.org> 2692 2693 * src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size. 2694 26952015-10-17 Werner Lemberg <wl@gnu.org> 2696 2697 * src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222). 2698 26992015-10-17 Werner Lemberg <wl@gnu.org> 2700 2701 [psaux] Fix heap buffer overflow (#46221). 2702 2703 * src/psaux/t1decode.c (t1_decoder_parse_charstring) <operator 12>: 2704 Fix limit check. 2705 27062015-10-17 Werner Lemberg <wl@gnu.org> 2707 2708 * src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220). 2709 27102015-10-15 Kostya Serebryany <kcc@google.com> 2711 2712 [ftfuzzer] Add README. 2713 2714 * src/tools/ftfuzzer/README: New file. 2715 27162015-10-15 Ben Wagner <bungeman@gmail.com> 2717 2718 [bdf] Fix memory leak (#46213). 2719 2720 * src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in 2721 case of error. 2722 27232015-10-15 Werner Lemberg <wl@gnu.org> 2724 2725 [truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208). 2726 2727 * devel/ftoption.h, include/freetype/config/ftoption.h 2728 (TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro. 2729 2730 * src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed. 2731 (TT_RunIns): Updated. 2732 27332015-10-15 Werner Lemberg <wl@gnu.org> 2734 2735 * src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing. 2736 2737 The used indices were off by 1. 2738 27392015-10-15 Ben Wagner <bungeman@gmail.com> 2740 Werner Lemberg <wl@gnu.org> 2741 2742 * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211). 2743 27442015-10-15 Werner Lemberg <wl@gnu.org> 2745 2746 [base] Compute MD5 checksums only if explicitly requested. 2747 2748 This improves profiling accuracy. 2749 2750 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it. 2751 27522015-10-14 Werner Lemberg <wl@gnu.org> 2753 2754 [base] Use `FT_' namespace for MD5 functions (#42366). 2755 2756 * src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'. 2757 Undefine HAVE_OPENSSL. 2758 27592015-10-13 Werner Lemberg <wl@gnu.org> 2760 2761 [type1] Correctly handle missing MM axis names (#46202). 2762 2763 * src/type1/t1load.c (T1_Get_MM_Var): Implement it. 2764 27652015-10-13 Werner Lemberg <wl@gnu.org> 2766 2767 [pcf] Quickly exit if font index < 0. 2768 2769 Similar to other font formats, this commit makes the parser no 2770 longer check the whole PCF file but only the header and the TOC if 2771 we just want to get the number of available faces (and a proper 2772 recognition of the font format). 2773 2774 * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated. 2775 Exit quickly if face_index < 0. 2776 2777 * src/pcfread.c (pcf_load_font): Add `face_index' argument. 2778 Exit quickly if face_index < 0. 2779 2780 * src/pcf/pcf.h: Updated. 2781 27822015-10-13 Werner Lemberg <wl@gnu.org> 2783 2784 [ftfuzzer] Handle TTCs and MM/GX variations. 2785 2786 This patch also contains various other improvements. 2787 2788 * src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject 2789 pre-C++11 compilers. 2790 (FT_Global): New class. Use it to provide a global constructor and 2791 destructor for the `FT_Library' object. 2792 (setIntermediateAxis): New function to select an (arbitrary) 2793 instance. 2794 (LLVMFuzzerTestOneInput): Loop over all faces and named instances. 2795 Also call `FT_Set_Char_Size'. 2796 27972015-10-13 Werner Lemberg <wl@gnu.org> 2798 2799 [truetype] Refine some GX sanity tests. 2800 2801 Use the `gvar' table size instead of the remaining bytes in the 2802 stream. 2803 2804 * src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'. 2805 2806 * src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'. 2807 (ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument 2808 `size'. 2809 (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated. 2810 28112015-10-13 Werner Lemberg <wl@gnu.org> 2812 2813 [truetype] Another GX sanity test. 2814 2815 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check 2816 `tupleCount'. 2817 Add tracing message. 2818 28192015-10-13 Werner Lemberg <wl@gnu.org> 2820 2821 [truetype] Fix memory leak for broken GX fonts (#46188). 2822 2823 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of 2824 deallocation. 2825 28262015-10-13 Werner Lemberg <wl@gnu.org> 2827 2828 [truetype] Fix commit from 2015-10-10. 2829 2830 * src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error 2831 handling body to condition. 2832 28332015-10-12 Werner Lemberg <wl@gnu.org> 2834 2835 [unix] Make MKDIR_P actually work. 2836 2837 * builds/unix/configure.raw: Fix underquoting of `INSTALL' and 2838 `MKDIR_P'. 2839 2840 Problem reported by Dan Liddell <lddll@yahoo.com>. 2841 28422015-10-11 Werner Lemberg <wl@gnu.org> 2843 2844 [sfnt] Improve extraction of number of named instances. 2845 2846 * src/sfnt/sfobjs.c (sfnt_init_face) 2847 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against 2848 `fvar' table size. 2849 28502015-10-10 Alexei Podtelezhnikov <apodtele@gmail.com> 2851 2852 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow 2853 (#46149). 2854 28552015-10-10 Werner Lemberg <wl@gnu.org> 2856 2857 [sfnt] Fix infinite loops with broken cmaps (#46167). 2858 2859 * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care 2860 of border conditions (i.e., if the loops exit naturally). 2861 28622015-10-10 Werner Lemberg <wl@gnu.org> 2863 2864 [truetype] More sanity tests for GX handling. 2865 2866 These tests should mainly help avoid unnecessarily large memory 2867 allocations in case of malformed fonts. 2868 2869 * src/truetype/ttgxvar.c (ft_var_readpackedpoints, 2870 ft_var_readpackeddeltas): Check number of points against stream 2871 size. 2872 (ft_var_load_avar): Check `pairCount' against table length. 2873 (ft_var_load_gvar): Check `globalCoordCount' and `glyphCount' 2874 against table length. 2875 (tt_face_vary_cvt): Check `tupleCount' and `offsetToData'. 2876 Fix trace. 2877 (TT_Vary_Apply_Glyph_Deltas): Fix trace. 2878 Free `sharedpoints' to avoid memory leak. 2879 28802015-10-10 Werner Lemberg <wl@gnu.org> 2881 2882 [truetype] Better protection against malformed GX data (#46166). 2883 2884 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly 2885 handle empty `localpoints' array. 2886 28872015-10-10 Werner Lemberg <wl@gnu.org> 2888 2889 * src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162). 2890 28912015-10-09 Werner Lemberg <wl@gnu.org> 2892 2893 * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size. 2894 28952015-10-08 Werner Lemberg <wl@gnu.org> 2896 2897 [pcf] Protect against invalid number of TOC entries (#46159). 2898 2899 * src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries 2900 against size of data stream. 2901 29022015-10-08 Werner Lemberg <wl@gnu.org> 2903 2904 [type42] Protect against invalid number of glyphs (#46159). 2905 2906 * src/type42/t42parse.c (t42_parse_charstrings): Check number of 2907 `CharStrings' dictionary entries against size of data stream. 2908 29092015-10-08 Werner Lemberg <wl@gnu.org> 2910 2911 [sfnt] Fix some signed overflows (#46149). 2912 2913 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics) 2914 <TT_SBIT_TABLE_TYPE_SBIX>: Use `FT_MulDiv'. 2915 29162015-10-08 Werner Lemberg <wl@gnu.org> 2917 2918 [type1] Protect against invalid number of subroutines (#46150). 2919 2920 * src/type1/t1load.c (parse_subrs): Check number of 2921 `Subrs' dictionary entries against size of data stream. 2922 29232015-10-07 Kostya Serebryany <kcc@google.com> 2924 2925 [ftfuzzer] Add support for LLVM's LibFuzzer. 2926 2927 * src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files. 2928 29292015-10-06 Alexei Podtelezhnikov <apodtele@gmail.com> 2930 2931 [smooth] Faster alternative line renderer. 2932 2933 This implementation renders the entire line segment at once without 2934 subdividing it into scanlines. The main speed improvement comes from 2935 reducing the number of divisions to just two per line segment, which 2936 is a bare minimum to calculate cell coverage in a smooth rasterizer. 2937 Notably, the progression from cell to cell does not itself require any 2938 divisions at all. The speed improvement is more noticeable at larger 2939 sizes. 2940 2941 * src/smooth/ftgrays.c (gray_render_line): New implementation. 2942 29432015-10-06 Werner Lemberg <wl@gnu.org> 2944 2945 [cff] Return correct PS names from pure CFF (#46130). 2946 2947 * src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for 2948 SFNT. 2949 29502015-10-04 Werner Lemberg <wl@gnu.org> 2951 2952 [base] Replace left shifts with multiplication (#46118). 2953 2954 * src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it. 2955 29562015-10-04 Werner Lemberg <wl@gnu.org> 2957 2958 * Version 2.6.1 released. 2959 ========================= 2960 2961 2962 Tag sources with `VER-2-6-1'. 2963 2964 * docs/VERSION.DLL: Update documentation and bump version number to 2965 2.6.1. 2966 2967 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, 2968 builds/windows/vc2005/index.html, 2969 builds/windows/vc2008/freetype.vcproj, 2970 builds/windows/vc2008/index.html, 2971 builds/windows/vc2010/freetype.vcxproj, 2972 builds/windows/vc2010/index.html, 2973 builds/windows/visualc/freetype.dsp, 2974 builds/windows/visualc/freetype.vcproj, 2975 builds/windows/visualc/index.html, 2976 builds/windows/visualce/freetype.dsp, 2977 builds/windows/visualce/freetype.vcproj, 2978 builds/windows/visualce/index.html, 2979 builds/wince/vc2005-ce/freetype.vcproj, 2980 builds/wince/vc2005-ce/index.html, 2981 builds/wince/vc2008-ce/freetype.vcproj, 2982 builds/wince/vc2008-ce/index.html: s/2.6/2.6.1/, s/26/261/. 2983 2984 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. 2985 2986 * builds/unix/configure.raw (version_info): Set to 18:1:12. 2987 * CMakeLists.txt (VERSION_PATCH): Set to 1. 2988 2989 * src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for 2990 dumping functions. 2991 29922015-10-04 Werner Lemberg <wl@gnu.org> 2993 2994 [bzip2, gzip] Avoid access of uninitialized memory (#46109). 2995 2996 * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c 2997 (ft_gzip_file_fill_input): In case of an error, adjust the limit to 2998 avoid copying uninitialized memory. 2999 30002015-10-03 Werner Lemberg <wl@gnu.org> 3001 3002 [bzip2, gzip] Avoid access of uninitialized memory (#46109). 3003 3004 * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c 3005 (ft_gzip_file_fill_output): In case of an error, adjust the limit to 3006 avoid copying uninitialized memory. 3007 30082015-10-01 Alexei Podtelezhnikov <apodtele@gmail.com> 3009 3010 [smooth] Clean up worker. 3011 3012 * src/smooth/ftgrays.c (gray_TWorker): Remove never used fields. 3013 30142015-10-01 Werner Lemberg <wl@gnu.org> 3015 3016 [sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078). 3017 3018 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of 3019 border conditions (i.e., if the loop exits naturally). 3020 30212015-10-01 Werner Lemberg <wl@gnu.org> 3022 3023 * src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges. 3024 They should be a subset of `af_deva_uniranges'. 3025 30262015-10-01 Werner Lemberg <wl@gnu.org> 3027 3028 [sfnt] Make `tt_cmap4_char_map_linear' faster (#46078). 3029 3030 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to 3031 reject too large glyph indices. 3032 30332015-09-30 Alexei Podtelezhnikov <apodtele@gmail.com> 3034 3035 [smooth] Clean up worker. 3036 3037 * src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'. 3038 (gray_start_cell, gray_render_line): Update. 3039 30402015-09-30 Werner Lemberg <wl@gnu.org> 3041 3042 [autofit] Replace `no-base' with `non-base'. 3043 3044 * src/autofit/*: Do it. 3045 30462015-09-30 Werner Lemberg <wl@gnu.org> 3047 3048 [sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078). 3049 3050 * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better 3051 skip invalid segments. 3052 If searching the next character, provide a more efficient logic to 3053 speed up the code. 3054 30552015-09-30 Werner Lemberg <wl@gnu.org> 3056 3057 [truetype] Adjust number of glyphs for malformed `loca' tables. 3058 3059 * src/truetype/ttpload.c (tt_face_load_loca): Implement it. 3060 30612015-09-29 Werner Lemberg <wl@gnu.org> 3062 3063 [pshinter] Avoid harmless overflow (#45984). 3064 3065 * src/pshinter/pshglob.c (psh_blues_set_zones): Fix it. 3066 30672015-09-28 Werner Lemberg <wl@gnu.org> 3068 3069 [autofit] Add support for Lao script. 3070 3071 Thanks to Danh Hong <danhhong@gmail.com> for guidance with blue zone 3072 characters! 3073 3074 * src/autofit/afblue.dat: Add blue zone data for Lao. 3075 3076 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 3077 3078 * src/autofit/afscript.h: Add Lao standard characters. 3079 3080 * src/autofit/afranges.c: Add Lao data. 3081 3082 * src/autofit/afstyles.h: Add Lao data. 3083 30842015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 3085 3086 [base] Fix a leak by broken sfnt-PS or resource fork (#46028). 3087 3088 open_face_from_buffer() frees passed buffer if valid font 3089 is not found. But if copying to the buffer is failed, 3090 the allocated buffer should be freed within the caller. 3091 3092 * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free 3093 the buffer `sfnt_ps' if an error caused before calling 3094 open_face_from_buffer(). 3095 (Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if 3096 an error caused before calling open_face_from_buffer(); 3097 30982015-09-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 3099 3100 [mac] Fix buffer size calculation for LWFN font. 3101 3102 * src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong 3103 to prevent confused copy by too large chunk size. 3104 31052015-09-26 Alexei Podtelezhnikov <apodtele@gmail.com> 3106 3107 * src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro. 3108 31092015-09-26 Werner Lemberg <wl@gnu.org> 3110 3111 [autofit] Minor tracing improvement. 3112 3113 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit 3114 blue zones header line if there are no blue zones. 3115 31162015-09-26 Werner Lemberg <wl@gnu.org> 3117 3118 [bzip2, gzip, lzw] Harmonize function signatures with prototype. 3119 3120 Suggested by Hin-Tak Leung. 3121 3122 * src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c 3123 (ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it. 3124 31252015-09-26 Hin-Tak Leung <htl10@users.sourceforge.net> 3126 3127 Add new FT_LOAD_COMPUTE_METRICS load flag. 3128 3129 * include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro. 3130 * src/truetype/ttgload.c (compute_glyph_metrics): Usage. 3131 31322015-09-26 Werner Lemberg <wl@gnu.org> 3133 3134 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast. 3135 31362015-09-25 Werner Lemberg <wl@gnu.org> 3137 3138 [type1] Protect against invalid number of glyphs (#46029). 3139 3140 * src/type1/t1load.c (parse_charstrings): Check number of 3141 `CharStrings' dictionary entries against size of data stream. 3142 31432015-09-23 Werner Lemberg <wl@gnu.org> 3144 3145 [sfnt] Better checks for invalid cmaps (2/2) (#46019). 3146 3147 While the current code in `FT_Get_Next_Char' correctly rejects 3148 out-of-bounds glyph indices, it can be extremely slow for malformed 3149 cmaps that use 32bit values. This commit tries to improve that. 3150 3151 * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next, 3152 tt_cmap12_char_map_binary, tt_cmap13_next, 3153 tt_cmap13_char_map_binary): Reject glyph indices larger than or 3154 equal to the number of glyphs. 3155 31562015-09-23 Werner Lemberg <wl@gnu.org> 3157 3158 [base, sfnt] Better checks for invalid cmaps (1/2). 3159 3160 * src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds 3161 glyph indices. 3162 (FT_Get_First_Char): Updated. 3163 3164 * src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character 3165 codes greater than 0xFFFF. 3166 3167 (tt_cmap8_char_index): Avoid integer overflow in computation of 3168 glyph index. 3169 (tt_cmap8_char_next): Avoid integer overflows in computation of 3170 both next character code and glyph index. 3171 3172 (tt_cmap10_char_index): Fix unsigned integer logic. 3173 (tt_cmap10_char_next): Avoid integer overflow in computation of 3174 next character code. 3175 3176 (tt_cmap12_next): Avoid integer overflows in computation of both 3177 next character code and glyph index. 3178 (tt_cmap12_char_map_binary): Ditto. 3179 (tt_cmap12_char_next): Simplify. 3180 3181 (tt_cmap13_char_map_binary): Avoid integer overflow in computation 3182 of next character code. 3183 (tt_cmap13_char_next): Simplify. 3184 31852015-09-21 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 3186 3187 [base] Check too long POST and sfnt resource (#45919). 3188 3189 * src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the 3190 resource fork for Mac OS. Resource forks larger than 16 MB can be 3191 written but can't be handled correctly, at least in Carbon routine. 3192 See https://support.microsoft.com/en-us/kb/130437. 3193 3194 * src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x' 3195 prefix for `%p' formatter. 3196 3197 * src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and 3198 total size of the concatenated POST resource before buffer 3199 allocation. 3200 (Mac_Read_sfnt_Resource): Check the declared size of sfnt resource 3201 before buffer allocation. 3202 3203 * src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the 3204 total resource size before buffer allocation. 3205 32062015-09-19 Werner Lemberg <wl@gnu.org> 3207 3208 [sfnt] Improve handling of invalid SFNT table entries (#45987). 3209 3210 This patch fixes weaknesses in function `tt_face_load_font_dir'. 3211 3212 - It incorrectly assumed that valid tables are always at the 3213 beginning. As a consequence, some valid tables after invalid 3214 entries (which are ignored) were never seen. 3215 3216 - Duplicate table entries (this is, having the same tag) were not 3217 rejected. 3218 3219 - The number of valid tables was sometimes too large, leading to 3220 access of invalid tables. 3221 3222 * src/sfnt/ttload.c (check_table_dir): Add argument to return number 3223 of valid tables. 3224 Add another tracing message. 3225 (tt_face_load_font_dir): Only allocate table array for valid 3226 entries as returned by `check_table_dir'. 3227 Reject duplicate tables and adjust number of valid tables 3228 accordingly. 3229 32302015-09-19 Werner Lemberg <wl@gnu.org> 3231 3232 [pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999). 3233 3234 * src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short, 3235 then take the absolute value. 3236 Also apply FT_ABS to `height'. 3237 32382015-09-17 Werner Lemberg <wl@gnu.org> 3239 3240 [type42] Fix memory leak (#45989). 3241 3242 * src/type42/t42parse.c (t42_parse_charstrings): Allow only a single 3243 `CharStrings' array. 3244 32452015-09-17 Werner Lemberg <wl@gnu.org> 3246 3247 [psaux] Fix memory leak (#45986). 3248 3249 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>: 3250 Free `temp' in case of error. 3251 32522015-09-17 Werner Lemberg <wl@gnu.org> 3253 3254 [psaux] Improve tracing message. 3255 3256 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>: 3257 Handle plural correctly. 3258 32592015-09-17 Werner Lemberg <wl@gnu.org> 3260 3261 [pcf] Fix integer overflows (#45985). 3262 3263 * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv. 3264 32652015-09-17 Werner Lemberg <wl@gnu.org> 3266 3267 [pcf] Use FT_ABS for some property values (#45893). 3268 3269 * src/pcf/pcfread.c (pcf_load_font): Take absolute values for 3270 AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and 3271 RESOLUTION_Y. In tracing mode, add warnings. 3272 32732015-09-16 Werner Lemberg <wl@gnu.org> 3274 3275 Minor fixes for some clang warnings. 3276 3277 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing 3278 initialization. 3279 3280 * src/truetype/ttgload.c (TT_Process_Composite_Component): Cast. 3281 32822015-09-15 Werner Lemberg <wl@gnu.org> 3283 3284 [type1, type42] Fix memory leaks (#45966). 3285 3286 * src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis 3287 names. 3288 (parse_blend_design_map): Allow only a single design map. 3289 (parse_encoding): Handle multiple encoding vectors. 3290 3291 * src/type42/t42parse.c (t42_parse_encoding): Handle multiple 3292 encoding vectors. 3293 32942015-09-15 Werner Lemberg <wl@gnu.org> 3295 3296 [truetype] Fix integer type (#45965). 3297 3298 * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it. 3299 33002015-09-15 Werner Lemberg <wl@gnu.org> 3301 3302 * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964). 3303 33042015-09-15 Werner Lemberg <wl@gnu.org> 3305 3306 [type1, type42] Check encoding array size (#45961). 3307 3308 * src/type1/t1load.c (parse_encoding), src/type42/t42parse.c 3309 (t42_parse_encoding): Do it. 3310 33112015-09-14 Alexei Podtelezhnikov <apodtele@gmail.com> 3312 3313 * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve. 3314 33152015-09-14 Werner Lemberg <wl@gnu.org> 3316 3317 [type1] Fix another potential buffer overflow (#45955). 3318 3319 * src/type1/t1parse (T1_Get_Private_Dict): Assure that check for 3320 `eexec' doesn't exceed `limit'. 3321 33222015-09-13 Werner Lemberg <wl@gnu.org> 3323 3324 Replace `mkinstalldirs' with AC_PROG_MKDIR_P. 3325 3326 * builds/unix/mkinstalldirs: Removed, no longer needed. 3327 3328 * builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'. 3329 Update pwd call for `$INSTALL'. 3330 3331 * builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'. 3332 3333 * autogen.sh: Updated. 3334 33352015-09-13 Werner Lemberg <wl@gnu.org> 3336 3337 [winfonts] Check alignment shift count for resource data (#45938). 3338 3339 * src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it. 3340 33412015-09-13 Werner Lemberg <wl@gnu.org> 3342 3343 [type1] Fix potential buffer overflow (#45923). 3344 3345 * src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't 3346 point to end of file buffer. 3347 33482015-09-13 Werner Lemberg <wl@gnu.org> 3349 3350 [gzip] Fix access of small compressed files (#45937). 3351 3352 * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak. 3353 3354 (ft_gzip_get_uncompressed_file): Correct byte order while reading 3355 unsigned long value. Without this change, the whole optimization of 3356 accessing small files in `FT_Stream_OpenGzip' is never executed! As 3357 a consequence, access to PCF files in general (which are normally 3358 small files) should be much improved now as originally intended. 3359 33602015-09-11 Werner Lemberg <wl@gnu.org> 3361 3362 [psaux] Fix potential buffer overflow (#45922). 3363 3364 * src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is 3365 enclosed in balanced expressions, ensure that the cursor position 3366 doesn't get larger than the current limit. 3367 33682015-09-11 Werner Lemberg <wl@gnu.org> 3369 3370 [base] Avoid crash while tracing `load_mac_face'. 3371 3372 Reported in Savannah bug #45919. 3373 3374 * src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while 3375 tracing. 3376 33772015-09-11 Werner Lemberg <wl@gnu.org> 3378 3379 [type42] Fix endless loop (#45920). 3380 3381 * src/type42/t42parse.c (t42_parse_encoding): Synchronize with 3382 type1's `parse_encoding'. 3383 33842015-09-10 Werner Lemberg <wl@gnu.org> 3385 3386 [docmaker] Allow `-' in bold and italic markup. 3387 3388 * src/tools/docmaker/sources.py (re_italic, re_bold): Adjust 3389 accordingly. 3390 33912015-09-09 Alexei Podtelezhnikov <apodtele@gmail.com> 3392 3393 * src/base/ftcalc.c (FT_RoundFix): Improve. 3394 33952015-09-09 Wojciech Mamrak <wmamrak@gmail.com> 3396 3397 * src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize. 3398 3399 This commit makes the functions behave as expected, this is, 3400 rounding towards plus or minus infinity. 3401 34022015-09-07 Alexei Podtelezhnikov <apodtele@gmail.com> 3403 3404 * src/smooth/ftgrays.c (gray_render_line): Simplify clipping. 3405 34062015-09-04 Alexei Podtelezhnikov <apodtele@gmail.com> 3407 3408 [raster,smooth] Microoptimizations. 3409 3410 * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table, 3411 Bezier_Up): Use do-while loops. 3412 3413 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line, 3414 gray_convert_glyph): Ditto. 3415 34162015-09-04 Werner Lemberg <wl@gnu.org> 3417 3418 [autofit] Redesign code ranges (2/2). 3419 3420 This commit adds two fallback scripts (`latb', `latp') and 3421 implements support for the no-base character ranges introduced in 3422 the previous commit. 3423 3424 * src/autofit/aftypes.h (AF_ScriptClassRec): Add 3425 `script_uni_nobase_ranges' field. 3426 (AF_DEFINE_SCRIPT_CLASS): Updated. 3427 3428 * src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and 3429 `latp' fallback scripts. 3430 3431 * src/autofit/afblue.dat: Add blue zones for Latin subscript and 3432 superscript fallback scripts. 3433 3434 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 3435 3436 * src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base 3437 characters. 3438 (AF_STYLE_MASK): Updated. 3439 3440 * src/autofit/afglobal.c (SCRIPT): Updated. 3441 (af_face_globals_compute_style_coverage): Handle new style flag. 3442 3443 * src/autofit/aflatin.c (af_latin_hints_apply): Handle new style 3444 flag. 3445 3446 * src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges. 3447 34482015-09-04 Werner Lemberg <wl@gnu.org> 3449 3450 [autofit] Redesign code ranges (1/2). 3451 3452 This patch introduces auxiliary code ranges that identify no-base 3453 characters; they refer to glyphs of a script that should be hinted 3454 without alignments to blue zones (mostly diacritics). 3455 3456 It also splits off ranges for fallback scripts that handle subscript 3457 and superscript characters not covered by OpenType features. For 3458 example, this greatly helps improve the hinting of various phonetic 3459 alphabets, which contain a large amount characters that look like 3460 superscript glyphs. 3461 3462 Finally, code ranges are updated to Unicode 8.0, and enclosed 3463 characters are removed in general since they normally look better if 3464 they stay unhinted. 3465 3466 * src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode 3467 8.0. 3468 Split off superscript-like and subscript-like glyphs into... 3469 3470 (af_latb_uniranges, af_latp_uniranges): ... these two new arrays. 3471 3472 (af_xxxx_nobase_uniranges): New arrays that hold no-base characters 3473 of the corresponding character ranges. 3474 34752015-09-03 Werner Lemberg <wl@gnu.org> 3476 3477 [autofit] Pass glyph index to hinting function. 3478 3479 No functionality change yet. 3480 3481 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass 3482 glyph index. 3483 3484 * src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply), 3485 src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c 3486 (af_indic_hints_apply), src/autofit/aflatin.c 3487 (af_latin_hints_apply), src/autofit/aflatin2.c 3488 (af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g): 3489 Updated. 3490 34912015-08-30 Werner Lemberg <wl@gnu.org> 3492 3493 [autofit] Code clean-up. 3494 3495 * src/autofit/afglobal.h (AF_STYLE_MASK): New macro. 3496 (AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition. 3497 3498 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): 3499 Updated. 3500 35012015-08-30 Werner Lemberg <wl@gnu.org> 3502 3503 [autofit] Make glyph style array use 16bit values. 3504 3505 * include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use 3506 `FT_UShort' for `map' field. 3507 3508 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage, 3509 af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h 3510 (af_get_coverage): Use FT_UShort for `glyph_styles' array. 3511 3512 * src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to 3513 16 bits. 3514 (AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field. 3515 35162015-08-26 Werner Lemberg <wl@gnu.org> 3517 3518 * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828). 3519 35202015-08-25 Werner Lemberg <wl@gnu.org> 3521 3522 [base] Improve kerning tracing and documentation. 3523 3524 * src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if 3525 scaled-down kerning values differ. 3526 35272015-08-18 Werner Lemberg <wl@gnu.org> 3528 3529 [raster] Remove last remnants of `raster5' driver. 3530 3531 * src/raster/ftrend1.h (ft_raster5_renderer_class): Removed. 3532 3533 * src/raster/rastpic.c, src/raster/rastpic.h 3534 (ft_raster5_renderer_class_pic_init, 3535 ft_raster5_renderer_class_pic_free): Removed. 3536 35372015-08-17 Alexei Podtelezhnikov <apodtele@gmail.com> 3538 3539 [base] Improve emboldener (#45596). 3540 3541 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement 3542 of zero-length segments. 3543 35442015-08-16 Alexei Podtelezhnikov <apodtele@gmail.com> 3545 3546 [base] Reoptimize arithmetic. 3547 3548 * src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove 3549 special cases that slow down the general use. 3550 35512015-08-15 pazer <ibemad@gmail.com> 3552 3553 Fix C++ compilation (#45762). 3554 3555 * src/base/ftstroke.c (ft_outline_glyph_class): Use 3556 FT_CALLBACK_TABLE. 3557 35582015-08-14 Alexei Podtelezhnikov <apodtele@gmail.com> 3559 3560 [truetype] Clean up. 3561 3562 * src/truetype/ttgload.c (TT_Process_Composite_Component): Use 3563 `FT_Outline_Transform' and `FT_Outline_Translate'. 3564 (translate_array): Dropped. 3565 35662015-08-14 Andreas Enge <andreas.enge@inria.fr> 3567 3568 * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261). 3569 35702015-08-13 Werner Lemberg <wl@gnu.org> 3571 3572 [truetype] Introduce named instance access to GX fonts. 3573 3574 For functions querying a face, bits 16-30 of the face index can hold 3575 the named instance index if we have a GX font. The indices start 3576 with value 1; value 0 indicates font access without GX variation 3577 data. 3578 3579 * include/freetype/freetype.h (FT_FaceRec): Update documentation. 3580 * include/freetype/internal/sfnt.h: Ditto. 3581 3582 * src/sfnt/sfobjs.c (sfnt_init_face) 3583 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and 3584 do argument checks. 3585 (sfnt_load_face): Updated. 3586 3587 * src/truetype/ttobjs.c (tt_face_init) 3588 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting 3589 the style name. 3590 3591 * src/base/ftobjs.c (open_face_from_buffer, 3592 open_face_PS_from_sfnt_stream): Updated. 3593 * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated. 3594 * src/cff/cffload.c (cff_font_load): Updated. 3595 3596 * src/cff/cffobjs.c (cff_face_init): Make function exit early for 3597 pure CFF fonts if `font_index < 0'. 3598 Updated. 3599 3600 * src/cid/cidobjs.c (cid_face_init): Updated. 3601 * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated. 3602 * src/pfr/pfrobjs.c (pfr_face_init): Updated. 3603 * src/type1/t1objs.c (T1_Face_Init): Updated. 3604 * src/type42/t42objs.c (T42_Face_Init): Updated. 3605 * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init): 3606 Updated. 3607 3608 * docs/CHANGES: Updated. 3609 36102015-08-12 Alexei Podtelezhnikov <apodtele@gmail.com> 3611 3612 [type1,cff,cid] Streamline font matrix application. 3613 3614 * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only 3615 if font matrix is not trivial. 3616 * src/cff/cffgload.c (cff_slot_load): Ditto. 3617 * src/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the 3618 entire outline. 3619 36202015-08-11 Werner Lemberg <wl@gnu.org> 3621 3622 [builds/unix] Minor. 3623 3624 * builds/unix/configure.raw: 3625 s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with 3626 similarly named uppercase variables. 3627 36282015-08-10 Alexei Podtelezhnikov <apodtele@gmail.com> 3629 3630 [type1,cid,type42] Minor improvements. 3631 3632 * src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only 3633 when necessary. Refresh comments. 3634 * src/cid/cidload.c (cid_parse_font_matrix): Ditto. 3635 * src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments. 3636 36372015-08-08 Werner Lemberg <wl@gnu.org> 3638 3639 [type42] Fix glyph access. 3640 3641 This is a severe bug: We've missed one level of indirection, as 3642 described in the Type 42 specification. As a result, ftview 3643 sometimes showed incorrect glyphs for given glyph names, and even 3644 displayed `error 0x0006' (invalid argument!) in case the number of 3645 glyph indices differed between the Type 42 font and the embedded 3646 TTF. 3647 3648 Apparently, noone ever noticed it; this shows how much Type 42 fonts 3649 are in use... 3650 3651 * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index 3652 to embedded TTF's glyph index. 3653 36542015-08-08 Werner Lemberg <wl@gnu.org> 3655 3656 [type42] Minor clean-up. 3657 3658 * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused 3659 variable. 3660 36612015-08-06 Alexei Podtelezhnikov <apodtele@gmail.com> 3662 3663 [type42] Parse FontMatrix according to specifications. 3664 3665 * src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix 3666 does not need scaling by 1000. Units_per_EM are taken from the 3667 embedded TrueType. 3668 36692015-08-06 Werner Lemberg <wl@gnu.org> 3670 3671 [autofit] Improve Arabic hinting. 3672 3673 Problem reported by Titus Nemeth <tn@tntypography.eu> (by using 3674 ttfautohint). 3675 3676 * src/autofit/afblue.dat: Add neutral blue zone for the tatweel 3677 character. 3678 3679 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 3680 36812015-08-05 Alexei Podtelezhnikov <apodtele@gmail.com> 3682 3683 [truetype] Clean up types. 3684 3685 * src/truetype/ttobjs.c (TT_Size): Move declaration from here. 3686 * include/freetype/internal/tttypes.h (TT_Size): ... to here. 3687 (TT_LoaderRec): Switch to appropriate types for `face' and `size'. 3688 * src/truetype/ttgload.c: Remove corresponding type casts. 3689 * src/truetype/ttsubpix.c: Ditto. 3690 36912015-08-05 Werner Lemberg <wl@gnu.org> 3692 3693 [autofit] Improve recognition of flat vs. rounded segments. 3694 3695 Lower the flatness threshold from upem/8 to upem/14, making the 3696 auto-hinter accept shorter elements. 3697 3698 Synchronize flat/round stem selection algorithm with blue zone code. 3699 3700 * src/autofit/aflatin.c (FLAT_THRESHOLD): New macro. 3701 (af_latin_metrics_init_blues): Use it. 3702 (af_latin_hints_compute_segments): Collect information on maximum 3703 and minimum coordinates of `on' points; use this to add a constraint 3704 for the flat/round decision similar to 3705 `af_latin_metrics_init_blues'. 3706 37072015-08-04 Werner Lemberg <wl@gnu.org> 3708 3709 Another left-shift bug (#45681). 3710 3711 * src/base/ftobjs.c (IsMacBinary): Only accept positive values for 3712 `dlen'. 3713 37142015-08-03 Alexei Podtelezhnikov <apodtele@gmail.com> 3715 3716 [base] Fix `ft_corner_orientation'. 3717 3718 Remove casting from `FT_Long' to `FT_Int' that might change the sign 3719 of the return value and make it faster too. 3720 3721 * src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay 3722 with 32-bit arithmetic when safe. Use plain math on 64-bit systems. 3723 * src/pshinter/pshalgo.c: Remove old unused code. 3724 37252015-08-03 Werner Lemberg <wl@gnu.org> 3726 3727 * src/truetype/ttgload.c (load_truetype_glyph) 3728 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs 3729 having a depth greater than 1. 3730 37312015-08-03 Werner Lemberg <wl@gnu.org> 3732 3733 Fix typo in clang bug from 2015-07-31 (#45678). 3734 3735 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality. 3736 37372015-08-02 Werner Lemberg <wl@gnu.org> 3738 3739 * CMakeLists.txt: Improve shared library support. 3740 3741 Based on a patch from John Cary <cary@txcorp.com>. 3742 37432015-08-02 Werner Lemberg <wl@gnu.org> 3744 3745 * builds/unix/freetype-config.in (enable_shared): Remove. Unused. 3746 37472015-08-02 Werner Lemberg <wl@gnu.org> 3748 3749 Fix more invalid left-shifts. 3750 3751 * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication, 3752 not left-shift. 3753 3754 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar, 3755 tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication, 3756 not left-shift. 3757 37582015-07-31 Werner Lemberg <wl@gnu.org> 3759 3760 Fix some bugs found by clang's `-fsanitize=undefined' (#45661). 3761 3762 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept 3763 positive values from header. 3764 Check overflow. 3765 3766 * src/base/ftoutln.c (SCALED): Correctly handle left-shift of 3767 negative values. 3768 3769 * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified, 3770 _bdf_clear_glyph_modified): Use unsigned long constant. 3771 3772 * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't 3773 left-shift values that can be negative. 3774 3775 * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't 3776 left-shift values that can be negative. 3777 3778 * src/raster/ftraster.c (SCALED): Correctly handle left-shift of 3779 negative values. 3780 3781 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift 3782 values that can be negative. 3783 3784 * src/truetype/ttgload.c (TT_Load_Composite_Glyph, 3785 compute_glyph_metrics, load_sbit_image): Don't left-shift values 3786 that can be negative. 3787 37882015-07-31 Werner Lemberg <wl@gnu.org> 3789 3790 Define FT_LONG_MAX. 3791 3792 * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro. 3793 * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it. 3794 37952015-07-28 Alexei Podtelezhnikov <apodtele@gmail.com> 3796 3797 * src/base/ftcalc.c (FT_Vector_NormLen): Clarify. 3798 37992015-07-27 Alexei Podtelezhnikov <apodtele@gmail.com> 3800 3801 * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions. 3802 38032015-07-26 Matthias Clasen <matthias.clasen@gmail.com> 3804 3805 [cff] Don't use `hmtx' table for LSB (#45520). 3806 3807 * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance 3808 width only. Bug introduced 2015-04-10. 3809 38102015-07-09 Werner Lemberg <wl@gnu.org> 3811 3812 Better support of user-supplied C++ namespaces. 3813 3814 See 3815 3816 https://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html 3817 3818 for a rationale. 3819 3820 * src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h, 3821 src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h, 3822 src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h 3823 (FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose 3824 header files that contain FT_{BEGIN,END}_HEADER macros by 3825 themselves. 3826 3827 * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include 3828 FT_CONFIG_STANDARD_LIBRARY_H earlier. 3829 3830 * src/truetype/ttpic.h: Include FT_INTERNAL_PIC_H. 3831 38322015-07-07 Werner Lemberg <wl@gnu.org> 3833 3834 [sfnt] Make `tt_face_get_name' member of the SFNT interface. 3835 3836 * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New 3837 prototype. 3838 (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'. 3839 3840 * src/sfnt/sfdriver.c (sfnt_interface): Updated. 3841 3842 * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'. 3843 * src/sfnt/sfobjs.h: Add prototype for it. 3844 38452015-06-30 Werner Lemberg <wl@gnu.org> 3846 3847 Fix some clang compiler warnings. 3848 3849 * src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c 3850 (cf2_interpT2CharString), src/truetype/ttgload.c 3851 (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas), 3852 src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues. 3853 38542015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> 3855 3856 [truetype] Speed up bytecode interpreter. 3857 3858 * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'. 3859 38602015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> 3861 3862 [base] Speed up emboldening. 3863 3864 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use 3865 `FT_Vector_NormLen'. 3866 38672015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> 3868 3869 [base] Implement fast vector normalization. 3870 3871 The function uses Newton's iterations instead of dividing vector 3872 components by its length, which needs a square root. This is, 3873 literally, a bit less accurate but a lot faster. 3874 3875 * src/base/ftcalc.c (FT_Vector_NormLen): New function. 3876 38772015-06-28 Werner Lemberg <wl@gnu.org> 3878 3879 * CMakeLists.txt: Always create `ftconfig.h'. 3880 3881 For non-UNIX builds, the file stays unmodified. However, it's 3882 better to have the main configuration files at the same place 3883 regardless of the OS. 3884 38852015-06-28 Werner Lemberg <wl@gnu.org> 3886 3887 * CMakeLists.txt: Improve MSVC support (#43737). 3888 38892015-06-28 Werner Lemberg <wl@gnu.org> 3890 3891 [cmake] Check for libraries and create `ftoption.h'. 3892 3893 * builds/FindHarfBuzz.cmake: New file, taken from 3894 3895 https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake 3896 3897 * CMakeLists.Txt: Add path to local cmake modules. 3898 Find dependencies for zlib, bzip2, libpng, and harfbuzz. 3899 Create `ftoption.h' file. 3900 Set up include and linker stuff for libraries. 3901 39022015-06-28 Werner Lemberg <wl@gnu.org> 3903 3904 * CMakeLists.txt: Fix creation of `ftconfig.h'. 3905 Check for UNIX header files using `check_include_file'. 3906 Set up correct header include directories. 3907 39082015-06-28 Werner Lemberg <wl@gnu.org> 3909 3910 * CMakeLists.txt: Disallow in-source builds. 3911 39122015-06-27 Werner Lemberg <wl@gnu.org> 3913 3914 * src/tools/docmaker/utils.py (check_output): Add missing `\n'. 3915 39162015-06-26 Werner Lemberg <wl@gnu.org> 3917 3918 * CMakeLists.txt: Select platform-dependent `ftdebug.c'. 3919 39202015-06-25 Werner Lemberg <wl@gnu.org> 3921 3922 * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'. 3923 Additionally, do this for UNIX only. 3924 39252015-06-25 Werner Lemberg <wl@gnu.org> 3926 3927 * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'. 3928 39292015-06-25 Werner Lemberg <wl@gnu.org> 3930 3931 Another adjustment to header locations. 3932 3933 This change is a result of a discussion thread on freetype-devel 3934 3935 https://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html 3936 3937 Re-introduce the `freetype2' subdirectory for all FreeType header 3938 files after installation, and rename the `freetype2' subdirectory in 3939 the git repository to `freetype'. 3940 3941 * include/freetype2: Renamed to... 3942 * include/freetype: This. 3943 3944 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS, 3945 PRIVATE_HEADERS): Updated. 3946 Update creation of `ftconfig.h'. 3947 Install generated `ftconfig.h'. 3948 3949 * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated. 3950 3951 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk 3952 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work), 3953 builds/unix/freetype2.in: Updated. 3954 3955 * builds/unix/freetype-config.in: Updated. 3956 * builds/unix/configure.raw: Don't check for `rmdir'. 3957 * builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable 3958 according to the autoconf info manual. 3959 * builds/unix/install.mk (install, uninstall, 3960 distclean_project_unix): Update and simplify. 3961 3962 * builds/wince/*, builds/windows/*: Updated. 3963 3964 * devel/ft2build.h, include/ft2build.h: Updated. 3965 3966 * include/freetype2/config/ftheader.h, 3967 include/freetype2/internal/ftserv.h, 3968 include/freetype2/internal/internal.h: Update all header file 3969 macros. 3970 3971 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated. 3972 3973 * docs/*: Updated. 3974 39752015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com> 3976 3977 * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp. 3978 39792015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com> 3980 3981 * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing. 3982 39832015-06-23 Werner Lemberg <wl@gnu.org> 3984 3985 s/TYPEOF/FT_TYPEOF/ (#45376). 3986 3987 * builds/unix/ftconfig.in, builds/vms/ftconfig.in, 3988 include/freetype2/config/ftconfig.h, 3989 include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it. 3990 39912015-06-22 Werner Lemberg <wl@gnu.org> 3992 3993 Fix Savannah bug #45097. 3994 3995 We no longer `pollute' the namespace of possible header file names; 3996 instead we move `ft2build.h' up by one level so that it gets 3997 installed in the default include directory (e.g., 3998 /usr/local/include). After this commit, only `ft2build.h' stays in 3999 the compiler's include path. 4000 4001 No visible changes for the user who follows the standard FreeType 4002 header inclusion rules. 4003 4004 * include/*: Move to ... 4005 * include/freetype2/*: This directory, except `ft2build.h'. 4006 4007 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS, 4008 PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated. 4009 4010 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk 4011 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work), 4012 builds/unix/install.mk (install, uninstall), 4013 builds/unix/freetype2.in: Updated. 4014 4015 * builds/unix/freetype-config.in: Updated. 4016 Emit -I directory only if it is not `/usr/include'. 4017 4018 * builds/wince/*, builds/windows/*: Updated. 4019 4020 * devel/ft2build.h, include/ft2build.h: Updated. 4021 4022 * include/freetype2/config/ftheader.h, 4023 include/freetype2/internal/ftserv.h, 4024 include/freetype2/internal/internal.h: Update all header file 4025 macros. 4026 4027 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated. 4028 40292015-06-21 Werner Lemberg <wl@gnu.org> 4030 4031 Make Jam support work again. 4032 4033 This is just very basic stuff and just a little bit tested on 4034 GNU/Linux only. I won't delve into this since I'm not a Jam user. 4035 4036 * Jamfile: Call `HDRMACRO' for `ftserv.h' also. 4037 (DEFINES): Replace with... 4038 (CCFLAGS): ... this. 4039 4040 * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is 4041 already handled in the top-level Jamfile. 4042 4043 * src/autofit/Jamfile (DEFINES): Replace with... 4044 (CCFLAGS): ... this. 4045 (_sources): Add missing files. 4046 4047 * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no 4048 longer contains macro header definitions. 4049 4050 * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile, 4051 src/truetype/Jamfile (_sources): Add missing files. 4052 40532015-06-16 Werner Lemberg <wl@gnu.org> 4054 4055 Fix Savannah bug #45326. 4056 4057 * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate 4058 definitions. 4059 40602015-06-07 Werner Lemberg <wl@gnu.org> 4061 4062 * Version 2.6 released. 4063 ======================= 4064 4065 4066 Tag sources with `VER-2-6'. 4067 4068 * docs/VERSION.DLL: Update documentation and bump version number to 4069 2.6. 4070 4071 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, 4072 builds/windows/vc2005/index.html, 4073 builds/windows/vc2008/freetype.vcproj, 4074 builds/windows/vc2008/index.html, 4075 builds/windows/vc2010/freetype.vcxproj, 4076 builds/windows/vc2010/index.html, 4077 builds/windows/visualc/freetype.dsp, 4078 builds/windows/visualc/freetype.vcproj, 4079 builds/windows/visualc/index.html, 4080 builds/windows/visualce/freetype.dsp, 4081 builds/windows/visualce/freetype.vcproj, 4082 builds/windows/visualce/index.html, 4083 builds/wince/vc2005-ce/freetype.vcproj, 4084 builds/wince/vc2005-ce/index.html, 4085 builds/wince/vc2008-ce/freetype.vcproj, 4086 builds/wince/vc2008-ce/index.html: s/2.5.5/2.6/, s/255/26/. 4087 4088 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6. 4089 (FREETYPE_PATCH): Set to 0. 4090 4091 * builds/unix/configure.raw (version_info): Set to 18:0:12. 4092 * CMakeLists.txt (VERSION_MINOR): Set to 6. 4093 (VERSION_PATCH): Set to 0. 4094 4095 * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add 4096 declarations for dumping functions. 4097 4098 * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler. 4099 4100 * builds/toplevel.mk: Use `freetype.mk's code to compute the version 4101 string. 4102 Don't include a zero patch level in version string. 4103 * builds/freetype.mk: Remove code for computing the version string. 4104 41052015-06-06 Ashish Azad <ashish.azad@samsung.com> 4106 4107 Fix Savannah bug #45260. 4108 4109 * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo. 4110 41112015-06-03 Werner Lemberg <wl@gnu.org> 4112 4113 [truetype] Fix memory leak. 4114 4115 Problem reported by Grissiom <chaos.proton@gmail.com>; in 4116 4117 https://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html 4118 4119 there is an example code to trigger the bug. 4120 4121 * src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size' 4122 data before allocating again. Bug most probably introduced four 4123 years ago in version 2.4.3. 4124 41252015-06-02 Werner Lemberg <wl@gnu.org> 4126 4127 [raster] Add more tracing. 4128 4129 * src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define. 4130 (Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span, 4131 Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls. 4132 41332015-06-01 Werner Lemberg <wl@gnu.org> 4134 4135 [truetype] While tracing opcodes, show code position and stack. 4136 4137 * src/truetype/ttinterp.c: Change all existing TRACE7 calls to 4138 TRACE6. 4139 (opcode_name): Add string lengths. 4140 (TT_RunIns): Implement display of code position and stack. 4141 41422015-05-31 Werner Lemberg <wl@gnu.org> 4143 4144 [truetype] In GX, make private point numbers work correctly. 4145 4146 This is completely missing in Apple's documentation: If a `gvar' 4147 tuple uses private point numbers (this is, deltas are specified for 4148 some points only), the uncovered points must be interpolated for 4149 this tuple similar to the IUP bytecode instruction. Examples that 4150 need this functionality are glyphs `Oslash' and `Q' in Skia.ttf. 4151 4152 * src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate, 4153 tt_handle_deltas): New functions. 4154 (TT_Vary_Get_Glyph_Deltas): Renamed to... 4155 (TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the 4156 points and does no longer return an array of deltas. 4157 Add tracing information. 4158 Call `tt_handle_deltas' to interpolate missing deltas. 4159 Also fix a minor memory leak in case of error. 4160 4161 * src/truetype/ttgxvar.h: Updated. 4162 4163 * src/truetype/ttgload.c (TT_Process_Simple_Glyph, 4164 load_truetype_glyph): Updated. 4165 41662015-05-31 Werner Lemberg <wl@gnu.org> 4167 4168 [truetype] In GX, make intermediate tuplets work at extrema. 4169 4170 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition. 4171 41722015-05-31 Werner Lemberg <wl@gnu.org> 4173 4174 [truetype] Add tracing information to GX code. 4175 4176 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar, 4177 ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend, 4178 TT_Set_Var_Design, tt_face_vary_cvt): Do it. 4179 41802015-05-28 Werner Lemberg <wl@gnu.org> 4181 4182 * src/tools/apinames.c (names_dump): Fix invalid reference. 4183 4184 Problem reported by Guzman Mosqueda, Jose R 4185 <jose.r.guzman.mosqueda@intel.com>. 4186 41872015-05-24 Werner Lemberg <wl@gnu.org> 4188 4189 [truetype] Fix commit from 2015-05-22. 4190 4191 * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code 4192 with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'. 4193 4194 Problem reported by Nikolaus Waxweiler <madigens@gmail.com>. 4195 41962015-05-23 Werner Lemberg <wl@gnu.org> 4197 4198 [truetype] Fix return values of GETINFO bytecode instruction. 4199 4200 * src/truetype/ttinterp.h (TT_ExecContextRec): New fields 4201 `vertical_lcd' and `gray_cleartype'. 4202 4203 * src/truetype/ttgload.c (tt_loader_init): Initialize new fields. 4204 Change `symmetrical smoothing' to TRUE, since FreeType produces 4205 exactly this. 4206 4207 * src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit 4208 values for symmetrical smoothing, namely 11/18. 4209 Handle bits for vertical LCD subpixels (8/15) and Gray ClearType 4210 (12/19). 4211 42122015-05-23 Werner Lemberg <wl@gnu.org> 4213 4214 [truetype] Minor. 4215 4216 * src/truetype/ttinterp.h (TT_ExecContext): 4217 s/subpixel/subpixel_hinting. 4218 4219 * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated. 4220 42212015-05-22 Werner Lemberg <wl@gnu.org> 4222 4223 [truetype] Support selector index 3 of the INSTCTRL instruction. 4224 4225 This flag activates `native ClearType hinting', disabling backward 4226 compatibility mode as described in Greg Hitchcocks whitepaper. In 4227 other words, it enables unrestricted functionality of all TrueType 4228 instructions in ClearType. 4229 4230 * src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks' 4231 unconditionally. 4232 (tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of 4233 `GS.instruct_control' is active. 4234 4235 * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3. 4236 (Ins_GETINFO): Updated. 4237 4238 * docs/CHANGES: Document it. 4239 42402015-05-20 Werner Lemberg <wl@gnu.org> 4241 4242 [truetype] Minor. 4243 4244 * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod' 4245 argument. 4246 42472015-05-17 Werner Lemberg <wl@gnu.org> 4248 4249 [truetype] Fix loading of composite glyphs. 4250 4251 * src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the 4252 ARGS_ARE_XY_VALUES flag is not set, handle argument values as 4253 unsigned. I trust `ttx' (which has exactly such code) that it does 4254 the right thing here... 4255 4256 The reason that noone has ever noticed this bug is probably the fact 4257 that point-aligned subglyphs are rare, as are subglyphs with a 4258 number of points in the range [128;255], which is quite large (or 4259 even in the range [32768;65535], which is extremely unlikely). 4260 42612015-05-12 Chris Liddell <chris.liddell@artifex.com> 4262 4263 [cff] Make the `*curveto' operators more tolerant. 4264 4265 * src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes 4266 `vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate, 4267 pulling values off the stack until the stack is exhausted. 4268 Implicitly the stack must be a multiple (or for subtly different 4269 behaviour) a multiple plus a specific number of extra values deep. 4270 If that's not the case, enforce it (as the old code did). 4271 42722015-05-12 Chris Liddell <chris.liddell@artifex.com> 4273 4274 [cff] fix incremental interface with new cff code. 4275 4276 * src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental 4277 interface to retrieve glyph data for a SEAC, it be left to the 4278 incremental interface callback to apply the encoding to raw 4279 character index (as it was in the previous code). 4280 42812015-04-29 Alexei Podtelezhnikov <apodtele@gmail.com> 4282 4283 [autofit] Speed up IUP. 4284 4285 * src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to 4286 the same position from true interpolation, use `scale' to reduce 4287 divisions. 4288 42892015-04-28 Werner Lemberg <wl@gnu.org> 4290 4291 [cff] Use `name' table for PS name if we have a SFNT-CFF. 4292 4293 This follows the OpenType 1.7 specification. See 4294 4295 https://tug.org/pipermail/tex-live/2015-April/036634.html 4296 4297 for a discussion. 4298 4299 * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we 4300 have an SFNT. 4301 43022015-04-27 Alexei Podtelezhnikov <apodtele@gmail.com> 4303 4304 [truetype] Speed up IUP. 4305 4306 * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial 4307 snapping to the same position from true interpolation. 4308 43092015-04-21 Werner Lemberg <wl@gnu.org> 4310 4311 [autofit] By default, enable warping code but switch off warping. 4312 4313 Suggested by Behdad. 4314 4315 * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER. 4316 4317 * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping' 4318 with `false'. 4319 43202015-04-21 Werner Lemberg <wl@gnu.org> 4321 4322 * docs/CHANGES: Updated. 4323 43242015-04-21 Werner Lemberg <wl@gnu.org> 4325 4326 [autofit] Introduce `warping' property. 4327 4328 This code replaces the debugging hook from the previous commit with 4329 a better, more generic solution. 4330 4331 * include/ftautoh.h: Document it. 4332 4333 * src/autofit/afmodule.h (AF_ModuleRec) 4334 [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field. 4335 4336 * src/autofit/afmodule.c (_af_debug_disable_warper): Remove. 4337 (af_property_set, af_property_get, af_autofitter_init) 4338 [AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option. 4339 4340 * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no 4341 longer existing `_af_debug_disable_warper'. 4342 4343 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c 4344 (af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init) 4345 [AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the 4346 scaler flags if warping is off. 4347 4348 * src/autofit/aftypes.h: Updated. 4349 43502015-04-16 Werner Lemberg <wl@gnu.org> 4351 4352 [autofit] Add debugging hook to disable warper. 4353 4354 * src/autofit/afmodule.c (_af_debug_disable_warper) 4355 [FT_DEBUG_AUTOFIT]: New global variable. 4356 4357 * src/autofit/aftypes.h: Updated. 4358 (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet). 4359 4360 * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro. 4361 4362 * src/autofit/aflatin.c (af_latin_hints_apply) 4363 [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use 4364 of warper. 4365 4366 * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply) 4367 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'. 4368 4369 * src/autofit/aflatin2.c (af_latin2_hints_apply) 4370 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'. 4371 43722015-04-10 Werner Lemberg <wl@gnu.org> 4373 4374 [cff] Update advance width handling to OpenType 1.7. 4375 4376 Problem reported by Behdad. 4377 4378 * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case 4379 separately. 4380 4381 * src/cff/cffgload.c (cff_slot_load): Use advance width and side 4382 bearing values from `hmtx' table if present. 4383 43842015-04-03 Alexei Podtelezhnikov <apodtele@gmail.com> 4385 4386 * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop. 4387 43882015-04-02 Alexei Podtelezhnikov <apodtele@gmail.com> 4389 4390 * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic. 4391 43922015-04-01 Alexei Podtelezhnikov <apodtele@gmail.com> 4393 4394 [autofit] Finish the thought. 4395 4396 * src/autofit/afhints.c (af_direction_compute): make sure the long arm 4397 is never negative so that its `FT_ABS' is not necessary. 4398 43992015-04-01 Werner Lemberg <wl@gnu.org> 4400 4401 [autofit] Call dumper functions for tracing. 4402 4403 * src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code. 4404 * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor 4405 improvement. 4406 * src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it. 4407 44082015-04-01 Werner Lemberg <wl@gnu.org> 4409 4410 [autofit] Make debugging stuff work again. 4411 4412 The interface to ftgrid was broken in the series of commits starting 4413 with 4414 4415 [autofit] Allocate AF_Loader on the stack instead of AF_Module. 4416 4417 from 2015-01-14. 4418 4419 * src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]: 4420 Use a global AF_GlyphHintsRec object for debugging. 4421 (af_autofitter_done, af_autofitter_load_glyph): Updated. 4422 4423 * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated. 4424 44252015-04-01 Werner Lemberg <wl@gnu.org> 4426 4427 * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko. 4428 44292015-03-29 Werner Lemberg <wl@gnu.org> 4430 4431 [cff] Fix Savannah bug #44629. 4432 4433 * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h 4434 (CFF_MAX_SUBRS_CALLS): Set to 16. 4435 44362015-03-29 Werner Lemberg <wl@gnu.org> 4437 4438 [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'. 4439 4440 This commit allows `num_coords' to be larger or smaller than the 4441 number of available axes while selecting a design instance, either 4442 ignoring excess data or using defaults if data is missing. 4443 4444 * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design): 4445 Implement it. 4446 4447 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design, 4448 T1_Set_Var_Design): Ditto. 4449 44502015-03-29 Werner Lemberg <wl@gnu.org> 4451 4452 [type1] Minor. 4453 4454 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use 4455 FT_THROW. 4456 (T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW. 4457 44582015-03-27 Werner Lemberg <wl@gnu.org> 4459 4460 [cff] Trace charstring nesting levels. 4461 4462 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR, 4463 cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it. 4464 4465 * src/cff/cffgload.c (cff_decoder_parse_charstrings) 4466 <cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto. 4467 44682015-03-21 Alexei Podtelezhnikov <apodtele@gmail.com> 4469 4470 [base] Optimize `FT_Angle_Diff'. 4471 4472 Under normal circumstances we are usually close to the desired range 4473 of angle values, so that the remainder is not really necessary. 4474 4475 * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder. 4476 4477 * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro. 4478 44792015-03-21 Werner Lemberg <wl@gnu.org> 4480 4481 [truetype] Improve `gvar' handling. 4482 4483 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle 4484 single-element runs. Cf. glyph `Q' in Skia.ttf with weights larger 4485 than the default. 4486 44872015-03-20 Alexei Podtelezhnikov <apodtele@gmail.com> 4488 4489 * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring. 4490 44912015-03-17 Alexei Podtelezhnikov <apodtele@gmail.com> 4492 4493 Fix Savannah bug #44412 (part 2). 4494 4495 * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'. 4496 44972015-03-11 Werner Lemberg <wl@gnu.org> 4498 4499 [autofit] Add support for Arabic script. 4500 4501 Thanks to Titus Nemeth <tn@tntypography.eu> for guidance! 4502 4503 * src/autofit/afblue.dat: Add blue zone data for Arabic. 4504 4505 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 4506 4507 * src/autofit/afscript.h: Add Arabic standard characters. 4508 4509 * src/autofit/afranges.c: Add Arabic data. 4510 4511 * src/autofit/afstyles.h: Add Arabic data. 4512 4513 * docs/CHANGES: Document it. 4514 45152015-03-11 Werner Lemberg <wl@gnu.org> 4516 4517 Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols. 4518 4519 * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed 4520 to... 4521 (FT_SERVICE_FONT_FORMAT_H): This. 4522 4523 * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed 4524 to ... 4525 (FT_FONT_FORMAT_*): This. 4526 4527 src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c, 4528 src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c, 4529 src/truetype/ttdriver.c, src/type1/t1driver.c, 4530 src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated. 4531 45322015-03-11 Werner Lemberg <wl@gnu.org> 4533 4534 [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'. 4535 4536 * include/config/ftheader.h: Implement it. 4537 * src/base/ftfntfmt.c, docs/CHANGES: Updated. 4538 45392015-03-11 Werner Lemberg <wl@gnu.org> 4540 4541 [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'. 4542 4543 * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it. 4544 4545 * docs/CHANGES: Updated. 4546 45472015-03-11 Werner Lemberg <wl@gnu.org> 4548 4549 Fix automatic copyright updating. 4550 4551 * src/tools/update-copyright: Make scanning of `no-copyright' 4552 actually work. 4553 4554 * src/tools/no-copyright: Don't include README in general. 4555 45562015-03-11 Werner Lemberg <wl@gnu.org> 4557 4558 Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'. 4559 4560 CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4, 4561 builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt, 4562 builds/mac/FreeType.m68k_far.make.txt, 4563 builds/mac/FreeType.ppc_carbon.make.txt, 4564 builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf, 4565 builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj, 4566 builds/wince/vc2008-ce/freetype.vcproj, 4567 builds/windows/vc2005/freetype.vcproj, 4568 builds/windows/vc2008/freetype.vcproj, 4569 builds/windows/vc2010/freetype.vcxproj, 4570 builds/windows/vc2010/freetype.vcxproj.filters, 4571 builds/windows/visualc/freetype.dsp, 4572 builds/windows/visualc/freetype.vcproj, 4573 builds/windows/visualce/freetype.dsp, 4574 builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY, 4575 include/config/ftheader.h, include/ftfntfmt.h, modules.cfg, 4576 src/base/ftfntfmt.c, vms_make.com: Updated. 4577 45782015-03-10 Alexei Podtelezhnikov <apodtele@gmail.com> 4579 4580 Fix Savannah bug #44412 (part 1). 4581 4582 * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns. 4583 45842015-03-10 Werner Lemberg <wl@gnu.org> 4585 4586 [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'. 4587 4588 * include/ftbitmap.h, src/base/ftbitmap.c: Implement it. 4589 Update all callers. 4590 4591 * docs/CHANGES: Updated. 4592 45932015-03-06 Werner Lemberg <wl@gnu.org> 4594 4595 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning. 4596 4597 Found by Alexei. 4598 45992015-03-05 Alexei Podtelezhnikov <apodtele@gmail.com> 4600 4601 * src/base/ftstroke.c: Simplify. 4602 46032015-03-04 Werner Lemberg <wl@gnu.org> 4604 4605 [truetype] Some fixes and code refactoring in `ttgxvar.c'. 4606 4607 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value 4608 of `point_cnt' if two bytes are read. 4609 Use a more vertical coding style. 4610 (ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter. 4611 Use a more vertical coding style. 4612 46132015-03-03 Werner Lemberg <wl@gnu.org> 4614 4615 [autofit] Fix Savannah bug #44241. 4616 4617 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs 4618 with less than 3 points. 4619 46202015-03-02 Werner Lemberg <wl@gnu.org> 4621 4622 Simplify `TYPEOF' macro. 4623 4624 No need for two arguments. 4625 4626 * include/config/ftconfig.h, builds/unix/ftconfig.in, 4627 builds/vms/ftconfig.h (TYPEOF): Updated. 4628 4629 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR), 4630 src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated. 4631 46322015-03-01 Werner Lemberg <wl@gnu.org> 4633 4634 Various compiler warning fixes for `make multi'. 4635 4636 * src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges), 4637 src/autofit/aflatin.c (af_latin_hint_compute_blue_edges, 4638 af_latin_hint_edges), src/autofit/aflatin2.c 4639 (af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare 4640 as `static'. 4641 4642 * src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH): 4643 Removed. Unused. 4644 * src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H. 4645 * src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed. Unused. 4646 4647 * src/cff/cf2intrp.c: Include `cf2intrp.h'. 4648 * src/cff/cffdrivr.c (PAIR_TAG): Removed. Unused. 4649 4650 * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed. Unused. 4651 4652 * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'. 4653 4654 * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX): 4655 Removed. Unused. 4656 4657 * src/raster/ftraster.c (Render_Glyph): Declare as `static'. 4658 4659 * src/sfnt/ttpost.c (load_format_20): Fix signedness warning. 4660 4661 * src/truetype/ttdriver.c (PAIR_TAG): Removed. Unused. 4662 * src/truetype/ttsubpix.c (is_member_of_family_class, 4663 is_member_of_style_class): Declare as `static'. 4664 4665 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare 4666 as `static'. 4667 * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as 4668 `static'. 4669 (T1_FIELD_COUNT): Removed. Unused. 4670 * src/type1/t1parse.h (T1_Done_Table): Removed. Unused. 4671 4672 * src/type42/t42parse.c (T1_Done_Table): Removed. Unused. 4673 46742015-02-25 Werner Lemberg <wl@gnu.org> 4675 4676 [psaux] Signedness fixes. 4677 4678 * include/internal/psaux.h, src/psaux/afmparse.c, 4679 src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c, 4680 src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply. 4681 46822015-02-25 Werner Lemberg <wl@gnu.org> 4683 4684 [otvalid] Signedness fixes. 4685 4686 * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c, 4687 src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c: 4688 Apply. 4689 46902015-02-25 Werner Lemberg <wl@gnu.org> 4691 4692 * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix. 4693 46942015-02-25 Werner Lemberg <wl@gnu.org> 4695 4696 [lzw] Signedness fixes. 4697 4698 * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply. 4699 47002015-02-25 Werner Lemberg <wl@gnu.org> 4701 4702 [gxvalid] Signedness fixes. 4703 4704 * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c, 4705 src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c, 4706 src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c, 4707 src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c, 4708 src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c, 4709 src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c, 4710 src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply. 4711 47122015-02-25 Werner Lemberg <wl@gnu.org> 4713 4714 [cache] Signedness fixes. 4715 4716 * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c, 4717 src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply. 4718 47192015-02-25 Werner Lemberg <wl@gnu.org> 4720 4721 Change dimension fields in `FTC_ImageTypeRec' to unsigned type. 4722 4723 This doesn't break ABI. 4724 4725 * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for 4726 `width' and `height'. 4727 4728 * docs/CHANGES: Document it. 4729 47302015-02-25 Werner Lemberg <wl@gnu.org> 4731 4732 [cache] Don't use `labs'. 4733 4734 This is the only place in FreeType where this function was used. 4735 4736 * include/config/ftstdlib.h (ft_labs): Remove. 4737 4738 * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with 4739 `FT_ABS'. 4740 47412015-02-23 Werner Lemberg <wl@gnu.org> 4742 4743 [cache] Replace `FT_PtrDist' with `FT_Offset'. 4744 4745 * src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t') 4746 is a better choice for `hash' to hold a pointer than `FT_PtrDist' 4747 (a.k.a. `ptrdiff_t'), especially since the latter is signed, 4748 causing zillions of signedness warnings. [Note that `hash' was of 4749 type `FT_UInt32' before the change to `FT_PtrDist'.] 4750 Update all users. 4751 4752 * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c, 4753 src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated. 4754 47552015-02-23 Werner Lemberg <wl@gnu.org> 4756 4757 [smooth, raster] Re-enable standalone compilation. 4758 4759 * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX) 4760 [_STANDALONE_]: Define macros. 4761 4762 * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS, 4763 FT_HYPOT) [_STANDALONE_]: Define macros. 4764 47652015-02-22 Werner Lemberg <wl@gnu.org> 4766 4767 [smooth] Signedness fixes. 4768 4769 * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply. 4770 47712015-02-22 Werner Lemberg <wl@gnu.org> 4772 4773 * src/raster/ftraster.c: Use the file's typedefs everywhere. 4774 47752015-02-22 Werner Lemberg <wl@gnu.org> 4776 4777 * src/sfnt/ttpost.c (load_format_20): Fix error tracing message. 4778 4779 Bug introduced 6 commits earlier. 4780 47812015-02-22 Werner Lemberg <wl@gnu.org> 4782 4783 [pshinter] Fix thinko. 4784 4785 * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly 4786 check `count'. 4787 Bug introduced two commits earlier. 4788 47892015-02-22 Werner Lemberg <wl@gnu.org> 4790 4791 [raster] Signedness fixes. 4792 4793 * src/raster/ftraster.c, src/raster/ftrend1.c: Apply. 4794 47952015-02-22 Werner Lemberg <wl@gnu.org> 4796 4797 [pshinter] Signedness fixes. 4798 4799 * src/pshinter/pshalgo.c, src/pshinter/pshglob.c, 4800 src/pshinter/pshrec.c: Apply. 4801 48022015-02-22 Werner Lemberg <wl@gnu.org> 4803 4804 [pshinter] Use macros for (unsigned) flags, not enumerations. 4805 4806 * src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros. 4807 Updated. 4808 * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros. 4809 48102015-02-22 Werner Lemberg <wl@gnu.org> 4811 4812 * src/pshinter/pshrec.c: Simplify. 4813 (ps_hints_open, ps_hints_stem): Remove switch statement. 4814 48152015-02-22 Werner Lemberg <wl@gnu.org> 4816 4817 [sfnt] Signedness fixes. 4818 4819 * src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c, 4820 src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c, 4821 src/sfnt/ttsbit.c: Apply. 4822 * src/sfnt/sfdriver.c: Apply. 4823 (sfnt_get_ps_name): Simplify. 4824 48252015-02-22 Werner Lemberg <wl@gnu.org> 4826 4827 [bdf] Signedness fixes. 4828 4829 * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h, 4830 src/bdf/bdflib.c: Apply. 4831 48322015-02-22 Werner Lemberg <wl@gnu.org> 4833 4834 * src/bdf/bdflib.c (_bdf_atous): New function. 4835 (_bdf_parse_glyphs, _bdf_parse_start): Use it. 4836 48372015-02-22 Werner Lemberg <wl@gnu.org> 4838 4839 [pcf] Signedness fixes. 4840 4841 * src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply. 4842 * src/pcf/pcfread.c: Apply. 4843 (pcf_get_encodings): Ignore invalid negative encoding offsets. 4844 48452015-02-21 Werner Lemberg <wl@gnu.org> 4846 4847 * src/winfonts/winfnt.c: Signedness fixes. 4848 48492015-02-21 Werner Lemberg <wl@gnu.org> 4850 4851 [type42] Signedness fixes. 4852 4853 * src/type42/t42parse.c, src/type42/t42parse.h, 4854 src/type42/t42types.h: Apply. 4855 48562015-02-21 Werner Lemberg <wl@gnu.org> 4857 4858 [pfr] Signedness fixes. 4859 4860 * src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c, 4861 src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c, 4862 src/pfr/pfrtypes.h: Apply. 4863 48642015-02-21 Werner Lemberg <wl@gnu.org> 4865 4866 [cff] Minor signedness fixes related to last commit. 4867 4868 * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply. 4869 48702015-02-20 Werner Lemberg <wl@gnu.org> 4871 4872 [cff] Thinkos in bias handling. 4873 4874 Only the final result is always positive. 4875 4876 Bug introduced three commits earlier. 4877 4878 * src/cff/cffgload.c, src/cff/cffgload.h: Apply. 4879 48802015-02-20 Werner Lemberg <wl@gnu.org> 4881 4882 [cid] Fix signedness issues and emit some better error codes. 4883 4884 * src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c, 4885 src/cid/cidparse.h: Apply. 4886 * src/cid/cidload.c: Apply. 4887 (parse_fd_array): Reject negative values for number of dictionaries. 4888 * src/cid/cidparse.c: Apply. 4889 (cid_parser_new): Reject negative values for hex data length. 4890 48912015-02-20 Werner Lemberg <wl@gnu.org> 4892 4893 [cff] Signedness fixes for new engine. 4894 4895 * src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c, 4896 src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply. 4897 48982015-02-20 Werner Lemberg <wl@gnu.org> 4899 4900 [cff] Signedness fixes for basic infrastructure and old engine. 4901 4902 * include/internal/pshints.h, src/cff/cffdrivr.c, 4903 src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c, 4904 src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply. 4905 49062015-02-19 Werner Lemberg <wl@gnu.org> 4907 4908 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'. 4909 4910 This is hard-coded to value 2 in `fvar' version 1.0 (and no newer 4911 version exists), but some fonts set it incorrectly. 4912 4913 Problem reported by Adam Twardoch <adam@fontlab.com>. 4914 49152015-02-19 Werner Lemberg <wl@gnu.org> 4916 4917 [cff] Emit better error code for invalid private dict size. 4918 4919 * src/cff/cffparse.c (cff_parse_private_dict): Reject negative 4920 values for size and offset. 4921 49222015-02-19 Werner Lemberg <wl@gnu.org> 4923 4924 [autofit] Fix signedness issues. 4925 4926 * src/autofit/afangles.c, src/autofit/afcjk.c, 4927 src/autofit/afglobal.c, src/autofit/afhints.c, 4928 src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c, 4929 src/autofit/hbshim.c: Apply. 4930 49312015-02-19 Werner Lemberg <wl@gnu.org> 4932 4933 [autofit] Use macros for (unsigned) flags, not enumerations. 4934 4935 This harmonizes with other code in FreeType (and reduces the number 4936 of necessary casts to avoid compiler warnings). 4937 4938 * src/autofit/afblue.hin: Make flag macros unsigned. 4939 * src/autofit/afblue.h: Regenerated. 4940 4941 * src/autofit/afcjk.h: Replace flag enumeration with macros. 4942 * src/autofit/afcjk.c: Updated. 4943 4944 * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with 4945 macros. 4946 * src/autofit/afhints.c: Updated. 4947 4948 * src/autofit/aflatin.h: Replace flag enumerations with macros. 4949 * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated. 4950 4951 * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros. 4952 49532015-02-18 Werner Lemberg <wl@gnu.org> 4954 4955 [type1] Fix signedness issues. 4956 4957 * include/internal/psaux.h, include/internal/t1types.h, 4958 src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c, 4959 src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply. 4960 49612015-02-18 Werner Lemberg <wl@gnu.org> 4962 4963 [psaux, type1] Fix minor AFM issues. 4964 4965 * include/internal/t1types.h (AFM_KernPairRec): Make indices 4966 unsigned. 4967 Update users. 4968 (AFM_FontInfoRec): Make element counters unsigned. 4969 Update users. 4970 * src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned 4971 int. 4972 4973 * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs): 4974 Reject negative values for number of kerning elements. 4975 4976 * src/type1/t1afm.c, src/tools/test_afm.c: Updated. 4977 49782015-02-18 Werner Lemberg <wl@gnu.org> 4979 4980 Don't use `FT_PtrDist' for lengths. 4981 4982 Use FT_UInt instead. 4983 4984 * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec, 4985 T1_DecoderRec): Do it. 4986 4987 * include/internal/t1types.h (T1_FontRec): Ditto. 4988 4989 * src/cid/cidload.c (cid_parse_dict): Updated. 4990 * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto. 4991 * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto. 4992 * src/type1/t1load.c (parse_blend_axis_types, parse_encoding, 4993 parse_charstrings, parse_dict): Ditto. 4994 * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings, 4995 t42_parse_dict): Ditto. 4996 49972015-02-18 Werner Lemberg <wl@gnu.org> 4998 4999 * src/type1/t1driver.c (t1_ps_get_font_value): Clean up. 5000 This handles negative values better, avoiding many casts. 5001 50022015-02-17 Werner Lemberg <wl@gnu.org> 5003 5004 [base] Fix Savannah bug #44284. 5005 5006 * src/base/ftcalc.c (FT_MulFix): Typos. 5007 50082015-02-17 Werner Lemberg <wl@gnu.org> 5009 5010 [truetype] Finish compiler warning fixes for signedness issues. 5011 5012 * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c, 5013 src/truetype/ttsubpix.h: Apply. 5014 50152015-02-17 Werner Lemberg <wl@gnu.org> 5016 5017 * src/truetype/ttsubpix.c: Adding missing `static' keywords. 5018 50192015-02-17 Werner Lemberg <wl@gnu.org> 5020 5021 [truetype] More signedness fixes. 5022 5023 * include/internal/tttypes.h, src/truetype/ttinterp.h, 5024 src/truetype/ttobjs.h, src/truetype/ttinterp.c, 5025 src/truetype/ttobjs.c: Apply. 5026 50272015-02-17 Werner Lemberg <wl@gnu.org> 5028 5029 [truetype] Various signedness fixes. 5030 5031 * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply. 5032 5033 * src/truetype/ttgload.c: Apply. 5034 (TT_Get_VMetrics): Protect against invalid ascenders and descenders 5035 while constructing advance height. 5036 50372015-02-16 Werner Lemberg <wl@gnu.org> 5038 5039 [base] Finish compiler warning fixes for signedness issues. 5040 5041 * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c: 5042 Apply. 5043 50442015-02-16 Werner Lemberg <wl@gnu.org> 5045 5046 * include/tttables.h (TT_OS2): `fsType' must be FT_UShort. 5047 50482015-02-16 Werner Lemberg <wl@gnu.org> 5049 5050 More minor signedness warning fixes. 5051 5052 * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c, 5053 src/base/ftutil.c: Apply. 5054 50552015-02-16 Werner Lemberg <wl@gnu.org> 5056 5057 Next round of minor compiler warning fixes. 5058 5059 * include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member 5060 type to `FT_Long'. 5061 (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword. 5062 5063 * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'. 5064 5065 * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c: 5066 Signedness fixes. 5067 50682015-02-16 Werner Lemberg <wl@gnu.org> 5069 5070 Various minor signedness fixes. 5071 5072 * include/ftadvanc.h, include/internal/ftobjs.h, 5073 src/base/ftgloadr.c, src/base/ftobjs.c: Apply. 5074 50752015-02-16 Werner Lemberg <wl@gnu.org> 5076 5077 New `TYPEOF' macro. 5078 5079 This helps suppress signedness warnings, avoiding issues with 5080 implicit conversion changes. 5081 5082 * include/config/ftconfig.h, builds/unix/ftconfig.in, 5083 builds/vms/ftconfig.h (TYPEOF): Define. 5084 5085 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR), 5086 src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it. 5087 50882015-02-16 Werner Lemberg <wl@gnu.org> 5089 5090 * src/base/ftsystem.c: Use casts in standard C function wrappers. 5091 (ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it. 5092 50932015-02-16 Werner Lemberg <wl@gnu.org> 5094 5095 Fix Savannah bug #44261. 5096 5097 * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the 5098 environment also while calling the configure script. 5099 51002015-02-16 Werner Lemberg <wl@gnu.org> 5101 5102 * include/internal/ftmemory.h: Add some `FT_Offset' casts. 5103 (FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY, 5104 FT_MEM_MOVE): Do it. 5105 51062015-02-15 Werner Lemberg <wl@gnu.org> 5107 5108 [base] Clean up signedness issues in `ftdbgmem.c'. 5109 5110 Also fix other minor issues. 5111 5112 * src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types 5113 with FT_Long for consistency. 5114 (ft_mem_primes): Change type to `FT_Int'. 5115 (ft_mem_closest_prime, ft_mem_table_set): Updated. 5116 5117 (ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free, 5118 ft_mem_debug_realloc): Use `static' keyword and fix signedness 5119 warnings where necessary. 5120 5121 (ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy, 5122 ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types 5123 and add or remove casts to avoid signedness warnings. 5124 51252015-02-15 Werner Lemberg <wl@gnu.org> 5126 5127 [base] Clean up signedness in arithmetic functions. 5128 5129 This makes the code more readable and reduces compiler warnings. 5130 5131 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix, 5132 FT_DivFix): Convert input parameters to unsigned, do the 5133 computation, then convert the result back to signed. 5134 (ft_corner_orientation): Fix casts. 5135 51362015-02-07 Werner Lemberg <wl@gnu.org> 5137 5138 [sfnt] Fix Savannah bug #44184. 5139 5140 * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No 5141 longer reject `htmx' and `vmtx' tables with invalid length but 5142 sanitize them. 5143 51442015-02-06 Jon Anderson <jon@websupergoo.com> 5145 5146 [truetype] Fix regression in the incremental glyph loader. 5147 5148 * src/truetype/ttgload.c (load_truetype_glyph): For incremental 5149 fonts, the glyph index may be greater than the number of glyphs 5150 indicated, so guard the check with a preprocessor conditional. 5151 51522015-02-06 Werner Lemberg <wl@gnu.org> 5153 5154 [autofit] Fix potential memory leak. 5155 5156 While this doesn't show up with FreeType, exactly the same code 5157 leaks with ttfautohint's modified auto-hinter code (which gets used 5158 in a slightly different way). 5159 5160 It certainly doesn't harm since it is similar to already existing 5161 checks in the code for embedded arrays. 5162 5163 * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours' 5164 and `max_points' for all cases. 5165 51662015-01-31 Werner Lemberg <wl@gnu.org> 5167 5168 [autofit] Add support for Thai script. 5169 5170 Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue 5171 zone characters! 5172 5173 * src/autofit/afblue.dat: Add blue zone data for Thai. 5174 5175 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 5176 5177 * src/autofit/afscript.h: Add Thai standard characters. 5178 5179 * src/autofit/afranges.c: Add Thai data. 5180 5181 * src/autofit/afstyles.h: Add Thai data. 5182 51832015-01-23 Behdad Esfahbod <behdad@behdad.org> 5184 5185 [raster] Handle `FT_RASTER_FLAG_AA' correctly. 5186 5187 This fixes a breakage caused by the commit `[raster] Remove 5188 5-level gray AA mode from monochrome rasterizer.'. 5189 5190 Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de>. 5191 5192 * src/raster/ftraster.c (ft_black_render): Handle 5193 `FT_RASTER_FLAG_AA'. 5194 5195 * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode 5196 remnants. 5197 51982015-01-18 Werner Lemberg <wl@gnu.org> 5199 5200 * src/base/ftobjs.c (FT_New_Library): Fix compiler warning. 5201 52022015-01-18 Chris Liddell <chris.liddell@artifex.com> 5203 5204 [raster] Fix Savannah bug #44022. 5205 5206 Add fallback for glyphs with degenerate bounding boxes. 5207 5208 If a glyph has only one very narrow feature, the bbox can end up 5209 with either the width or height of the bbox being 0, in which case 5210 no raster memory is allocated and no attempt is made to render the 5211 glyph. This is less than ideal when the drop-out compensation in 5212 the rendering code would actually result in the glyph being 5213 rendered. 5214 5215 This problem can be observed with the `I' glyph (gid 47) in the 5216 Autodesk RomanS TrueType font. 5217 5218 * src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either 5219 dimension is zero to explicitly round up/down (instead of simply 5220 round). 5221 52222015-01-17 Werner Lemberg <wl@gnu.org> 5223 5224 Add some tools to handle yearly copyright notice updates. 5225 5226 We are now following the GNU guidelines: A new release automatically 5227 means that the copyright year of all affected files gets updated; it 5228 is no longer used to track years of modification changes. 5229 5230 * src/tools/update-copyright-year: New Perl script. 5231 * src/tools/update-copyright: New shell script that calls 5232 `update-copyright-year' on all files. 5233 * src/tools/no-copyright: Exceptions that should not be handled by 5234 `update-copyright' 5235 52362015-01-14 Werner Lemberg <wl@gnu.org> 5237 5238 * docs/CHANGES: Updated, using a description from Behdad. 5239 52402015-01-14 Behdad Esfahbod <behdad@behdad.org> 5241 5242 * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning. 5243 52442015-01-14 Behdad Esfahbod <behdad@behdad.org> 5245 5246 [autofit] Add embedded array of segments and edges. 5247 5248 Avoids multiple mallocs per typical glyphs. 5249 5250 With this and recent changes to avoid mallocs, the thread-safe 5251 stack-based loader is now as fast as the previous model that had one 5252 cached singleton. 5253 5254 * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED): 5255 New macros. 5256 (AF_AxisHintsRec): Add two arrays for segments and edges. 5257 5258 * src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate 5259 data if number of segments exceeds given threshold value. 5260 (af_axis_hints_new_edge): Only allocate data if number of edges 5261 exceeds given threshold value. 5262 (af_glyph_hints_done): Updated. 5263 52642015-01-14 Behdad Esfahbod <behdad@behdad.org> 5265 5266 [autofit] Add embedded arrays for points and contours. 5267 5268 This avoids at least two malloc calls for typical glyphs. 5269 5270 * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED): 5271 New macros. 5272 (AF_GlyphHintsRec): Add two arrays for contours and points. 5273 5274 * src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done): 5275 Updated. 5276 (af_glyph_hints_reload): Only allocate data if number of contours or 5277 points exceeds given threshold values. 5278 52792015-01-14 Behdad Esfahbod <behdad@behdad.org> 5280 5281 [autofit] Allocate hints object on the stack. 5282 5283 This avoids one malloc per load. 5284 5285 * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to 5286 `AF_GlyphHints'. 5287 Update prototype. 5288 5289 * src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints' 5290 parameter instead of `FT_Memory'. 5291 (af_loader_done): Directly reset `load_hints'. 5292 (af_loader_load_g): Updated. 5293 5294 * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local 5295 `hints' object. 5296 52972015-01-14 Behdad Esfahbod <behdad@behdad.org> 5298 5299 [autofit] Reuse slot glyph loader. 5300 5301 No need to create a new glyph loader; we can reuse the one from 5302 `slot->internal->loader'. It's hard to tell why it was written that 5303 way originally, but new code looks sound and correct to me, and 5304 avoids lots of allocations. 5305 5306 * src/autofit/afloader.c (af_loader_init): Change return type to 5307 `void'. 5308 Don't call `FT_GlyphLoader_New'. 5309 (af_loader_reset): Don't call `FT_GlyphLoader_Rewind'. 5310 (af_loader_load_g): Update code to use `internal->loader', which 5311 doesn't need copying of data. 5312 5313 * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member. 5314 Update prototype. 5315 5316 * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated. 5317 53182015-01-14 Behdad Esfahbod <behdad@behdad.org> 5319 5320 [autofit] Remove (unused) support for composite glyphs. 5321 5322 We never have to deal with composite glyphs in the autohinter, as 5323 those will be loaded into FORMAT_OUTLINE by the recursed 5324 `FT_Load_Glyph' function. 5325 5326 In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply 5327 FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies 5328 FT_LOAD_NO_HINTING: 5329 5330 /* resolve load flags dependencies */ 5331 5332 if ( load_flags & FT_LOAD_NO_RECURSE ) 5333 load_flags |= FT_LOAD_NO_SCALE | 5334 FT_LOAD_IGNORE_TRANSFORM; 5335 5336 if ( load_flags & FT_LOAD_NO_SCALE ) 5337 { 5338 load_flags |= FT_LOAD_NO_HINTING | 5339 FT_LOAD_NO_BITMAP; 5340 5341 load_flags &= ~FT_LOAD_RENDER; 5342 } 5343 5344 and as such the auto-hinter is never called. Thus, the recursion in 5345 `af_loader_load_g' never actually happens. So remove the depth 5346 counter as well. 5347 5348 * src/autofit/afloader.c (af_loader_load_g): Remove `depth' 5349 parameter. 5350 <FT_GLYPH_FORMAT_COMPOSITE>: Remove associated code. 5351 (af_loader_load_glyph): Updated. 5352 53532015-01-14 Behdad Esfahbod <behdad@behdad.org> 5354 5355 [raster] Fix uninitialized memory access. 5356 5357 Apparently `ras.cProfile' might be uninitialized. This will be the 5358 case if `ras.top == ras.cProfile->offset', as can be seen in 5359 `End_Profile'. The overshoot code introduced in a change `Fix B/W 5360 rasterization of subglyphs with different drop-out modes.' (from 5361 2009-06-18) violated this, accessing `ras.cProfile->flags' 5362 unconditionally just before calling `End_Profile' (which then 5363 detected that `cProfile' is uninitialized and didn't touch it). 5364 5365 This was harmless, and was not detected by valgrind before because 5366 the objects were allocated on the `raster_pool', which was always 5367 initialized. With recent change to allocate raster buffers on the 5368 stack, valgrind now reported this invalid access. 5369 5370 * src/raster/ftraster.c (Convert_Glyph): Don't access an 5371 uninitialized `cProfile'. 5372 53732015-01-14 Behdad Esfahbod <behdad@behdad.org> 5374 5375 [smooth] Fix uninitialized memory access. 5376 5377 Looks like `ras.span_y' could always be used without initialization. 5378 This was never detected by valgrind before because the library-wide 5379 `raster_pool' was used for the worker object and `raster_pool' was 5380 originally zero'ed. But subsequent reuses of it were using `span_y' 5381 uninitialized. With the recent change to not use `render_pool' and 5382 allocate worker and buffer on the stack, valgrind now detects this 5383 uninitialized access. 5384 5385 * src/smooth/ftgrays.c (gray_raster_render): Initialize 5386 `ras.span_y'. 5387 53882015-01-14 Behdad Esfahbod <behdad@behdad.org> 5389 5390 [base] Don't initialize unused `driver->glyph_loader'. 5391 5392 * src/base/ftobjs.c (Destroy_Driver): Don't call 5393 `FT_GlyphLoader_Done'. 5394 (FT_Add_Module): Don't call `FT_GlyphLoader_New'. 5395 53962015-01-14 Behdad Esfahbod <behdad@behdad.org> 5397 5398 [base] Don't allocate `library->raster_pool' anymore. 5399 5400 It's unused after the following commits: 5401 5402 [raster] Allocate render pool for mono rasterizer on the stack. 5403 [raster] Remove 5-level gray AA mode from monochrome rasterizer. 5404 5405 The value of FT_RENDER_POOL_SIZE still serves the purpose it used to 5406 serve, which is, to adjust the pool size. But the pool is now 5407 allocated on the stack on demand. 5408 5409 * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement. 5410 54112015-01-14 Behdad Esfahbod <behdad@behdad.org> 5412 5413 [base] Do not reorder library->renderers upon use. 5414 5415 Instead of keeping `library->renderers' in a MRU order, just leave 5416 it as-is. The MRU machinery wasn't thread-safe. 5417 5418 With this patch, rasterizing glyphs from different faces from 5419 different threads doesn't fail choosing rasterizer 5420 (FT_Err_Cannot_Render_Glyph). 5421 5422 Easiest to see that crash was to add a `printf' (or otherwise let 5423 thread yield in FT_Throw with debugging enabled). 5424 5425 * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c 5426 (FT_Outline_Render): Don't call `FT_Set_Renderer'. 5427 54282015-01-14 Behdad Esfahbod <behdad@behdad.org> 5429 5430 [raster] Allocate render pool for mono rasterizer on the stack. 5431 5432 Instead of using the `render_pool' member of `FT_Library' that is 5433 provided down to the rasterizer, completely ignore that and allocate 5434 needed objects on the stack instead. 5435 5436 With this patch, rasterizing glyphs from different faces from 5437 different threads doesn't crash in the monochrome rasterizer. 5438 5439 * src/raster/ftraster.c (black_TRaster): Remove `buffer', 5440 `buffer_size', and `worker' members. 5441 5442 (ft_black_render): Create `buffer' locally. 5443 (ft_black_reset): Updated. 5444 54452015-01-14 Behdad Esfahbod <behdad@behdad.org> 5446 5447 [raster] Remove 5-level gray AA mode from monochrome rasterizer. 5448 5449 It was off by default and couldn't be turned on at runtime. And the 5450 smooth rasterizer superseded it over ten years ago. No point in 5451 keeping. Comments suggested that it was there for compatibility 5452 with FreeType 1. 5453 5454 550 lines down. 5455 5456 * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING, 5457 RASTER_GRAY_LINES): Remove macros and all associated code. 5458 5459 (black_TWorker): Remove `gray_min_x' and `gray_max_x'. 5460 (black_TRaster): Remove `grays' and `gray_width'. 5461 5462 (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop, 5463 ft_black_render): Updated. 5464 5465 * src/raster/ftrend1.c (ft_raster1_render): Simplify code. 5466 (ft_raster5_renderer_class): Removed. 5467 54682015-01-14 Behdad Esfahbod <behdad@behdad.org> 5469 5470 [smooth] Allocate render pool for smooth rasterizer on the stack. 5471 5472 Instead of using the `render_pool' member of `FT_Library' that is 5473 provided down to the rasterizer, completely ignore that and allocate 5474 needed objects on the stack instead. 5475 5476 With this patch, rasterizing glyphs from different faces from 5477 different threads doesn't crash in the smooth rasterizer. 5478 5479 Bugs: 5480 5481 https://bugzilla.redhat.com/show_bug.cgi?id=678397 5482 https://bugzilla.redhat.com/show_bug.cgi?id=1004315 5483 https://bugzilla.redhat.com/show_bug.cgi?id=1165471 5484 https://bugs.freedesktop.org/show_bug.cgi?id=69034 5485 5486 * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer', 5487 `buffer_size', `band_size', and `worker' members. 5488 5489 (gray_raster_render): Create `buffer', `buffer_size', and 5490 `band_size' locally. 5491 (gray_raster_reset): Updated. 5492 54932015-01-14 Behdad Esfahbod <behdad@behdad.org> 5494 5495 [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver. 5496 5497 Previously the code had stipulation for using a per-TT_Size exec 5498 context if `size->debug' was true. But there was no way that 5499 `size->debug' could *ever* be true. As such, the code was always 5500 using the singleton `TT_ExecContext' that was stored in `TT_Driver'. 5501 This was, clearly, not threadsafe. 5502 5503 With this patch, loading glyphs from different faces from different 5504 threads doesn't crash in the bytecode loader code. 5505 5506 * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member. 5507 (TT_DriverRec): Remove `context' member. 5508 5509 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove 5510 `TT_ExecContext' code related to a global `TT_Driver' object. 5511 5512 (tt_driver_done): Don't remove `TT_ExecContext' object here but ... 5513 (tt_size_done_bytecode): ... here. 5514 5515 (tt_driver_init): Don't create `TT_ExecContext' object here but ... 5516 (tt_size_init_bytecode): ... here, only on demand. 5517 5518 * src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug 5519 code. 5520 (TT_New_Context): Remove `TT_ExecContext' code related to a global 5521 `TT_Driver' object. 5522 5523 * src/truetype/ttinterp.h: Updated. 5524 5525 * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated. 5526 55272015-01-14 Behdad Esfahbod <behdad@behdad.org> 5528 5529 [autofit] Allocate AF_Loader on the stack instead of AF_Module. 5530 5531 Stop sharing a global `AF_Loader'. Allocate one on the stack during 5532 glyph load. 5533 5534 Right now this results in about 25% slowdown, to be fixed in a 5535 following commit. 5536 5537 With this patch loading glyphs from different faces from different 5538 threads doesn't immediately crash in the autohinting loader code. 5539 5540 Bugs: 5541 5542 https://bugzilla.redhat.com/show_bug.cgi?id=1164941 5543 5544 * src/autofit/afloader.c (af_loader_init): Pass 5545 `AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments. 5546 (af_loader_reset, af_loader_load_glyph): Also pass `loader' as 5547 argument. 5548 (af_loader_done): Use `AF_Loader' instead of `AF_Module' as 5549 argument. 5550 5551 * src/autofit/afmodule.c (af_autofitter_init): Don't call 5552 `af_loader_init'. 5553 (af_autofitter_done): Don't call `af_loader_done'. 5554 (af_autofitter_load_glyph): Use a local `AF_Loader' object. 5555 5556 * src/autofit/afloader.h: Include `afmodule.h'. 5557 Update prototypes. 5558 Move typedef for `AF_Module' to... 5559 5560 * src/autofit/afmodule.h: ... this place. 5561 No longer include `afloader.h'. 5562 55632015-01-14 Behdad Esfahbod <behdad@behdad.org> 5564 5565 * src/type42/t42objs.h (T42_DriverRec): Remove unused member. 5566 55672015-01-12 Werner Lemberg <wl@gnu.org> 5568 5569 Fix Savannah bug #43976. 5570 5571 Assure that FreeType's internal include directories are found before 5572 `CPPFLAGS' (which might be set by the user in the environment), and 5573 `CPPFLAGS' before `CFLAGS'. 5574 5575 * builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'. 5576 (FT_COMPILE): Make this a special variable for compiling only the 5577 files handled in `freetype.mk'. 5578 (.c.$O): Removed, unused. 5579 5580 * src/*/rules.mk (*_COMPILE): Fix order of include directories. 5581 55822015-01-11 Werner Lemberg <wl@gnu.org> 5583 5584 [truetype] Prettifying. 5585 5586 * src/truetype/ttinterp.c (project, dualproj, fast_project, 5587 fast_dualproj): Rename to... 5588 (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this. 5589 55902015-01-11 Werner Lemberg <wl@gnu.org> 5591 5592 * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify. 5593 5594 Based on a patch from Behdad. 5595 55962015-01-11 Werner Lemberg <wl@gnu.org> 5597 5598 * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call. 5599 56002015-01-11 Werner Lemberg <wl@gnu.org> 5601 5602 * src/truetype/ttinterp.c (Normalize): Remove unused argument. 5603 56042015-01-11 Werner Lemberg <wl@gnu.org> 5605 5606 [truetype] More macro expansions. 5607 5608 * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by 5609 expansion. 5610 56112015-01-11 Werner Lemberg <wl@gnu.org> 5612 5613 [truetype] More macro expansions. 5614 5615 * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion, 5616 adjusting function calls where necessary. 5617 (FT_UNUSED_ARG): Removed, no longer needed. 5618 56192015-01-10 Werner Lemberg <wl@gnu.org> 5620 5621 [truetype] More macro expansions. 5622 5623 Based on a patch from Behdad. 5624 5625 * src/truetype/ttinterp.c (DO_*): Expand macros into corresponding 5626 `Ins_*' functions. 5627 (TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls. 5628 (ARRAY_BOUND_ERROR): Remove second definition, which is no longer 5629 needed. 5630 (Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with... 5631 (Ins_SxyTCA): New function. 5632 56332015-01-10 Werner Lemberg <wl@gnu.org> 5634 5635 [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH. 5636 5637 Behdad suggested this code simplification, and nobody objected... 5638 5639 * include/config/ftoption.h, devel/ftoption.h 5640 (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove. 5641 5642 * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]: 5643 Remove related code. 5644 (ARRAY_BOUND_ERROR): Use do-while loop. 5645 56462015-01-10 Werner Lemberg <wl@gnu.org> 5647 5648 [truetype] More macro expansions. 5649 5650 * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_, 5651 EXEC_ARG): Remove by replacing with expansion. 5652 56532015-01-10 Werner Lemberg <wl@gnu.org> 5654 5655 [truetype] More macro expansions. 5656 5657 Based on a patch from Behdad. 5658 5659 * src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize, 5660 SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move, 5661 CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem, 5662 CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt, 5663 CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round, 5664 COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing 5665 with expansion. 5666 5667 (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project, 5668 CUR_fast_dualproj): Replace with macros `project', `dualproj', 5669 `fast_project', `fast_dualproj'. 5670 56712015-01-10 Werner Lemberg <wl@gnu.org> 5672 5673 [truetype] More macro expansions. 5674 5675 * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing 5676 with expansion. 5677 56782015-01-10 Werner Lemberg <wl@gnu.org> 5679 5680 [truetype] Remove code for static TrueType interpreter. 5681 5682 This is a follow-up patch. 5683 5684 * src/truetype/ttinterp.c, src/truetype/ttinterp.h 5685 [TT_CONFIG_OPTION_STATIC_INTERPRETER, 5686 TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code. 5687 56882015-01-10 Werner Lemberg <wl@gnu.org> 5689 5690 * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion. 5691 5692 This starts a series of patches that simplifies the code of the 5693 bytecode interpreter. 5694 5695 5696---------------------------------------------------------------------------- 5697 5698Copyright (C) 2015-2020 by 5699David Turner, Robert Wilhelm, and Werner Lemberg. 5700 5701This file is part of the FreeType project, and may only be used, modified, 5702and distributed under the terms of the FreeType project license, 5703LICENSE.TXT. By continuing to use, modify, or distribute this file you 5704indicate that you have read the license and understand and accept it 5705fully. 5706 5707 5708Local Variables: 5709version-control: never 5710coding: utf-8 5711End: 5712