12018-05-01 Werner Lemberg <wl@gnu.org> 2 3 * Version 2.9.1 released. 4 ========================= 5 6 7 Tag sources with `VER-2-9-1'. 8 9 * docs/VERSION.TXT: Add entry for version 2.9.1. 10 * docs/CHANGES: Updated. 11 12 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, 13 src/base/ftver.rc, builds/windows/vc2005/index.html, 14 builds/windows/vc2008/freetype.vcproj, 15 builds/windows/vc2008/index.html, 16 builds/windows/vc2010/freetype.vcxproj, 17 builds/windows/vc2010/index.html, 18 builds/windows/visualc/freetype.dsp, 19 builds/windows/visualc/freetype.vcproj, 20 builds/windows/visualc/index.html, 21 builds/windows/visualce/freetype.dsp, 22 builds/windows/visualce/freetype.vcproj, 23 builds/windows/visualce/index.html, 24 builds/wince/vc2005-ce/freetype.vcproj, 25 builds/wince/vc2005-ce/index.html, 26 builds/wince/vc2008-ce/freetype.vcproj, 27 builds/wince/vc2008-ce/index.html: s/2.9/2.9.1/, s/29/291/. 28 29 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. 30 31 * builds/unix/configure.raw (version_info): Set to 22:1:16. 32 * CMakeLists.txt (VERSION_PATCH): Set to 1. 33 34 * include/freetype/ftgasp.h: Use FT_BEGIN_HEADER and FT_END_HEADER. 35 362018-04-26 Werner Lemberg <wl@gnu.org> 37 38 Another fix for handling invalid format 2 cmaps. 39 40 Sigh. 41 42 Reported as 43 44 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8003 45 46 * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid 47 an endless loop. 48 492018-04-24 Ben Wagner <bungeman@google.com> 50 51 [base] Avoid undefined behaviour in lcd filtering code (#53727). 52 53 * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy): 54 Ensure `height > 0'. 55 562018-04-22 Werner Lemberg <wl@gnu.org> 57 58 * src/base/ftoutln.c (FT_Outline_Decompose): Improve error tracing. 59 602018-04-22 Alexei Podtelezhnikov <apodtele@gmail.com> 61 62 [base] Fix bitmap emboldening. 63 64 Bug introduced after release 2.8. 65 66 * src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use 67 `FT_QALLOC_MULT', which doesn't zero out the buffer. Adjust the 68 bitmap copying code to take care of this fact. 69 702018-04-22 Werner Lemberg <wl@gnu.org> 71 72 Another fix for handling invalid format 2 cmaps. 73 74 The previous commit was incomplete. 75 76 Reported as 77 78 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7928 79 80 * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid 81 an endless loop. 82 832018-04-19 Werner Lemberg <wl@gnu.org 84 85 [autofit] Add support for Georgian Mtavruli characters. 86 87 This will be part of the forthcoming Unicode 11.0. 88 89 * src/autofit/afblue.dat: Add blue zone data for Mtavruli. 90 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 91 92 * src/autofit/afscript.h: Add Mtavruli standard character. 93 942018-04-18 Werner Lemberg <wl@gnu.org> 95 96 Fix handling of invalid format 2 cmaps. 97 98 The problem was introduced after the last release. 99 100 Reported as 101 102 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7828 103 104 * src/sfnt/ttcmap.c (tt_cmap2_char_next): Avoid endless loop. 105 1062018-04-17 Werner Lemberg <wl@gnu.org> 107 108 [truetype] Integer overflow issues. 109 110 Reported as 111 112 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7739 113 114 * src/truetype/ttinterp.c (Ins_CEILING): Use FT_PIX_CEIL_LONG. 115 1162018-04-16 Werner Lemberg <wl@gnu.org> 117 118 [truetype] Integer overflow issues. 119 120 Reported as 121 122 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7718 123 124 * src/truetype/ttinterp.c (Ins_MIRP): Use ADD_LONG. 125 1262018-04-15 Alexei Podtelezhnikov <apodtele@gmail.com> 127 128 [build] Use `info' function of make 3.81. 129 130 * configure, docs/INSTALL, docs/INSTALL.CROSS, docs/INSTALL.GNU, 131 docs/INSTALL.UNIX, docs/MAKEPP: Bump make version requirements. 132 133 * builds/detect.mk (std_setup): Replace `echo' with `info'. 134 (dos_setup): Removed. 135 * builds/unix/install.mk, builds/modules.mk, builds/dos/detect.mk, 136 builds/windows/detect.mk, builds/os2/detect.mk: Updated. 137 * builds/newline: No longer needed. 138 1392018-04-15 Werner Lemberg <wl@gnu.org> 140 141 [truetype]: Limit `SLOOP' bytecode argument to 16 bits. 142 143 This fixes 144 145 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7707 146 147 * src/truetype/ttinterp.c (Ins_SLOOP): Do it. 148 1492018-04-14 Werner Lemberg <wl@gnu.org> 150 151 [truetype] Integer overflow issues. 152 153 Reported as 154 155 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7652 156 157 * src/truetype/ttinterp.c (Ins_MDAP): Use SUB_LONG. 158 1592018-04-14 Werner Lemberg <wl@gnu.org> 160 161 [autofit] Update to Unicode 11.0.0. 162 163 But no support new scripts (volunteers welcomed). 164 165 * src/autofit/afranges.c (af_arab_nonbase_uniranges, 166 af_beng_nonbase_uniranges, af_cakm_nonbase_uniranges, 167 af_deva_nonbase_uniranges, af_geor_uniranges, 168 af_gujr_nonbase_uniranges, af_mlym_nonbase_uniranges, 169 af_nkoo_nonbase_uniranges, af_telu_nonbase_uniranges, 170 af_hani_uniranges): Add new data. 171 1722018-04-10 Nikolaus Waxweiler <madigens@gmail.com> 173 174 * CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Extensive 175 modernization measures. 176 177 This brings up the minimum required CMake version to 2.8.12. 178 179 The installation paths follow the GNU defaults now, e.g. installing on a 180 64 bit host will place binaries into the lib64/ folder on e.g. Fedora. 181 182 Symbols are hidden by default (e.g. `-fvisibility=hidden' on GCC). 183 184 CMake will no longer look for a C++ compiler. 185 186 Library and .so version now match the Autotools build. 187 188 Comments in the build file and informational messages now use platform 189 agnostic example commands. 190 191 ftoption.h and ftconfig.h are written directly without a redundant `-new' 192 copy. 193 194 External dependencies are expressed as option()s and will turn up as such 195 in cmake-gui. 196 197 Internal: Properties such as dependencies and include directories are now 198 privately set on the freetype library instead of globally. 199 200 The CPack definitions have been cleaned up, the `make dist' has been 201 removed. Source packages generated with CPack don't contain Autotools 202 files and aren't used by the maintainers anyway. 203 204 On Windows, src/base/ftver.rc is compiled to decorate the library with 205 version and copyright information. 206 207 A pkg-config file is now generated and installed. 208 2092018-04-09 Werner Lemberg <wl@gnu.org> 210 211 [truetype] Integer overflow issues. 212 213 Reported as 214 215 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7453 216 217 * src/truetype/ttinterp.c (Round_Super, Round_Super_45): Use 218 ADD_LONG and SUB_LONG. 219 2202018-04-06 Alexei Podtelezhnikov <apodtele@gmail.com> 221 222 [windows, wince] Clean up legacy project files. 223 224 * builds/wince/vc2005-ce/freetype.vcproj, 225 builds/wince/vc2008-ce/freetype.vcproj, 226 builds/windows/vc2005/freetype.vcproj, 227 builds/windows/vc2008/freetype.vcproj, 228 builds/windows/visualce/freetype.vcproj, 229 builds/windows/visualce/freetype.dsp, 230 builds/windows/visualc/freetype.vcproj, 231 builds/windows/visualc/freetype.dsp: Remove per-file compile flags. 232 2332018-04-04 Werner Lemberg <wl@gnu.org> 234 235 [cff, type1] Sanitize `BlueFuzz' and `BlueShift'. 236 237 Reported as 238 239 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7371 240 241 * src/cff/cffload.c (cff_load_private_dict): Sanitize 242 `priv->blue_shift' and `priv->blue_fuzz' to avoid overflows later 243 on. 244 245 * src/type1/t1load.c (T1_Open_Face): Ditto. 246 2472018-04-04 Ben Wagner <bungeman@google.com> 248 249 * src/truetype/ttobjs.c (trick_names): Add 3 tricky fonts (#53554), 250 `DFHei-Md-HK-BF', `DFKaiShu-Md-HK-BF' and `DFMing-Bd-HK-BF'. 251 (tt_check_trickyness_sfnt_ids): Add checksums for 3 tricky fonts 252 in above. 253 2542018-04-01 Werner Lemberg <wl@gnu.org> 255 256 * builds/toplevel.mk (work): Use $(SEP). 257 258 This fixes the `make refdoc' using Cygwin: $(CAT) is `type' on this 259 platform, and this program only understands backslashes in paths. 260 261 Reported by Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>. 262 2632018-03-30 Werner Lemberg <wl@gnu.org> 264 265 [truetype] Fix memory leak (only if tracing is on). 266 267 * src/truetype/ttgxvar.c (TT_Get_MM_Var) [FT_DEBUG_LEVEL_TRACE}: Fix 268 it. 269 2702018-03-23 Ben Wagner <bungeman@google.com> 271 272 [sfnt] Correctly handle missing bitmaps in sbix format (#53404). 273 274 * src/sfnt/ttfsbit.c (tt_face_load_sbix_image): Fix return value. 275 2762018-03-23 Ben Wagner <bungeman@google.com> 277 278 [truetype] Fix advance of empty glyphs in bitmap fonts (#53393). 279 280 * src/truetype/ttgload.c (TT_Load_Glyph): Apply scaling to metrics 281 for empty bitmaps. 282 2832018-03-22 Werner Lemberg <wl@gnu.org> 284 285 Remove `ftlcdfil.c' and `ftfntfmt.c' from build files (#53415). 286 287 builds/amiga/makefile, builds/amiga/makefile.os4, 288 builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt, 289 builds/mac/FreeType.m68k_far.make.txt, 290 builds/mac/FreeType.ppc_carbon.make.txt, 291 builds/mac/FreeType.ppc_classic.make.txt, 292 builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj, 293 builds/wince/vc2008-ce/freetype.vcproj, 294 builds/windows/vc2005/freetype.vcproj, 295 builds/windows/vc2008/freetype.vcproj, 296 builds/windows/vc2010/freetype.vcxproj, 297 builds/windows/vc2010/freetype.vcxproj.filters, 298 builds/windows/visualc/freetype.dsp, 299 builds/windows/visualc/freetype.vcproj, 300 builds/windows/visualce/freetype.dsp, 301 builds/windows/visualce/freetype.vcproj, vms_make.com: Do it. 302 3032018-03-13 Werner Lemberg <wl@gnu.org> 304 305 * src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric 306 overflow. 307 3082018-03-13 Werner Lemberg <wl@gnu.org> 309 310 Fix cmap format 2 handling (#53320). 311 312 The patch introduced for #52646 was not correct. 313 314 * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition. 315 3162018-03-10 Nikolaus Waxweiler <madigens@gmail.com> 317 318 * CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05. 319 3202018-03-09 Chun-wei Fan <fanc999@yahoo.com.tw> 321 322 * CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287). 323 324 Do not limit DLL builds to MinGW, since we already have 325 `__declspec(dllexport)' directives in `ftconfig.h'. 326 Also suppress more warnings for POSIX functions. 327 3282018-03-08 Hugh McMaster <hugh.mcmaster@outlook.com> 329 330 Make installation of `freetype-config' optional (#53093). 331 332 * builds/unix/configure.raw: Add option `--enable-freetype-config' 333 and set `INSTALL_FT2_CONFIG'. 334 * builds/unix/unix-def.in (INSTALL_FT2_CONFIG): Define. 335 * builds/unix/install.mk (install): Handle it. 336 3372018-03-05 Werner Lemberg <wl@gnu.org> 338 339 Make `ftlcdfil.c' part of the `base' module. 340 341 `ftobjs.c' needs `ft_lcd_padding'. 342 343 Problem reported by duhuanpeng <548708880@qq.com>. 344 345 * modules.cfg (BASE_EXTENSIONS): Don't include `ftlcdfil.c'. 346 347 * src/base/ftbase.c: Include `ftlcdfil.c'. 348 * src/base/rules.mk (BASE_SRC): Add `ftlcdfil.c'. 349 * src/base/Jamfile (_sources): Adjusted. 350 351 * docs/INSTALL.ANY: Updated. 352 3532018-03-05 Werner Lemberg <wl@gnu.org> 354 355 Make `ftfntfmt.c' part of the `base' module. 356 357 `ftobjs.c' needs `FT_Get_Font_Format'. 358 359 Problem reported by duhuanpeng <548708880@qq.com>. 360 361 * modules.cfg (BASE_EXTENSIONS): Don't include `ftfntfmt.c'. 362 363 * src/base/ftbase.c: Include `ftfntfmt.c'. 364 * src/base/rules.mk (BASE_SRC): Add `ftfntfmt.c'. 365 * src/base/Jamfile (_sources): Adjusted. 366 367 * docs/INSTALL.ANY: Updated. 368 3692018-03-01 Werner Lemberg <wl@gnu.org> 370 371 * src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments. 372 3732018-02-23 Werner Lemberg <wl@gnu.org> 374 375 * builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer. 376 377 Problem reported by Alan Coopersmith <alan.coopersmith@oracle.com>. 378 3792018-02-17 Werner Lemberg <wl@gnu.org> 380 381 [sfnt] Prefer `CBDT'/`CBLC' over `glyf' table (#53154). 382 3832018-02-06 Werner Lemberg <wl@gnu.org> 384 385 [truetype] Integer overflow issues. 386 387 Reported as 388 389 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=6027 390 391 * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIAP, Ins_MIRP): Use 392 SUB_LONG; avoid FT_ABS. 393 3942018-02-04 Alexei Podtelezhnikov <apodtele@gmail.com> 395 396 [unix] Use -fvisibility=hidden. 397 398 It is now widely recommended that ELF shared libraries hide symbols 399 except those with explicit __attribute__((visibility("default"))). 400 This is supported by all major compilers and should rather be an 401 option in libtool. 402 403 * builds/unix/configure.raw: Add -fvisibility=hidden to CFLAGS. 404 * builds/unix/ftconfig.in, builds/vms/ftconfig.h, 405 include/freetype/config/ftconfig.h (FT_EXPORT): Use visibility 406 attribute. 407 4082018-01-27 Werner Lemberg <wl@gnu.org> 409 410 [truetype] Better protection against invalid VF data. 411 412 Reported as 413 414 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5739 415 416 Bug introduced in commit 08cd62deedefe217f2ea50e392923ce8b5bc7ac7. 417 418 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Always initialize 419 `normalizedcoords'. 420 4212018-01-27 Werner Lemberg <wl@gnu.org> 422 423 * src/truetype/ttinterp.c (Ins_GETVARIATION): Avoid NULL reference. 424 425 Reported as 426 427 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5736 428 4292018-01-27 Werner Lemberg <wl@gnu.org> 430 431 * src/truetype/ttgxvar.c (tt_set_mm_blend): Minor. 432 4332018-01-27 Werner Lemberg <wl@gnu.org> 434 435 [truetype] Better trace VF instances. 436 437 * src/truetype/ttgxvar.c (ft_var_to_normalized): Don't emit number 438 of coordinates. 439 (TT_Get_MM_Var): Trace instance indices names. 440 (TT_Set_Var_Design): Updated. 441 4422018-01-27 Werner Lemberg <wl@gnu.org> 443 444 [truetype] Beautify tracing of VF axis records. 445 446 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Show axis records in a 447 table-like manner. 448 4492018-01-26 Ben Wagner <bungeman@google.com> 450 451 [truetype] Fix multiple calls of `FT_Get_MM_Var' (#52955). 452 453 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Set 454 `face->blend->num_axis' in case we have to initialize the 455 `face->blend'. 456 4572018-01-23 Alexei Podtelezhnikov <apodtele@gmail.com> 458 459 [apinames] Anonymous version map for GNU linker. 460 461 * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.3. 462 (OutputFormat): Add `OUTPUT_GNU_VERMAP'. 463 (names_dump): Handle it. 464 (usage): Updated. 465 (main): Handle new command line flag `-wL'. 466 4672018-01-21 Alexei Podtelezhnikov <apodtele@gmail.com> 468 469 [unix] Call libtool to clean up. 470 471 * builds/unix/install.mk (clean_project_unix, distclean_project_unix): 472 Use libtool. 473 * builds/freetype.mk: Minor. 474 4752018-01-18 Alexei Podtelezhnikov <apodtele@gmail.com> 476 477 * src/base/ftver.rc: Fix mingw-w64 compilation. 478 4792018-01-18 Alexei Podtelezhnikov <apodtele@gmail.com> 480 481 [build] Enable VERSIONINFO resource for Cygwin/MinGW. 482 483 * builds/unix/configure.raw: Check for resource compiler. 484 * builds/unix/unix-cc.in: Conditionally set up resource compiler. 485 * builds/freetype.mk: Add conditional rule for `ftver.rc'. 486 * src/base/ftver.rc: Copyright notice and year update. 487 4882018-01-18 Alexei Podtelezhnikov <apodtele@gmail.com> 489 490 [build] Move VERSIONINFO resource. 491 492 * builds/windows/vc2010/freetype.vcxproj: Updated. 493 * builds/windows/ftver.rc: Move file from here... 494 * src/base/ftver.rc: ... to here. 495 4962018-01-12 Alexei Podtelezhnikov <apodtele@gmail.com> 497 498 [build] Expand dllexport/dllimport to Cygwin/MinGW. 499 500 * include/freetype/config/ftconfig.h: Respect DLL_EXPORT, 501 s/_MSC_VER/_WIN32/. 502 * builds/unix/ftconfig.in: Replicate here. 503 * builds/vms/ftconfig.h: Replicate here. 504 5052018-01-12 Alexei Podtelezhnikov <apodtele@gmail.com> 506 507 [build] Improve and document MSVC build. 508 509 * include/freetype/config/ftconfig.h: Guard dllexport/dllimport 510 attributes with _DLL and FT2_DLLIMPORT. 511 * builds/windows/vc2010/index.html: Update documentation. 512 5132018-01-10 Steve Robinson <ssrobins@gmail.com> 514 515 * CMakeLists.txt [win32]: Suppress warnings for POSIX functions. 516 5172018-01-10 Ewald Hew <ewaldhew@gmail.com> 518 519 [psaux] Correctly handle Flex features (#52846). 520 521 * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO, 522 cf2_cmdHMOVETO>: Do not move if doing Flex. 523 5242018-01-09 Alexei Podtelezhnikov <apodtele@gmail.com> 525 526 * builds/windows/vc2010/freetype.sln: Synchronize with the project. 527 5282018-01-08 Werner Lemberg <wl@gnu.org> 529 530 * Version 2.9 released. 531 ======================= 532 533 534 Tag sources with `VER-2-9'. 535 536 * docs/VERSION.TXT: Add entry for version 2.9. 537 538 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, 539 builds/windows/vc2005/index.html, 540 builds/windows/vc2008/freetype.vcproj, 541 builds/windows/vc2008/index.html, 542 builds/windows/vc2010/freetype.vcxproj, 543 builds/windows/vc2010/index.html, 544 builds/windows/visualc/freetype.dsp, 545 builds/windows/visualc/freetype.vcproj, 546 builds/windows/visualc/index.html, 547 builds/windows/visualce/freetype.dsp, 548 builds/windows/visualce/freetype.vcproj, 549 builds/windows/visualce/index.html, 550 builds/windows/ftver.rc, 551 builds/wince/vc2005-ce/freetype.vcproj, 552 builds/wince/vc2005-ce/index.html, 553 builds/wince/vc2008-ce/freetype.vcproj, 554 builds/wince/vc2008-ce/index.html: s/2.8.1/2.9/, s/281/29/. 555 556 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 9. 557 (FREETYPE_PATCH): Set to 0. 558 559 * builds/unix/configure.raw (version_info): Set to 22:0:16. 560 * CMakeLists.txt (VERSION_PATCH): Set to 0. 561 5622018-01-07 Werner Lemberg <wl@gnu.org> 563 564 Add check for librt, needed for `ftbench' (#52824). 565 566 * builds/unix/configure.raw (LIB_CLOCK_GETTIME): Define; this will 567 hold `-lrt' if necessary. 568 569 * builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): New variable. 570 5712018-01-07 Ewald Hew <ewaldhew@gmail.com> 572 573 [psaux] Fix Type 1 glyphs with too many stem hints. 574 575 According to the CFF specification, charstrings can have up to 96 stem 576 hints. Due to hint replacement routines in Type 1 charstrings, some 577 glyphs are rejected by the Adobe engine, which implements the above 578 limit. This fix turns off hinting for such glyphs. 579 580 * src/psaux/pshints.c (cf2_hintmap_build): Reset the error from calling 581 `cf2_hintmask_setAll' on a problematic Type 1 charstring and turn off 582 hinting. 583 5842018-01-06 Werner Lemberg <wl@gnu.org> 585 586 Add `FT_Done_MM_Var'. 587 588 This is necessary in case the application's memory routines differ 589 from FreeType. A typical example is a Python application on Windows 590 that calls FreeType compiled as a DLL via the `ctypes' interface. 591 592 * include/freetype/ftmm.h, src/base/ftmm.c (FT_Done_MM_Var): Declare 593 and define. 594 595 * docs/CHANGES: Updated. 596 5972018-01-03 Werner Lemberg <wl@gnu.org> 598 599 [truetype] Round offsets of glyph components only if hinting is on. 600 601 * src/truetype/ttgload.c (TT_Process_Composite_Component): Implement 602 it. 603 6042018-01-03 Werner Lemberg <wl@gnu.org> 605 606 * src/truetype/ttgxvar.c (ft_var_to_design): Remove dead code. 607 608 This is a better fix than the previous commit, which is now 609 reverted. 610 6112018-01-03 Alexei Podtelezhnikov <apodtele@gmail.com> 612 613 Move internal LCD-related declarations. 614 615 * include/freetype/ftlcdfil.h (ft_lcd_padding, ft_lcd_filter_fir): 616 Move from here... 617 * include/freetype/internal/ftobjs.h: ... to here. 618 6192018-01-03 Alexei Podtelezhnikov <apodtele@gmail.com> 620 621 * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF) 622 [_MSC_VER]: Limit Visual C++ attributes. 623 6242018-01-03 Werner Lemberg <wl@gnu.org> 625 626 [truetype] Make blend/design coordinate round-tripping work. 627 628 Behdad reported that setting blend coordinates, then getting design 629 coordinates did incorrectly return the default instance's 630 coordinates. 631 632 * src/truetype/ttgxvar.c (tt_set_mm_blend): Fix it. 633 6342017-12-31 Werner Lemberg <wl@gnu.org> 635 636 * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix endless loop. 637 638 Reported as 639 640 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4838 641 6422017-12-31 Werner Lemberg <wl@gnu.org> 643 644 Synchronize other Windows project files. 645 646 * builds/windows/*: Add missing files. 647 6482017-12-31 Werner Lemberg <wl@gnu.org> 649 650 Update Visual C 2010 project files. 651 652 Problem reported by Hin-Tak. 653 654 * builds/windows/vc2010/freetype.vcxproj: Add files `ftbdf.c' and 655 `ftcid.c'. 656 Sort entries. 657 * builds/windows/vc2010/freetype.vcxproj.filter: Ditto. 658 Fix members of `FT_MODULE' group. 659 6602017-12-30 Werner Lemberg <wl@gnu.org> 661 662 * builds/vms/ftconfig.h: Synchronize with unix `ftconfig.in' file. 663 6642017-12-28 Werner Lemberg <wl@gnu.org> 665 666 * builds/unix/ftconfig.in: Synchronize with main `ftconfig.h' file. 667 668 Reported by Nikolaus. 669 6702017-12-27 Werner Lemberg <wl@gnu.org> 671 672 Fix compiler warnings. 673 674 * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Make `pitch' and 675 `new_pitch' unsigned. 676 677 * src/base/ftpsprop.c: Include FT_INTERNAL_POSTSCRIPT_PROPS_H. 678 6792017-12-27 Werner Lemberg <wl@gnu.org> 680 681 Fixes for `make multi'. 682 683 * include/freetype/internal/ftpsprop.h: Use `FT_BASE_CALLBACK'. 684 (ps_property_get): Harmonize declaration with corresponding 685 function typedef. 686 687 * include/freety[e/internal/fttrace.h: Add `trace_psprops'. 688 689 * src/base/ftpsprop.c: Include necessary header files. 690 (FT_COMPONENT): Define. 691 (ps_property_set): Tag with `FT_BASE_CALLBACK_DEF'. 692 (ps_property_get): Tag with `FT_BASE_CALLBACK_DEF'. 693 Harmonize declaration with corresponding function typedef. 694 6952017-12-27 Werner Lemberg <wl@gnu.org> 696 697 Provide support for intra-module callback functions. 698 699 This is needed especially for `make multi' with C++. 700 701 * include/freetype/config/ftconfig.h (FT_BASE_CALLBACK, 702 FT_BASE_CALLBACK_DEF): New macros. 703 7042017-12-25 Ewald Hew <ewaldhew@gmail.com> 705 706 Move PostScript drivers' property handlers to `base'. 707 708 This reduces the amount of duplicated code across PostScript 709 drivers. 710 711 * src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c 712 ({cff,cid,t1}_property_{get,set}): Moved to... 713 * include/freetype/internal/ftpsprop.h: ...this new file. 714 (ps_property_{get,set}): New functions to replace moved ones. 715 716 * src/base/ftpsprop.c: New file that implements above functions. 717 718 * include/freetype/internal/internal.h 719 (FT_INTERNAL_POSTSCRIPT_PROPS_H): New macro. 720 721 * src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c: 722 Updated. 723 724 * src/base/Jamfile, src/base/rules.mk (BASE_SRC), src/base/ftbase.c: 725 Updated. 726 7272017-12-20 Werner Lemberg <wl@gnu.org> 728 729 Speed up FT_Set_Var_{Design,Blend}_Coordinates if curr == new. 730 731 We exit early if the current design or blend coordinates are 732 identical to the new ones. 733 734 * src/truetype/ttgxvar.c (tt_set_mm_blend, TT_Set_Var_Design): 735 Implement it, returning internal error code -1 if there will be no 736 variation change. 737 738 * src/type1/t1load.c (t1_set_mm_blend): Ditto. 739 740 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, 741 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Updated. 742 7432017-12-18 Werner Lemberg <wl@gnu.org> 744 745 [sfnt] Fix charmap type 2 iterator (#52646). 746 747 The subsetted demo font of the report that exhibits the bug has a 748 very unusual type 2 cmap for Unicode(!): It contains only two 749 sub-headers, one for one-byte characters (covering the range 0x20 to 750 0xFA), and a second one for higher byte 0x01 (just for character 751 code U+0131). 752 753 Before this commit, the iterator wasn't able to correctly handle a 754 sub-header for higher byte 0x01. 755 756 * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix character increment 757 for outer loop. 758 7592017-12-18 Matthias Clasen <matthias.clasen@gmail.com> 760 761 [truetype] Fix clamping, minor tracing code beautification. 762 763 * src/truetype/ttgxvar.c (ft_var_to_normalized): Trace number of 764 design coordinates. 765 Use clamped value. 766 7672017-12-18 Werner Lemberg <wl@gnu.org> 768 769 * src/*/*: Only use `ft_' and `FT_' variants of stdc library stuff. 770 7712017-12-18 Werner Lemberg <wl@gnu.org> 772 773 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Add size guard (#52688). 774 7752017-12-18 Werner Lemberg <wl@gnu.org> 776 777 [truetype] Fix previous commit. 778 779 * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Correctly handle 780 unhinted phantom points, which must be properly scaled. 781 7822017-12-18 Werner Lemberg <wl@gnu.org> 783 784 [truetype] Don't apply HVAR and VVAR deltas twice (#52683). 785 786 * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Always adjust 787 `pp1' to `pp4', except if we have an HVAR and/or VVAR table. 788 789 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Handle 790 alternative code branch identically w.r.t. presence of an HVAR 791 and/or VVAR table. 792 7932017-12-17 Jonathan Kew <jfkthame@gmail.com> 794 795 [truetype] Correctly handle variation font phantom points (#52683). 796 797 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix phantom 798 point indices. 799 8002017-12-17 Jonathan Kew <jfkthame@gmail.com> 801 802 Fix incorrect advance width scaling (#52683). 803 804 * src/base/ftadvance.c (FT_Get_Advances): Always respect the 805 FT_LOAD_NO_SCALE flag if present. 806 8072017-12-16 Alexei Podtelezhnikov <apodtele@gmail.com> 808 809 * builds/windows/vc2010/freetype.vcxproj: AfterBuild copy. 810 * objs/.gitignore: Ignore almost everything. 811 8122017-12-11 Werner Lemberg <wl@gnu.org> 813 814 Fix compiler warning (#52640). 815 816 * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Remove unused 817 variable. 818 8192017-12-08 Azzuro <azzuro@team-mediaportal.com> 820 821 * builds/windows/vc2010/freetype.vcxproj: Adjust output directory. 822 823 This allows builds with different configurations in parallel. 824 8252017-12-08 Werner Lemberg <wl@gnu.org> 826 827 Fix `make setup dos', second try (#52622). 828 829 * builds/detect.mk (dos_setup): Don't use literal `>' character at 830 all. Mixing the different escaping rules from make, dos, and 831 windows is too fragile. 832 8332017-12-08 Werner Lemberg <wl@gnu.org> 834 835 [docmaker] Fix code section parsing. 836 837 Stuff like 838 839 { 840 <bla> 841 } 842 843 confused the parser, which incorrectly treated `<bla>' as a markup 844 tag. 845 846 * src/tools/docmaker/content.py (ContentProcessor::process_content): 847 Apply `re_markup_tags' only outside of code sections. 848 8492017-12-08 Werner Lemberg <wl@gnu.org> 850 851 New `ftdriver.h' file, covering all driver modules. 852 853 This reduces redundancy and increases synergy; it also reduces the 854 number of header files. 855 856 * include/freetype/config/ftheader.h (FT_DRIVER_H): New macro. 857 (FT_AUTOHINTER_H, FT_CFF_DRIVER_H, FT_TRUETYPE_DRIVER_H, 858 FT_PCF_DRIVER_H, FT_TYPE1_DRIVER_H): Make them aliases to 859 FT_DRIVER_H. 860 861 * include/freetype/ftautoh.h, include/freetype/ftcffdrv.h, 862 include/freetype/ftpcfdrv.h, include/freetype/ftt1drv.h, 863 include/freetype/ftttdrv.h: Replaced with... 864 * include/freetype/ftdriver.h: ...this new file. 865 (FT_CFF_HINTING_ADOBE, FT_T1_HINTING_ADOBE): Renamed to... 866 (FT_HINTING_ADOBE): ... this new macro. 867 (FT_CFF_HINTING_FREETYPE, FT_T1_HINTING_FREETYPE): Renamed to... 868 (FT_HINTING_FREETYPE): ... this new macro. 869 870 * src/*/*: Updated accordingly. 871 8722017-12-08 Werner Lemberg <wl@gnu.org> 873 874 Move `ftdriver.h' to `ftdrv.h'. 875 876 * include/freetype/internal/ftdriver.h: Renamed to... 877 * include/freetype/internal/ftdrv.h: ... this name. 878 879 * include/freetype/internal/internal.h (FT_INTERNAL_DRIVER_H): 880 Updated. 881 8822017-12-08 Werner Lemberg <wl@gnu.org> 883 884 Fix access to uninitalized memory (#52613). 885 886 Also reported as 887 888 https://bugs.chromium.org/p/chromium/issues/detail?id=791317 889 890 * src/base/ftbitmap.c (ft_bitmap_assure_buffer): If increasing the 891 bitmap size needs a larger bitmap buffer, assure that the new memory 892 areas are initialized also. 893 8942017-12-08 Werner Lemberg <wl@gnu.org> 895 896 Fix `make setup dos' (#52622). 897 898 * builds/detect.mk (dos_setup): Properly escape literal `>' 899 character. 900 9012017-12-07 Werner Lemberg <wl@gnu.org> 902 903 Fix C++ compilation. 904 905 * src/psaux/psauxmod.h: Use FT_CALLBACK_TABLE macro where necessary. 906 907 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix warning. 908 9092017-12-07 Werner Lemberg <wl@gnu.org> 910 911 Fix `make multi'. 912 913 * include/freetype/internal/fttrace.h: Remove unused tracing macros. 914 s/pshalgo2/pshalgo/. 915 Add `trace_cffdecode'. 916 * src/pshinter/pshalgo.c (FT_COMPONENT): Updated. 917 918 * src/cff/cffload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H. 919 * src/cff/cffobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H and 920 FT_SERVICE_CFF_TABLE_LOAD_H. 921 922 * src/cid/cidriver.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H. 923 924 * src/psaux/cffdecode.c: Include FT_FREETYPE_H and 925 FT_INTERNAL_DEBUG_H. 926 (FT_COMPONENT): Define. 927 * src/psaux/cffdecode.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H. 928 * src/psaux/psauxmod.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H. 929 Declare `cff_builder_funcs' and `ps_builder_funcs'. 930 * src/psaux/psft.c: Include `psobjs.h' and `cffdecode.h'. 931 * src/psaux/psobjs.c : Include `psauxmod.h'. 932 9332017-12-07 Werner Lemberg <wl@gnu.org> 934 935 * include/freetype/config/ftheader.h: Some clean-up. 936 937 This commit removes documentation of deprecated macros and does some 938 minor streamlining. 939 9402017-12-06 Werner Lemberg <wl@gnu.org> 941 942 * builds/symbian/bld.inf: Updated. 943 9442017-12-06 Werner Lemberg <wl@gnu.org> 945 946 New header file `ftparams.h' that collects all parameter tags. 947 948 * include/freetype/config/ftheader.h (FT_PARAMETER_TAGS_H): New 949 macro. 950 (FT_TRUETYPE_UNPATENTED_H, FT_UNPATENTED_HINTING_H): Define it to 951 `ftparams.h'. 952 953 * include/freetype/ftautoh.h, include/freetype/ftcffdrv.h, 954 include/freetype/ftincrem.h, include/freetype/ftlcdfil.h, 955 include/freetype/ftsnames.h, include/freetype/ftt1drv.h: Include 956 FT_PARAMETER_TAGS_H. 957 Move FT_PARAM_TAG_XXX definitions to... 958 * include/freetype/ftparams.h: ...this new file. 959 960 * include/freetype/ttunpat.h: Remove. No longer needed. 961 9622017-12-05 Werner Lemberg <wl@gnu.org> 963 964 Improve tracing messages by using singular and plural forms. 965 966 * src/*/*.c: Implement it. 967 9682017-12-04 Werner Lemberg <wl@gnu.org> 969 970 [truetype] Allow shared points in `cvar' table (#52532). 971 972 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Implement it by copying 973 and adjusting the corresponding code from 974 `TT_Vary_Apply_Glyph_Deltas'. 975 9762017-11-28 Werner Lemberg <wl@gnu.org> 977 978 [truetype] Improving tracing of composite glyphs. 979 980 * src/truetype/ttgload.c (TT_Load_Composite_Glyph) 981 [FT_DEBUG_LEVEL_TRACE]: Show composite glyph information. 982 9832017-11-27 Werner Lemberg <wl@gnu.org> 984 985 [type1] Allow (again) `/Encoding' with >256 elements (#52464). 986 987 In version 2.6.1, this has been disallowed to better reject 988 malformed fonts; however, this restriction was too strong. This 989 time, we only take the first 256 elements into account, since 990 encoding arrays are always accessed with a 8bit integer, according 991 to the PostScript Language Reference. 992 993 * src/type1/t1load.c (parse_encoding): Implement it. 994 9952017-11-27 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> 996 997 Fix last commit (#52522). 998 999 * builds/freetype.mk: Set `FT_OPTION_H' and `FTOPTION_FLAG' 1000 properly if we have `ftoption.h' in `BUILD_DIR'. 1001 10022017-11-24 Werner Lemberg <wl@gnu.org> 1003 1004 [unix] Install a massaged `ftoption.h' file (#51780). 1005 1006 * builds/unix/configure.raw (ftoption_set, ftoption_unset): New 1007 auxiliary functions to construct... 1008 (FTOPTION_H_SED): ... this new variable. 1009 Apply it as a sed argument while copying `ftoption.h' to the 1010 `builds/unix' directory (using `AC_CONFIG_FILES'). 1011 Simplify code of test that checks cpp's computation of bit length 1012 (the test previously created an empty `ftoption.h' file and deleted 1013 it immediately afterwards); without this change, it can happen on my 1014 GNU/Linux box that `configure's execution of `config.status' doesn't 1015 create `ftoption.h' (no idea why this happens). 1016 1017 * builds/unix/install.mk (install): Install 1018 `builds/unix/ftoption.h'. 1019 1020 * builds/unix/unix-def.in (DISTCLEAN): Updated. 1021 1022 * builds/unix/.gitignore: Updated. 1023 10242017-11-23 Tor Andersson <tor.andersson@artifex.com> 1025 1026 Silence unused function warnings (#52465). 1027 1028 Some static function declarations cause unused function warnings if 1029 certain config options are turned off via `ftoption.h'. 1030 1031 * src/base/ftbase.h, src/base/ftrfork.c, src/sfnt/ttbdf.h, 1032 src/truetype/ttgxvar.h: Add #ifdef guards around these sections. 1033 10342017-11-22 Ewald Hew <ewaldhew@gmail.com> 1035 1036 * src/psaux/psft.c (cf2_setGlyphWidth): Check format before setting. 1037 1038 Reported as 1039 1040 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4377 1041 10422017-11-22 Ewald Hew <ewaldhew@gmail.com> 1043 1044 [psaux] Fix CFF advance widths. (#52466) 1045 1046 Glyph advance widths were being written to the new `PS_Decoder' but not 1047 saved to the underlying format specific decoder. This caused pure CFF 1048 fonts to have bad advance width. 1049 1050 * include/freetype/internal/psaux.h (PS_Decoder): Change `glyph_width' 1051 field to pointer. 1052 Remove unused fields. 1053 * src/psaux/psobjs.c (ps_decoder_init): Change `glyph_width' from copy 1054 to reference. 1055 Remove unused. 1056 * src/psaux/psft.c (cf2_setGlyphWidth): Update code. 1057 10582017-11-15 Vlad Tsyrklevich <vtsyrklevich@google.com> 1059 1060 * include/freetype/ftrender.h: Fix `FT_Renderer_RenderFunc' type. 1061 10622017-11-14 Nikolaus Waxweiler <madigens@gmail.com> 1063 1064 Use Adobe hinting engine for `light' hinting of both CFF and Type 1. 1065 1066 Since Ewald Hew factored the Adobe hinting engine out of the CFF 1067 driver code, we can now use it on Type 1 (and CID) font formats, as 1068 both have the same hinting philosophy. 1069 1070 This change activates the Adobe hinter when in LIGHT mode, and 1071 therefore always unless explicitly asking for the auto-hinter. This 1072 makes LIGHT behavior consistent with CFF fonts. As of this commit, 1073 the hinting engine table looks as follows. 1074 1075 LIGHT NORMAL 1076 ------------------------- 1077 TrueType Auto v40 1078 CFF Adobe Adobe 1079 Type 1 Adobe Adobe 1080 10812017-11-10 Yuri Levchenko <yuri_levchenko@boolat.com> 1082 1083 * CMakeLists.txt: Add `DISABLE_FORCE_DEBUG_PREFIX' option. 1084 10852017-11-06 Alexei Podtelezhnikov <apodtele@gmail.com> 1086 1087 * src/base/ftobjs.c (FT_Load_Glyph): Relocate condition. 1088 10892017-11-06 Alexei Podtelezhnikov <apodtele@gmail.com> 1090 1091 * src/smooth/ftgrays.c (gray_set_cell): Fix uninitialized variables. 1092 10932017-11-03 Ewald Hew <ewaldhew@gmail.com> 1094 1095 [psaux] Fix PostScript interpreter rewinding in Type 1 mode. (#52251) 1096 1097 The interpreter in Type 1 mode rewinds the charstring after collecting 1098 all hints for building the initial hintmap (commit d52dd7f). However, 1099 some charstrings use `endchar' in a final subroutine call, rewinding to 1100 the start of that subroutine, and only a small section of the actual 1101 glyph is drawn. 1102 1103 * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdENDCHAR>: 1104 Ensure we are on the top level charstring before rewinding. 1105 11062017-11-03 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 1107 1108 [truetype] Add more tricky fonts. 1109 1110 See the report by Yang Yinsen. 1111 https://lists.gnu.org/archive/html/freetype-devel/2017-11/msg00000.html 1112 1113 * src/truetype/ttobjs.c (trick_names): Add `DFGothic-EB', 1114 `DFGyoSho-Lt', `DFHSGothic-W5', `DFHSMincho-W3' and `DFHSMincho-W7'. 1115 (tt_check_trickyness_sfnt_ids): Add checksums for DFGothic-EB, 1116 DFGyoSho-Lt, DFHSGothic-W5, DFHSMincho-W3 and DFHSMincho-W7. Also 1117 add checksums for DLCLiShu and DLCHayBold which their family names 1118 were already listed but their checksums were previously unknown. 1119 11202017-11-01 Alexei Podtelezhnikov <apodtele@gmail.com> 1121 1122 [smooth] Fix complex rendering at high ppem. 1123 1124 We used to split large glyphs into horizontal bands and continue 1125 bisecting them still horizontally if that was not enough. This is 1126 guaranteed to fail when a single scanline cannot fit into the 1127 rendering memory pool. Now we bisect the bands vertically so that 1128 the smallest unit is a column of the band height, which is guranteed 1129 to fit into memory. 1130 1131 * src/smooth/ftgrays.c (gray_convert_glyph): Implement it. 1132 11332017-10-20 Alexei Podtelezhnikov <apodtele@gmail.com> 1134 1135 [smooth] Improve complex rendering at high ppem. 1136 1137 At large sizes almost but not exactly horizontal segments can quickly 1138 drain the rendering pool. This patch at least avoids filling the pool 1139 with trivial cells. Beyond this, we can only increase the pool size. 1140 1141 Reported, analyzed, and tested by Colin Fahey. 1142 1143 * src/smooth/ftgrays.c (gray_set_cell): Do not record trivial cells. 1144 11452017-10-20 Alexei Podtelezhnikov <apodtele@gmail.com> 1146 1147 [base] Improve tracing in FT_Load_Glyph, FT_*_Size. 1148 1149 * src/base/ftobjs.c (FT_Load_Glyph): Tag tracing messages with 1150 function name, glyph index, and load flags. 1151 (FT_Select_Metrics, FT_Request_Metrics): Remove all tracing. 1152 (FT_Select_Size, FT_Request_Size): Improve tracing. 1153 11542017-10-18 Alexei Podtelezhnikov <apodtele@gmail.com> 1155 1156 [base] Improve tracing in FT_Render_Glyph. 1157 1158 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Add total coverage 1159 calculations and downgrade Netpbm dump to bitmap:7. 1160 11612017-10-15 Ewald Hew <ewaldhew@gmail.com> 1162 1163 [cff] Fix segfault on missing `psaux' (#52218) 1164 1165 * src/cff/cffload.c (cff_done_blend): Add a check for possible nullptr. 1166 1167 * modules.cfg: Update dependency list. 1168 11692017-10-15 Alexei Podtelezhnikov <apodtele@gmail.com> 1170 1171 [base, cff] Fix MSVC warnings. 1172 1173 * src/base/ftobjs.c (FT_New_Library): C4702: unreachable code. 1174 (ft_glyphslot_preset_bitmap): C4244: possible loss of data. 1175 * src/cff/cffload.c (cff_blend_doBlend): C4244: possible loss of data. 1176 Turn `sum' into unsigned. 1177 11782017-10-14 Alexei Podtelezhnikov <apodtele@gmail.com> 1179 1180 [base] Netpbm image tracing. 1181 1182 * src/base/ftobjs.c (FT_Load_Glyph): Trace bitmap size. 1183 (FT_Render_Glyph_Internal): Trace bitmap in Netpbm format. 1184 1185 * src/smooth/ftgrays.c (gray_sweep): Sweep remnants of span tracing. 1186 11872017-10-14 Alexei Podtelezhnikov <apodtele@gmail.com> 1188 1189 * builds/windows/ftdebug.c (FT_Message): Print to stderr. 1190 * builds/wince/ftdebug.c (FT_Message): Ditto. 1191 11922017-10-14 Behdad Esfahbod <behdad@behdad.org> 1193 1194 [afshaper] Delay creating `hb_set' objects until needed. 1195 1196 In runs on Noto Naskh Arabic, this results in 89 sets created 1197 instead of 340 before. Makes auto-hinter setup with HarfBuzz 1198 enabled 20% to 30% faster. 1199 1200 * src/autofit/afshaper.c (af_shaper_get_coverage): Implement it. 1201 12022017-10-12 Ewald Hew <ewaldhew@gmail.com> 1203 1204 [type1, cid] Add hinting engine switch. 1205 1206 Implement property service in `type1' and `cid' drivers to allow 1207 switching between FreeType or Adobe hinting engine when both are 1208 available. 1209 1210 * src/cid/cidriver.c (cid_property_{set,get}, cid_services), 1211 src/type1/t1driver.c (t1_property_{set,get}, t1_services): Add 1212 Properties service. 1213 1214 * src/cid/cidobjs.c (cid_driver_init), src/type1/t1objs.c 1215 (T1_Driver_Init): Add default property values. 1216 12172017-10-12 Ewald Hew <ewaldhew@gmail.com> 1218 1219 Add T1_CONFIG_OPTION_OLD_ENGINE configuration option. 1220 1221 This controls whether the old Type 1 engine gets compiled into FreeType. 1222 It is disabled by default. 1223 1224 * devel/ftoption.h, include/freetype/config/ftoption.h 1225 (T1_CONFIG_OPTION_OLD_ENGINE): New macro. 1226 1227 * include/freetype/internal/psaux.h (PS_Decoder): Remove unused field. 1228 * include/freetype/internal/psaux.h, src/cid/cidgload.c 1229 (cid_load_glyph), src/psaux/psauxmod.c, src/psaux/psobjs.c 1230 (ps_builder_add_point), src/psaux/t1decode.c 1231 (t1_lookup_glyph_by_stdcharcode, t1_decoder_parse_glyph, 1232 t1operator_seac, t1_decoder_parse_charstrings), src/psaux/t1decode.h, 1233 src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Surround 1234 relevant code with macro. 1235 Minor code changes. 1236 12372017-10-12 Ewald Hew <ewaldhew@gmail.com> 1238 1239 Extract width parsing from Type 1 parser. 1240 1241 Duplicate the fast advance width calculations from the old parser. 1242 This is to facilitate adding options for compiling out the old parser. 1243 1244 * src/psaux/t1decode.{c,h} (t1_decoder_parse_metrics): New function. 1245 * include/freetype/internal/psaux.h (T1_Decoder_Funcs): New entry 1246 `parse_metrics'. 1247 * src/psaux/psauxmod.c: Set the new entry. 1248 1249 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String), 1250 src/cid/cidgload.c (cid_load_glyph): Separate 1251 conditional for selecting engine. 1252 12532017-10-09 Werner Lemberg <wl@gnu.org> 1254 1255 * src/base/ftoutln.c (FT_Outline_Translate): Fix integer overflow. 1256 1257 Reported as 1258 1259 https://bugs.chromium.org/p/chromium/issues/detail?id=772775 1260 12612017-10-08 Werner Lemberg <wl@gnu.org> 1262 1263 * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Integer overflows. 1264 1265 Reported as 1266 1267 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3579 1268 12692017-10-07 Werner Lemberg <wl@gnu.org> 1270 1271 [sfnt] Adjust behaviour of PS font names for variation fonts. 1272 1273 * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Use a named instance's 1274 PS name only if no variation is applied. 1275 12762017-10-07 Werner Lemberg <wl@gnu.org> 1277 1278 [cff, truetype] Adjust behaviour of named instances. 1279 1280 This commit completely separates the interaction between named 1281 instances and variation functions. In particular, resetting the 1282 variation returns to the current named instance (if set) and not to 1283 the base font. 1284 1285 As a side effect, variation functions no longer change the named 1286 instance index. 1287 1288 * src/cff/cffobjs.c (cff_face_init): Use MM service's `set_instance' 1289 function. 1290 Also apply `MVAR' table to named instances. 1291 1292 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Add cast. 1293 (tt_set_mm_blend): No longer check whether requested variation 1294 coincides with a named instance. 1295 (TT_Set_Var_Design): Use current named instance for default 1296 coordinates. 1297 * src/truetype/ttobjs.c (tt_face_init): Use `TT_Set_Named_Instance'. 1298 12992017-10-07 Werner Lemberg <wl@gnu.org> 1300 1301 Make `FT_Set_Named_Instance' work. 1302 1303 * src/cff/cffdrivr.c (cff_set_instance): New function. 1304 (cff_service_multi_masters): Register it. 1305 1306 * src/truetype/ttgxvar.c (TT_Set_Named_Instance): New function. 1307 * src/truetype/ttgxvar.h: Updated. 1308 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Register 1309 it. 1310 1311 * src/type1/t1load.c (T1_Reset_MM_Blend): New function. 1312 * src/type1/t1load.h: Updated. 1313 * src/type1/t1driver.c (t1_service_multi_masters): Register it. 1314 13152017-10-07 Werner Lemberg <wl@gnu.org> 1316 1317 Make `FT_FACE_FLAG_VARIATION' work. 1318 1319 * include/freetype/internal/tttypes.h (TT_Face): Remove 1320 `is_default_instance'; this can be replaced with a combination of 1321 `FT_IS_VARIATION' and `FT_IS_INSTANCE'. 1322 1323 * src/cff/cffdrivr.c (cff_get_advances): Updated. 1324 1325 * src/sfnt/sfdriver.c (sfnt_get_ps_name), src/sfnt/sfobjs.c 1326 (sfnt_init_face): Updated. 1327 1328 * src/truetype/ttdriver.c (tt_get_advances), src/truetype/ttgload.c 1329 (TT_Process_Simple_Glyph, load_truetype_glyph, IS_DEFAULT_INSTANCE), 1330 src/truetype/ttgxvar.c (tt_set_mm_blend): Updated. 1331 * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design): 1332 Handle `FT_FACE_FLAG_VARIATION'. 1333 1334 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Handle 1335 `FT_FACE_FLAG_VARIATION'. 1336 13372017-10-07 Werner Lemberg <wl@gnu.org> 1338 1339 New function `FT_Set_Named_Instance'. 1340 1341 No effect yet. 1342 1343 * src/base/ftmm.c (FT_Set_Named_Instance): New function. 1344 1345 * include/freetype/ftmm.h: Updated. 1346 13472017-10-07 Werner Lemberg <wl@gnu.org> 1348 1349 Add macros for checking whether a font variation is active. 1350 1351 * include/freetype/freetype.h (FT_FACE_FLAG_VARIATION, 1352 FT_IS_VARIATION): New macros. 1353 No effect yet. 1354 13552017-10-07 Werner Lemberg <wl@gnu.org> 1356 1357 Add framework for setting named instance in MM service. 1358 1359 * include/freetype/internal/services/svmm.h (FT_Set_Instance_Func): 1360 New function typedef. 1361 (MultiMasters): Add `set_instance' member. 1362 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. 1363 1364 * src/cff/cffdrivr.c (cff_service_multi_masters), 1365 src/truetype/ttdriver (tt_service_gx_multi_masters), 1366 src/type1/t1driver.c (t1_service_multi_masters): Updated. 1367 13682017-10-07 Werner Lemberg <wl@gnu.org> 1369 1370 [type1] Minor code shuffling. 1371 1372 * src/type1/t1load.c (T1_Set_MM_Blend): Make it a wrapper of... 1373 (t1_set_mm_blend): ...this new function. 1374 (T1_Set_MM_Design): Use `t1_set_mm_blend'. 1375 13762017-10-05 Werner Lemberg <wl@gnu.org> 1377 1378 * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Fix integer 1379 overflow. 1380 1381 Reported as 1382 1383 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3539 1384 13852017-10-05 Werner Lemberg <wl@gnu.org> 1386 1387 Fix compiler warnings. 1388 1389 * src/cff/cffdrivr.c (cff_ps_get_font_extra): Avoid code that relies 1390 on numeric overflow. 1391 Add cast. 1392 1393 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix variable 1394 types, add cast. 1395 13962017-10-04 John Tytgat <John.Tytgat@esko.com> 1397 1398 [cff] Add support for `FSType'. 1399 1400 * include/freetype/internal/cfftypes.h (CFF_FontRec): Add 1401 `font_extra' entry. 1402 1403 * src/cff/cffdrivr.c (cff_ps_get_font_extra): New function to 1404 retrieve FSType info from the embedded PostScript data. 1405 (cff_service_ps_info): Register function. 1406 1407 * src/cff/cffload.c (cff_font_done): Free `font_extra'. 1408 14092017-09-30 Alexei Podtelezhnikov <apodtele@gmail.com> 1410 1411 Signedness fixes in bitmap presetting. 1412 1413 Reported as 1414 1415 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3514. 1416 1417 * src/raster/ftrend1.c (ft_raster1_render): Explicitly signed height. 1418 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto. 1419 * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Explicitly unsigned 1420 subtraction. 1421 14222017-09-29 Alexei Podtelezhnikov <apodtele@gmail.com> 1423 1424 Bitmap metrics presetting [2/2]. 1425 1426 * src/base/ftobjs.c (FT_Load_Glyph): Preset the bitmap metrics when 1427 appropriate but `FT_Render_Glyph' is not called. 1428 * include/freetype/freetype.h (FT_GlyphSlotRec): Document the change. 1429 14302017-09-28 Alexei Podtelezhnikov <apodtele@gmail.com> 1431 1432 [smooth, raster] Miscellaneous cleanups. 1433 1434 * src/raster/ftrend1.c (ft_raster1_render): Clean up the exit. 1435 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Reduce 1436 translations and clean up the exit. 1437 (ft_smooth_render_lcd, ft_smooth_render_lcd): Remove unused `error'. 1438 14392017-09-28 Ben Wagner <bungeman@google.com> 1440 1441 [truetype] Really, really fix #52082. 1442 1443 * src/truetype/ttinterp.c (Ins_MDRP): Correct conditional. 1444 14452017-09-28 Werner Lemberg <wl@gnu.org> 1446 1447 * src/psaux/psintrp.c (cf2_doStems): Fix integer overflow. 1448 1449 Reported as 1450 1451 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3510 1452 14532017-09-28 Ewald Hew <ewaldhew@gmail.com> 1454 1455 * src/cid/cidgload.c (cid_slot_load_glyph): Fix memory leak. 1456 1457 Reported as 1458 1459 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3489 1460 14612017-09-28 Alexei Podtelezhnikov <apodtele@gmail.com> 1462 1463 Bitmap metrics presetting [1/2]. 1464 1465 This mainly just extracts the code for presetting the bitmap metrics 1466 from the monochrome, grayscale, and LCD renderers into a separate 1467 function. 1468 1469 * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): New function that 1470 calculates prospective bitmap metrics for the given rendering mode. 1471 * include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap): 1472 Declare it. 1473 1474 * src/base/ftlcdfil.c (ft_lcd_padding): New helper function that adds 1475 padding to CBox taking into account pecularities of LCD rendering. 1476 * include/freetype/ftlcdfil.h (ft_lcd_padding): Declare it. 1477 1478 * src/raster/ftrend1.c (ft_raster1_render): Reworked to use 1479 `ft_glyphslot_preset_bitmap'. 1480 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto. 1481 (ft_smooth_render_lcd, ft_smooth_render_lcd): The pixel_mode setting 1482 is moved to `ft_glyphslot_preset_bitmap'. 1483 14842017-09-28 Ewald Hew <ewaldhew@gmail.com> 1485 1486 [psaux] Fix compiler warning. 1487 1488 * src/psaux/pshints.c (cf2_hintmap_dump): Add switch for tracing 1489 code. 1490 14912017-09-27 Werner Lemberg <wl@gnu.org> 1492 1493 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning. 1494 14952017-09-25 Werner Lemberg <wl@gnu.org> 1496 1497 [psaux] Fix compiler warnings. 1498 1499 * src/psaux/psft.c (cf2_initLocalRegionBuffer): Remove redundant 1500 test. 1501 1502 * src/psaux/psintrp.c (cf2_interpT2CharString) 1503 <cf2_escCALLOTHERSUBR>: Add casts. 1504 1505 * src/psaux/psobjs.c (ps_decoder_init): Add cast. 1506 15072017-09-25 Ewald Hew <ewaldhew@gmail.com> 1508 1509 [psaux] Minor fixes. 1510 1511 * include/freetype/internal/psaux.h, src/psaux/psobjs.{c,h}: 1512 Rearrange `ps_builder_init' arguments to conventional order. 1513 1514 * src/psaux/psft.c (cf2_decoder_parse_charstrings): Add a check and 1515 notice for `SubFont' in Type 1 mode. 1516 15172017-09-25 Ewald Hew <ewaldhew@gmail.com> 1518 1519 [psaux] Move `psdecode' into `psobjs'. 1520 1521 As the former only contains a single procedure, move it into 1522 `psobjs' for simplicity. Also change the parameter order to the 1523 conventional one. 1524 1525 * src/psaux/psdecode.c (ps_decoder_init): Moved to... 1526 * src/psaux/psobjs.c: ...Here. 1527 * src/psaux/psdecode.h, src/psaux/psobjs.h: Ditto. 1528 1529 * include/freetype/internal/psaux.h (PSAux_ServiceRec): Update 1530 `ps_decoder_init' function signature. 1531 1532 * src/cff/cffgload.c, src/cid/cidgload.c, src/type1/t1gload.c: 1533 Update calls. 1534 1535 * src/psaux/psaux.c, src/psaux/psauxmod.c: Update includes. 1536 1537 * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRV_SRC): 1538 Update file references. 1539 15402017-09-25 Ewald Hew <ewaldhew@gmail.com> 1541 1542 [psaux] Fix Type 1 hinting. 1543 1544 Type 1 hinting breaks sometimes when mid-charstring hints should 1545 have been in the initial hintmap. This fix adds a preprocessing 1546 pass that reads all hints and builds the correct initial hintmap 1547 first, before proceeding to build the glyph outline. 1548 1549 * src/psaux/psintrp.c (cf2_interpT2CharString): New 1550 `initial_map_ready' boolean flag. 1551 Ignore outline commands and hint changes on first pass. 1552 <cf2_cmdENDCHAR>: Add section to build hintmap and rewind. 1553 15542017-09-25 Ewald Hew <ewaldhew@gmail.com> 1555 1556 [psaux] Add tracing for hints. 1557 1558 * src/psaux/pshints.c (cf2_hintmap_dump): New function. 1559 (cf2_hintmap_insertHint): Trace incoming and inserted hints. 1560 (cf2_hintmap_build): Dump hintmap before and after hint adjustment. 1561 15622017-09-25 Ewald Hew <ewaldhew@gmail.com> 1563 1564 [psaux] Minor fixes. 1565 1566 * src/psaux/psintrp.c (cf2_interpT2CharString): Fix check for pop 1567 results. 1568 s/font->decoder/decoder/ where necessary. 1569 <cf2_cmdHSTEM, cf2_cmdVSTEM, cf2_escHSTEM3, cf2_escVSTEM3>: Use 1570 offset parameter in `cf2_doStems' instead of doing correction for 1571 left-sidebearing. 1572 15732017-09-25 Ewald Hew <ewaldhew@gmail.com> 1574 1575 [cid] Use the new engine. 1576 1577 * src/cid/cidgload.c: Update includes. 1578 (cid_load_glyph, cid_slot_load_glyph): Implement changes to glyph 1579 loading code as with `type1' module. 1580 15812017-09-25 Ewald Hew <ewaldhew@gmail.com> 1582 1583 [cid] Add Adobe engine configuration. 1584 1585 This is similar to what was done in the `type1' module. 1586 1587 * src/cid/cidriver.c (t1cid_driver_class): Update declaration. 1588 * src/cid/cidobjs.c: Include FT_TYPE1_DRIVER_H. 1589 (cid_driver_init): Update code. 1590 15912017-09-25 Ewald Hew <ewaldhew@gmail.com> 1592 1593 [psaux] Change subfont synthesis for CID fonts. 1594 1595 Change `t1_make_subfont' to take in the Private dict record as an 1596 argument. This is because Type 1 and CID font records in FreeType 1597 have this in different places. 1598 1599 * src/psaux/psobjs.c (t1_make_subfont): Change `T1_Face' to 1600 `FT_Face' so that CID is also accepted. 1601 Take `PS_Private' as an argument and let caller figure out where the 1602 Private dict actually is. 1603 Update references. 1604 1605 * include/freetype/internal/psaux.h, src/psaux/psobjs.h: Update 1606 declaration. 1607 1608 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Update 1609 call. 1610 16112017-09-25 Ewald Hew <ewaldhew@gmail.com> 1612 1613 [type1] Switch to Adobe engine. 1614 1615 * src/type1/t1objs.c (T1_Driver_Init): Set default to Adobe engine. 1616 16172017-09-25 Ewald Hew <ewaldhew@gmail.com> 1618 1619 [psaux] Extend Adobe interpreter (seac). 1620 1621 This concludes the changes needed to add Type 1 support. 1622 1623 * src/psaux/psintrp.c: Update includes. 1624 (cf2_interpT2CharString) <cf2_escSEAC>: Implement this similarly to 1625 implied seac for CFF. 1626 1627 * src/psaux/t1decode.c (t1_lookup_glyph_by_stdcharcode_ps): New 1628 function to look up the glyph index. 1629 1630 * src/psaux/psft.c (cf2_getT1SeacComponent, 1631 cf2_freeT1SeacComponent): New functions to get the charstrings for 1632 seac components. 1633 1634 * src/psaux/t1decode.h, src/psaux/psft.h: Update declarations. 1635 16362017-09-25 Ewald Hew <ewaldhew@gmail.com> 1637 1638 [psaux] Extend Adobe interpreter (flex in callothersubr). 1639 1640 * src/psaux/psintrp.c (cf2_interpT2CharString) 1641 <cf2_escCALLOTHERSUBR>: Fix Flex feature handling (OtherSubrs 0, 1, 1642 2). 1643 <cf2_cmdRMOVETO>: Do not actually move the `glyphPath' while doing 1644 flex. This is to avoid closing the current contour. 1645 16462017-09-25 Ewald Hew <ewaldhew@gmail.com> 1647 1648 [psaux] Extend Adobe interpreter (callothersubr). 1649 1650 * src/psaux/psintrp.c (cf2_interpT2CharString) 1651 <cf2_escCALLOTHERSUBR>: Copy code from 1652 `t1_decoder_parse_charstrings' (in `t1decode.c'). 1653 OtherSubr 3 (change hints) should reset the hintmask, so that the 1654 new hints are applied. 1655 Fix function calls and stack access. 1656 16572017-09-25 Ewald Hew <ewaldhew@gmail.com> 1658 1659 [psaux] Extend Adobe interpreter (pop). 1660 1661 * src/psaux/psintrp.c (cf2_interpT2CharString): Change how unhandled 1662 OtherSubr results are stored. Implement the PostScript stack using 1663 an array. 1664 <cf2_escPOP>: Ensure that the stack is not cleared after getting 1665 `OtherSubr' results. 1666 Fix stack access. 1667 16682017-09-25 Ewald Hew <ewaldhew@gmail.com> 1669 1670 [psaux] Extend Adobe interpreter (callsubr). 1671 1672 * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>: 1673 Type 1 mode. 1674 1675 * src/psaux/psft.c (cf2_initLocalRegionBuffer): Add Type 1 mode. 1676 16772017-09-25 Ewald Hew <ewaldhew@gmail.com> 1678 1679 [psaux] Extend Adobe interpreter (div, four-byte numbers). 1680 1681 * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escDIV>: Add 1682 Type 1 mode. Type 1 requires large integers to be followed by 1683 `div'; cf. `Adobe Type 1 Font Format', section 6.2. 1684 <op == 255>: Push Type 1 four-byte numbers as `Int' always. This is 1685 to ensure `div' and `callsubr' get values they can use. 1686 16872017-09-25 Ewald Hew <ewaldhew@gmail.com> 1688 1689 [psaux] Extend Adobe interpreter (hints). 1690 1691 * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM, 1692 cf2_cmdVSTEM>: Add correction for left sidebearing in Type 1 mode. 1693 Allow adding hints mid-charstring. 1694 <cf2_escVSTEM3, cf2_escHSTEM3>: Translate into equivalent commands 1695 for three normal stem hints. This requires some recalculation of 1696 stem positions. 1697 Correction for left sidebearing. 1698 16992017-09-25 Ewald Hew <ewaldhew@gmail.com> 1700 1701 [psaux] Extend Adobe interpreter (hsbw, sbw). 1702 1703 * src/psaux/psintrp.c (cf2_doStems): `hsbw' or `sbw' must be the 1704 first operation in a Type 1 charstring. 1705 (cf2_interpT2CharString): Remove unused variables. 1706 <cf2_cmdHMOVETO, cf2_cmdVMOVETO, cf2_cmdRMOVETO>: `hsbw' or `sbw' 1707 must be the first operation in a Type 1 charstring. 1708 <cf2_cmdHSBW, cf2_escSBW>: Fix data access and add correction for 1709 left sidebearing. 1710 17112017-09-25 Ewald Hew <ewaldhew@gmail.com> 1712 1713 [psaux] Extend Adobe interpreter (setcurrentpoint). 1714 1715 * src/psaux/psintrp.c (cf2_interpT2CharString) 1716 <cf2_escSETCURRENTPT>: Fix stack access. 1717 17182017-09-25 Ewald Hew <ewaldhew@gmail.com> 1719 1720 [psaux] Extend Adobe interpreter (closepath). 1721 1722 * src/psaux/psintrp.c (cf2_interpT2CharString) <c2f_cmdCLOSEPATH>: 1723 Use the right builder function. We can use the `haveWidth' boolean 1724 already present, instead of implementing `parse_state'. 1725 17262017-09-25 Ewald Hew <ewaldhew@gmail.com> 1727 1728 [psaux] Add Type 1 operations to Adobe CFF interpreter. 1729 1730 The following Type 1 specific ops have been added (copied from 1731 `t1decode'): 1732 1733 closepath 1734 vstem3 1735 hstem3 1736 seac 1737 sbw 1738 callothersubr 1739 pop 1740 setcurrentpoint 1741 hsbw 1742 1743 The following require a Type 1 mode, because of differences in 1744 specification: 1745 1746 hstem 1747 vstem 1748 vmoveto 1749 callsubr 1750 div 1751 rmoveto 1752 hmoveto 1753 Numbers 1754 1755 The subsequent commits will implement these changes and adapt 1756 accesses of data and objects to the new interpreter. 1757 1758 NOTE: Will not compile in the meantime! 1759 1760 * src/psaux/psintrp.c: Add opcodes to enum. 1761 (cf2_interpT2CharString): Copy relevant code over from 1762 `t1_decoder_parse_charstrings' (in `t1decode.c'). 1763 17642017-09-25 Ewald Hew <ewaldhew@gmail.com> 1765 1766 [type1] Fixes for rendering. 1767 1768 The Type 1 advance width calculation passes null for glyph slot, 1769 etc, which can cause null pointer access in the new interpreter. 1770 Fall back to the old one for now. 1771 1772 Fix the large glyph retry code and ensure hinting and scaling flags 1773 are set properly. 1774 1775 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add a 1776 check for metrics_only. 1777 Set the `force_scaling' flag. 1778 (T1_Parse_Glyph): Updated. 1779 (T1_Load_Glyph): Add `hinting' and `scaled' flags. 1780 17812017-09-25 Ewald Hew <ewaldhew@gmail.com> 1782 1783 [psaux] Add missing objects (2/2). 1784 1785 Synthesize a `SubFont' object for Type 1 fonts. This is used in the 1786 interpreter to access Private dict data, which are stored in 1787 different places for Type 1 and CFF. This allows the same data to 1788 be used in either mode. 1789 1790 * src/psaux/psobjs.c (t1_make_subfont): New procedure to copy 1791 required values to a dummy `CFF_SubFont' object. This is similar to 1792 `cff_make_private_dict'. 1793 * src/psaux/psobjs.h: Add the new declaration. 1794 1795 * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Ditto. 1796 Add this to the PSAux Service for future use with CID fonts. 1797 1798 * src/type1/t1gload.c: Include FT_INTERNAL_CFF_TYPES_H. 1799 (T1_Parse_Glyph_And_Get_Char_String): Add the call. 1800 18012017-09-25 Ewald Hew <ewaldhew@gmail.com> 1802 1803 [psaux] Add missing objects for Type 1 (1/2). 1804 1805 Move `CF2_Font' instance to `PS_Decoder'. This is the context for 1806 the interpreter and since it is currently stored in `CFF_Font', is 1807 unavailable in Type 1 mode. 1808 1809 * include/freetype/internal/psaux.h (T1_Decoder, PS_Decoder): New 1810 `cf2_instance' field. 1811 1812 * src/psaux/psdecode.c (ps_decoder_init): Copy `cf2_instance' to 1813 `PS_Decoder'. 1814 1815 * src/psaux/t1decode.c (t1_decoder_done): Add finalization code. 1816 1817 * src/psaux/psft.c (cf2_decoder_parse_charstrings): Update accesses. 1818 18192017-09-25 Ewald Hew <ewaldhew@gmail.com> 1820 1821 Allow `type1' module to use the Adobe engine. 1822 1823 Add the callback and some conditionals to switch between the two 1824 engines. 1825 1826 * include/freetype/internal/psaux.h (T1_Decoder_FuncsRec): Change 1827 function declarations. 1828 * src/psaux/psauxmod.c (T1_Decoder_FuncsRec): Register the 1829 callbacks. 1830 1831 * src/psaux/psobjs.c (ps_builder_add_point): Add conditionals for 1832 number conversion. 1833 1834 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add code 1835 to choose which renderer to use. 1836 1837 * src/cid/cidgload.c (cid_load_glyph): Update call. 1838 * src/base/ftobjs.c, src/psaux/psobjs.c, src/type1/t1gload.c: Update 1839 includes. 1840 18412017-09-25 Ewald Hew <ewaldhew@gmail.com> 1842 1843 [type1] Add Adobe engine configuration. 1844 1845 Use the previously changed PS_Driver in type1 module to store 1846 hinting engine configuration. 1847 1848 * include/freetype/ftt1drv.h: New file. 1849 Duplicate and rename config options from CFF. 1850 * include/freetype/config/ftheader.h (FT_TYPE1_DRIVER_H): New macro. 1851 1852 * src/type1/t1driver.c (t1_driver_class): Update declaration. 1853 * src/type1/t1objs.c: Include FT_TYPE1_DRIVER_H. 1854 (T1_Driver_Init): Update code. 1855 18562017-09-25 Ewald Hew <ewaldhew@gmail.com> 1857 1858 [cff] Move and rename `CFF_Driver'. 1859 1860 This is so that we can use the same hinting engine parameters for 1861 Type 1. 1862 1863 * include/freetype/internal/cffotypes.h (CFF_Driver): Rename and 1864 move to... 1865 * include/freetype/internal/psaux.h (PS_Driver): ...here. 1866 1867 * src/cff/cffdrivr.c, src/cff/cffgload.c, src/cff/cffload.c, 1868 src/cff/cffobjs.c, src/cff/cffobjs.h, src/psaux/psft.c, 1869 src/psaux/psobjs.c: Update references. 1870 18712017-09-25 Ewald Hew <ewaldhew@gmail.com> 1872 1873 [psaux, type1] Reorganize object fields. 1874 1875 Make some fields more generic, so that we can access them the same 1876 way regardless of Type 1 or CFF. 1877 1878 * include/freetype/internal/psaux.h (PS_Builder): Change `TT_Face' 1879 to `FT_Face'. 1880 Remove unused fields. 1881 1882 * src/psaux/psft.c: Update all accesses of `PS_Builder.face'. 1883 Add some asserts to guard against casting `T1_Face' as `TT_Face'. 1884 1885 * src/type1/t1objs.h (T1_GlyphSlot): Reorder fields to follow 1886 `CFF_GlyphSlot', so that we can pretend they are the same in the 1887 interpreter. 1888 1889 * src/psaux/psobjs.c (ps_builder_init, ps_builder_add_point): 1890 Updated with above changes. 1891 18922017-09-25 Ewald Hew <ewaldhew@gmail.com> 1893 1894 [psaux] Prepare for Type 1 mode. 1895 1896 Add some checks for Type 1 data passing through. 1897 1898 * src/psaux/psfont.h (CF2_Font): Add `isT1' flag. 1899 * src/psaux/psfont.c (cf2_font_setup): Skip the variations and blend 1900 code which is not applicable for Type 1. 1901 1902 * src/psaux/psft.c (cf2_decoder_parse_charstrings): Avoid accessing 1903 `decoder->cff' in Type 1 mode. 1904 Copy `is_t1' flag to `CF2_Font'. 1905 19062017-09-25 Ewald Hew <ewaldhew@gmail.com> 1907 1908 [psaux, cff] Use the new objects. 1909 1910 * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Fix 1911 switching between new and old engines. 1912 1913 * src/cff/cffgload.c, src/cff/cffparse.c: Update calls. 1914 1915 * src/psaux/psblues.c, src/psaux/psfont.c, src/psaux/psfont.h, 1916 src/psaux/psft.c, src/psaux/psft.h, src/psaux/psintrp.c: Update all 1917 to use new objects. 1918 19192017-09-24 Ewald Hew <ewaldhew@gmail.com> 1920 1921 [psaux] Objects for new interpreter (part 2). 1922 1923 Make the new objects copy over values. They are essentially wrapper 1924 types for the different decoders/builders. 1925 1926 * include/freetype/internal/psaux.h: Update declarations. 1927 (PS_Builder): Add `is_t1' flag. 1928 (PS_Decoder_{Get,Free}_Glyph_Callback): Renamed to... 1929 (CFF_Decoder_{Get,Free}_Glyph_Callback: ... this. 1930 (PS_Decoder): Updated. 1931 Add `t1_parse_callback' member. 1932 (PSAux_ServiceRec): Add `ps_decoder_init' member. 1933 1934 * src/psaux/psdecode.h, src/psaux/psobjs.h: Update declarations. 1935 1936 * src/psaux/psdecode.c, src/psaux/psobjs.c: Implement copy with two 1937 modes. 1938 1939 * src/psaux/psauxmod.c: Add builder and decoder functions to `PSAux' 1940 service. 1941 19422017-09-24 Ewald Hew <ewaldhew@gmail.com> 1943 1944 [psaux] Add objects for new interpreter. 1945 1946 Introduce `PS_Decoder' and `PS_Builder' which include all fields 1947 from either Type 1 or CFF decoders/builders. 1948 1949 * include/freetype/internal/psaux.h (PS_Builder, PS_Decoder): New 1950 structs. 1951 1952 * src/psaux/psobjs.c, src/psaux/psobjs.h: Add `PS_Builder' 1953 functions. 1954 1955 * src/psaux/psdecode.c, src/psaux/psdecode.h: New files to hold 1956 `PS_Decoder' initialization functions. 1957 1958 * src/psaux/psaux.c, src/psaux/Jamfile (_sources), 1959 src/psaux/rules.mk (PSAUX_DRV_SRC): Updated. 1960 19612017-09-24 Ewald Hew <ewaldhew@gmail.com> 1962 1963 [psaux] Rename files. 1964 1965 Replace the `cf2' file name prefix with `ps' as the Adobe engine 1966 will be used for both PostScript Types 1 and 2 (CFF) instead of just 1967 CFF. 1968 1969 s/cf2/ps/ for all following. 1970 1971 * src/psaux/cf2*: Rename files. 1972 * src/psaux/*: Update includes. 1973 1974 * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRC_SRC, 1975 PSAUX_DRV_H): Update file references. 1976 19772017-09-24 Ewald Hew <ewaldhew@gmail.com> 1978 1979 [psaux] Minor fix. 1980 1981 Use `MultiMasters' service in `psaux' instead of a call to `cff'. 1982 The project builds if CFF_CONFIG_OPTION_OLD_ENGINE is not defined. 1983 1984 * src/psaux/cf2ft.c: Update includes. 1985 (cf2_getNormalizedVector): Use `mm->get_var_blend' instead of 1986 `cff_get_var_blend'. 1987 19882017-09-24 Ewald Hew <ewaldhew@gmail.com> 1989 1990 [psaux, cff] Move `cff_random' into `psaux' service. 1991 1992 NOTE: Does not compile! 1993 1994 Minor fix to allow both `cff' and `psaux' to use `cff_random'. 1995 1996 * src/cff/cffload.c (cff_random): Move to... 1997 * src/psaux/psobjs.c: Here. 1998 * src/cff/cffload.h: Move corresponding declaration to 1999 `src/psaux/psobjs.h'. 2000 2001 * include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the 2002 function here... 2003 * src/psaux/psauxmod.c: And here. 2004 2005 * src/cff/cffload.c, src/psaux/cf2intrp.c: Update code. 2006 20072017-09-24 Ewald Hew <ewaldhew@gmail.com> 2008 2009 [cff] Move struct declarations to `freetype/internal'. 2010 2011 NOTE: Does not compile! 2012 2013 This is so that the CFF functions moved to `psaux' can access the 2014 same structs that they need. 2015 2016 * src/cff/cfftypes.h: Moved to... 2017 * include/freetype/internal/cfftypes.h: ...Here. 2018 2019 * src/cff/cffobjs.h: Moved the struct declarations to... 2020 * include/freetype/internal/cffotypes.h: ... this new file. 2021 2022 * include/freetype/internal/internal.h (FT_INTERNAL_CFF_TYPES_H, 2023 FT_INTERNAL_CFF_OBJECT_TYPES_H): New macros. 2024 2025 * src/cff/cffcmap.h, src/cff/cffdrivr.c, src/cff/cffgload.c, 2026 src/cff/cffgload.h, src/cff/cffload.h, src/cff/cffobjs.c, 2027 src/cff/cffobjs.h, src/cff/cffparse.h, src/psaux/psobjs.h, 2028 include/freetype/internal/psaux.h, 2029 include/freetype/internal/services/svcfftl.h: Update includes. 2030 2031 * src/cff/rules.mk (CFF_DRV_H): Updated. 2032 20332017-09-24 Ewald Hew <ewaldhew@gmail.com> 2034 2035 [psaux, cff] Add new service for inter-module calls. 2036 2037 NOTE: Does not compile! 2038 2039 This is to allow CFF functions moved to `psaux' to call functions 2040 declared in `src/cff/cffload.h'. 2041 2042 * include/freetype/internal/services/svcfftl.h: New file, setting up 2043 a `CFFLoad' service. 2044 2045 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC10, 2046 FT_DEFINE_SERVICEDESCREC): New macros. 2047 (FT_SERVICE_CFF_TABLE_LOAD_H): New macro. 2048 2049 * src/cff/cffdrivr.c, src/cff/cffpic.h: Register the new service. 2050 2051 * src/cff/cfftypes.h (CFF_FontRec), src/psaux/cf2font.h 2052 (CF2_FontRec): Add service interface. 2053 2054 * src/cff/cffobjs.c, src/psaux/cf2font.c, src/psaux/cf2ft.c, 2055 src/psaux/cf2intrp.c, src/psaux/cffdecode.c: Use the new service. 2056 20572017-09-24 Ewald Hew <ewaldhew@gmail.com> 2058 2059 [psaux, cff] Add callbacks for inter-module calls. 2060 2061 NOTE: Does not compile! 2062 2063 * include/freetype/internal/psaux.h: Add function pointer 2064 declarations. 2065 2066 * src/psaux/cffdecode.c (cff_decoder_init): Update to take in 2067 callbacks. 2068 * src/psaux/cffdecode.h: Ditto. 2069 2070 * src/cff/cffgload.c (cff_compute_max_advance, cff_slot_load): 2071 Update calls to pass in callbacks. 2072 * src/psaux/cf2ft.c, src/psaux/cffdecode.c: Use them. 2073 20742017-09-24 Ewald Hew <ewaldhew@gmail.com> 2075 2076 [psaux, cff] Create new `PSAux' service interface entries. 2077 2078 NOTE: Does not compile! 2079 2080 * include/freetype/internal/psaux.h: Include 2081 FT_INTERNAL_TRUETYPE_TYPES_H. 2082 (CFF_Builder_FuncsRec, CFF_Decocer_FuncsRec): New function tables. 2083 (CFF_Builder): Updated. 2084 Fix for forward declaration. 2085 (PSAux_ServiceRec): New field `cff_decoder_funcs'. 2086 2087 * src/psaux/psauxmod.c (cff_builder_funcs, cff_decoder_funcs): New 2088 function tables. 2089 (PSAux_Interface): Updated. 2090 2091 * include/freetype/internal/tttypes.h (TT_FaceRec): Add `psaux' 2092 service interface. 2093 2094 * src/cff/cffgload.c, src/cff/cffobjs.c, src/cff/cffparse.c: Update 2095 function calls to use psaux service. 2096 20972017-09-24 Ewald Hew <ewaldhew@gmail.com> 2098 2099 [psaux, cff] Move CFF builder components into `psaux' module. 2100 2101 NOTE: Does not compile! 2102 2103 * src/cff/cffgload.c 2104 (cff_builder_{init,done,add_point,add_point1,add_contour,start_point,close_contour}, 2105 cff_check_points): Move to... 2106 * src/psaux/psobjs.c: Here. 2107 2108 * src/cff/cffgload.h: Move corresponding declarations to 2109 `src/psaux/psobjs.h'. 2110 2111 * src/cff/cffgload.h (CFF_Builder): Move struct declaration to... 2112 * include/freetype/internal/psaux.h: Here. 2113 21142017-09-24 Ewald Hew <ewaldhew@gmail.com> 2115 2116 [psaux, cff] Move CFF decoder components into `psaux' module. 2117 2118 NOTE: Does not compile! 2119 2120 * src/cff/cffgload.c (CFF_Operator, 2121 CFF_COUNT_{CHECK_WIDTH,EXACT,CLEAR_STACK}, cff_argument_counts, 2122 cff_operator_seac, cff_compute_bias, 2123 cff_lookup_glyph_by_stdcharcode, 2124 cff_decoder_{parse_charstrings,init,prepare}): Move to... 2125 * src/psaux/cffdecode.c: This new file. 2126 2127 * src/cff/cffgload.h: Move corresponding declarations to... 2128 * src/psaux/cffdecode.h: This new file. 2129 2130 * src/cff/cffgload.h (CFF_MAX_{OPERANDS,SUBRS_CALLS,TRANS_ELEMENTS}, 2131 CFF_Decoder_Zone, CFF_Decoder): Move declarations to... 2132 * include/freetype/internal/psaux.h: Here. 2133 2134 * src/psaux/cf2ft.h: Update include. 2135 2136 * src/psaux/psaux.c, src/psaux/rules.mk (PSAUX_DRV_SRC): Update with 2137 the new file. 2138 21392017-09-24 Ewald Hew <ewaldhew@gmail.com> 2140 2141 [psaux, cff] Move Adobe's engine components into `psaux' module. 2142 2143 This is the first patch of a sequence to move the Type 2 charstring 2144 processing capability from the `cff' module to the `psaux' module. 2145 2146 NOTE: Does not compile! 2147 2148 * src/cff/cf2*: Move these files to... 2149 * src/psaux/cf2*: Here. 2150 2151 * src/cff/Jamfile (_sources), src/cff/rules.mk (CFF_DRV_SRC, 2152 CFF_DRV_H), src/cff/cff.c, src/cff/cffgload.c: Remove file 2153 references. 2154 2155 * src/psaux/Jamfile (_sources), src/psaux/rules.mk, src/psaux/psaux.c 2156 (PSAUX_DRV_SRC, PSAUX_DRV_H): Add file references. 2157 21582017-09-24 Alexei Podtelezhnikov <apodtele@gmail.com> 2159 2160 Tweak per-face LCD filtering controls. 2161 2162 Thing are simpler with a NULL-function pointer. 2163 2164 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New 2165 pointer to the filter function. 2166 (FT_LibraryRec): Remove unused `lcd_filter'. 2167 (FT_Bitmap_LcdFilterFunc, ft_lcd_filter_fir): Move from here... 2168 * include/freetype/ftlcdfil.h (FT_Bitmap_LcdFilterFunc, 2169 ft_lcd_filter_fir): ... to here. 2170 2171 * src/base/ftobjs.c (ft_open_face_internal): NULL-initialize the 2172 per-face filter. 2173 (FT_Face_Properties): Set it. 2174 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Simplify. 2175 2176 * src/base/ftlcdfil.c (ft_lcd_filter_fir, FT_Libary_SetLcdFilter): 2177 Minor. 2178 21792017-09-24 Jonathan Kew <jfkthame@gmail.com> 2180 2181 [sfnt] Fix `premultiply_data' (#52092). 2182 2183 * src/sfnt/pngshim.c (premultiply_data): Don't use vector extension 2184 if we have less than 16 bytes of data. 2185 21862017-09-24 Werner Lemberg <wl@gnu.org> 2187 2188 [otvalid] Fix handling of ValueRecords. 2189 2190 For GPOS pair positioning format 1 the description of ValueRecords 2191 in the OpenType specification (1.8.2, from today) is wrong – the 2192 offset has to be taken from the parent structure; in this case the 2193 `PairSet' table. 2194 2195 * src/otvalid/otvgpos.c (otv_PairSet_validate): Set `extra3'. 2196 (otv_PairPos_validate): Adjust. 2197 21982017-09-23 Werner Lemberg <wl@gnu.org> 2199 2200 [otvalid] Handle `GSUB' and `GPOS' v1.1 tables. 2201 2202 * src/otvalid/otvgsub.c (otv_GSUB_validate), src/otvalid/otvgpos.c 2203 (otv_GPOS_validate): Implement it. 2204 22052017-09-23 Werner Lemberg <wl@gnu.org> 2206 2207 [otvalid] Update common table handling to OpenType 1.8.2. 2208 2209 * src/otvalid/otvcommn.c (otv_Device_validate): Handle 2210 VariationIndex subtable. 2211 (otv_Lookup_validate): Handle MarkFilteringSet. 2212 22132017-09-23 Alexei Podtelezhnikov <apodtele@gmail.com> 2214 2215 [build] Windows-style DLL versioning. 2216 2217 * build/windows/ftver.rc: New VERSIONINFO resource. 2218 * build/windows/vc2010/freetype.vcxproj: Further improvements. 2219 22202017-09-23 Ben Wagner <bungeman@google.com> 2221 2222 [truetype] Really fix #52082. 2223 2224 * src/truetype/ttinterp.c (Ins_MDRP): Correct conditional. 2225 22262017-09-23 Werner Lemberg <wl@gnu.org> 2227 2228 [otvalid] Handle `GDEF' v1.2 and v1.3 tables. 2229 2230 No validation of variation stuff yet. 2231 2232 * src/otvalid/otvgdef.c (otv_MarkGlyphSets_validate): New function. 2233 (otv_GDEF_validate): Implement it. 2234 22352017-09-22 Werner Lemberg <wl@gnu.org> 2236 2237 [otvalid] Handle `BASE' v1.1 table. 2238 2239 No validation of variation stuff yet. 2240 2241 * src/otvalid/otvbase.c (otv_BASE_validate): Implement it. 2242 22432017-09-22 Werner Lemberg <wl@gnu.org> 2244 2245 [otvalid] Macros for 32bit offset support. 2246 2247 * src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE32, 2248 OTV_OPTIONAL_OFFSET32, OTV_SIZE_CHECK32): New macros. 2249 22502017-09-21 Alexei Podtelezhnikov <apodtele@gmail.com> 2251 2252 [build] Simplify Visual C++ 2010 project. 2253 2254 * build/windows/vc2010/freetype.vcxproj: Remove fake singlethreaded 2255 configurations and tweak. 2256 22572017-09-21 Werner Lemberg <wl@gnu.org> 2258 2259 [truetype] Integer overflow (#52082). 2260 2261 * src/truetype/ttinterp.c (Ins_MDRP): Avoid FT_ABS. 2262 22632017-09-21 Werner Lemberg <wl@gnu.org> 2264 2265 [sfnt] Fix postscript name for default instance of variation fonts. 2266 2267 Problem reported by Behdad. 2268 2269 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Test 2270 `is_default_instance'. 2271 22722017-09-21 Werner Lemberg <wl@gnu.org> 2273 2274 [truetype] Fix `mmvar' array pointers, part 2. 2275 2276 The previous commit was incomplete. 2277 2278 * src/truetype/ttgxvar.c: Properly initialize sub-array offsets for 2279 `master' also. 2280 22812017-09-21 Werner Lemberg <wl@gnu.org> 2282 2283 [truetype] Fix `mmvar' array pointers. 2284 2285 Without this change, clang's AddressSanitizer reports many runtime 2286 errors due to misaligned addresses. 2287 2288 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use multiples of pointer 2289 size for sub-array offsets into `mmvar'. 2290 22912017-09-20 Werner Lemberg <wl@gnu.org> 2292 2293 [truetype] Integer overflows. 2294 2295 Changes triggered by 2296 2297 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3429 2298 2299 * src/truetype/ttinterp.c (Ins_SHPIX, Ins_DELTAP): Use NEG_LONG. 2300 (Ins_MIAP): Use SUB_LONG. 2301 23022017-09-19 Alexei Podtelezhnikov <apodtele@gmail.com> 2303 2304 [build] Fix DLL builds in Visual C++ project. 2305 2306 * build/windows/vc2010/freetype.vcxproj: Use DynamicLibrary in Debug 2307 and Release configurations. 2308 * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF) 2309 [_DLL]: Use Visual C++ extensions. 2310 23112017-09-19 John Tytgat <John.Tytgat@esko.com> 2312 2313 [cff] Fix family name logic of pure CFF fontdata (#52056). 2314 2315 1. If `FamilyName' is present in the CFF font, use this for 2316 FT_Face's `family_name'. 2317 2. Otherwise, use the face name and chop off any subset prefix. 2318 3. If at this point FT_Face's `family_name' is set, use this 2319 together with the full name to determine the style. 2320 4. Otherwise, use `CIDFontName' as FT_Face's `family_name'. 2321 5. If we don't have a valid style, use "Regular". 2322 2323 Previously, FT_Face's `family_name' entry for pure CFF fontdata 2324 nearly always was the fontname itself, instead of the `FamilyName' 2325 entry in the CFF font (assuming there is one). 2326 2327 * src/cff/cffobjs.c (cff_face_init) [pure_cff]: Implement it. 2328 23292017-09-18 Alexei Podtelezhnikov <apodtele@gmail.com> 2330 2331 [build] Declutter Visual C++ 2010-2017 project. 2332 2333 * build/windows/vc2010/freetype.vcxproj: Use MaxSpeed (/02) 2334 optimization for Release configuration throughout the project. 2335 2336 2337---------------------------------------------------------------------------- 2338 2339Copyright (C) 2017-2020 by 2340David Turner, Robert Wilhelm, and Werner Lemberg. 2341 2342This file is part of the FreeType project, and may only be used, modified, 2343and distributed under the terms of the FreeType project license, 2344LICENSE.TXT. By continuing to use, modify, or distribute this file you 2345indicate that you have read the license and understand and accept it 2346fully. 2347 2348 2349Local Variables: 2350version-control: never 2351coding: utf-8 2352End: 2353