12017-09-16 Werner Lemberg <wl@gnu.org> 2 3 * Version 2.8.1 released. 4 ========================= 5 6 7 Tag sources with `VER-2-8-1'. 8 9 * docs/VERSION.TXT: Add entry for version 2.8.1. 10 * docs/CHANGES: Updated. 11 12 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, 13 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.8/2.8.1/, s/28/281/. 28 29 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. 30 31 * builds/unix/configure.raw (version_info): Set to 21:0:15. 32 * CMakeLists.txt (VERSION_PATCH): Set to 1. 33 342017-09-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 35 36 [sfnt] lowest gcc for vectors (e1d0249e) is changed to 4.7. 37 38 __builtin_shuffle() was introduced in gcc-4.7. The lowest 39 gcc to enable vector operation is delayed from 4.6 to 4.7. 40 41 * src/sfnt/pngshim.c (premultiply_data): Fix cpp-macro to 42 enable the vector operation, to change the lowest gcc version 43 from 4.6 to 4.7. 44 452017-09-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 46 47 [cache] Fix a possible overflow by signed integer comparison. 48 49 Improve the code by 5d3ff05615dda6d1325ed612381a17a0df04c975 , 50 issues are found by Behdad Esfahbod and Werner Lemberg. 51 52 * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Replace 53 a subtraction to check higher bit by a bit operation, 54 and cpp-conditionalize for appropriate systems. Add better 55 documentation to the comment. 56 (FTC_ImageCache_LookupScaler): Ditto. 57 (FTC_SBitCache_Lookup): Ditto. 58 (FTC_SBitCache_LookupScaler): Ditto. 59 602017-09-13 Werner Lemberg <wl@gnu.org> 61 62 [autofit] Really fix #41334 (#52000). 63 64 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Set 65 `segment->delta' everywhere. 66 672017-09-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 68 69 [autofit, sfnt] Fix for `make multi'. 70 71 * src/autofit/afshaper.c: Include FT_ADVANCE_H, to use 72 FT_Get_Advance() in it. 73 * src/sfnt/ttcmap.c: Include FT_SERVICE_POSTSCRIPT_CMAPS_H 74 to use PS_Unicodes in it, also include `ttpost.h' to use 75 tt_face_get_ps_name() in it. 76 772017-09-11 Azzuro <azzuro@team-mediaportal.com> 78 79 [build] Improve builds with different MS Visual Studio versions. 80 81 * builds/windows/vc2010/freetype.vcxproj: Switch platform toolset 82 according to the Visual Studio version. 83 842017-09-11 Werner Lemberg <wl@gnu.org> 85 86 * src/sfnt/ttkern.c (tt_face_load_kern): Reject format 2 tables. 87 88 Reported by Behdad. 89 902017-09-09 Werner Lemberg <wl@gnu.org> 91 92 [autofit] Improve communication with ftgrid. 93 94 * src/autofit/afhints.c (af_glyph_hints_get_segment_offset): 95 Provide values in font units. 96 972017-09-08 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 98 99 [base] Remove a check for resource ID in the resource fork driver. 100 101 LastResort.dfont has a marginal resource ID 0xFFFF for sfnt 102 resource. Inside Macintosh: More Macintosh Toolbox, `Resource IDs' 103 (1-46), tells that some IDs are reserved and should not be used. 104 FreeType2 just uses resource ID to sort the fragmented resource. 105 To accept the marginal fonts, the checking is removed. 106 107 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove res_id 108 validity check, fix a trace message format. 109 1102017-09-08 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> 111 112 [sfnt, truetype] Register the tags for marginal fonts. 113 114 The first 32bit of standard TrueType variants is 0x00010000, 115 `OTTO', `ttcf', `true' or `typ1'. 2 marginal dfonts on legacy Mac 116 OS X, Keyboard.dfont and LastResort.dfont, have the sfnt resources 117 starting 0xA5 followed by `kbd' or `lst'. Considering the following 118 data could be parsed as conventional TrueType fonts, the header 119 checking is updated to allow these tags. It seems that recent Mac 120 OS X has already switched to normal TTF for these fonts. 121 122 See the discussion at 123 http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3931.0 124 125 * include/freetype/tttags.h (TTAG_0xA5kbd, TTAG_0xA5lst): New header 126 tags for Keyboard.dfont and LastResort.dfont. 127 * src/sfnt/sfobjs.c (sfnt_open_font): Accept the sfnt resource 128 starts with TTAG_0xA5kbd or TTAG_0xA5lst. 129 * src/truetype/ttobjs.c (tt_face_init): Accept the face with the 130 format tag is TTAG_0xA5kbd or TTAG_0xA5lst. 131 1322017-09-05 Werner Lemberg <wl@gnu.org> 133 134 Fix multiple calls of `FT_Bitmap_Convert'. 135 136 The documentation of `FT_Bitmap_Convert' says that multiple calls do 137 proper reallocation of the target FT_Bitmap object. However, this 138 failed for the sequence 139 140 non-empty bitmap 141 empty bitmap 142 non-empty bitmap 143 144 Reason was that `FT_Bitmap_Convert' only reallocated the bitmap 145 buffer if it became too small; it didn't make the buffer smaller. 146 For an empty bitmap following a non-empty one, only the buffer 147 dimension got set to zero, without deallocation. If the next call 148 was a non-empty buffer again, an assertion in `ft_mem_qrealloc' was 149 triggered. 150 151 * src/base/ftbitmap.c (FT_Bitmap_Convert): Always reallocate target 152 buffer to the correct size. 153 154 * docs/CHANGES: Document it. 155 1562017-09-05 Werner Lemberg <wl@gnu.org> 157 158 [bdf] Fix size and resolution handling. 159 160 * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `SIZE' values if 161 `POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties are 162 missing. 163 164 * docs/CHANGES: Document it. 165 1662017-08-25 Alexei Podtelezhnikov <apodtele@gmail.com> 167 168 Swap `ALLOC_MULT' arguments (#51833). 169 170 * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Updated. 171 * src/winfonts/winfnt.c (FNT_Load_Glyph): Updated. 172 * src/raster/ftrend1.c (ft_raster1_render): Updated. 173 1742017-08-23 Werner Lemberg <wl@gnu.org> 175 176 [sfnt] Fix clang compilation (#51788). 177 178 * src/sfnt/pngshim.c (premultiply_data): Use vectors instead of 179 scalars. 180 (vector_shuffle): New macro to take care of a different built-in 181 function name on clang. 182 1832017-08-22 Werner Lemberg <wl@gnu.org> 184 185 [base] Don't zero out allocated memory twice (#51816). 186 187 Patch applied from bug report. 188 189 * src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to 190 avoid unnecessary overhead. 191 1922017-08-22 Werner Lemberg <wl@gnu.org> 193 194 [truetype] Integer overflow. 195 196 Changes triggered by 197 198 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3107 199 200 * src/truetype/ttinterp.c (Ins_MDRP, Ins_MIRP, Ins_ALIGNPTS): Use 201 NEG_LONG. 202 2032017-08-17 Alexei Podtelezhnikov <apodtele@gmail.com> 204 205 [sfnt] Avoid synthetic unicode for symbol fonts with PUA. 206 207 Reported as 208 209 https://bugs.chromium.org/p/chromium/issues/detail?id=754574 210 211 * src/sfnt/sfobjs.c (sfnt_load_face): Check for FT_ENCODING_MS_SYMBOL. 212 2132017-08-16 Werner Lemberg <wl@gnu.org> 214 215 * src/sfnt/pngshim.c (premultiply_data): Fix compiler warnings. 216 2172017-08-15 Behdad Esfahbod <behdad@behdad.org> 218 219 [sfnt] Speed up PNG image loading. 220 221 This reduces the overhead of `premultiply_data' by 60%. 222 223 * src/sfnt/pngshim.c (premultiply_data): Provide code which uses 224 gcc's (and clang's) `vector_byte' attribute to process 4 pixels at a 225 time. 226 2272017-08-11 Werner Lemberg <wl@gnu.org> 228 229 [sfnt, truetype] Improve handling of missing sbits. 230 231 Requested by Behdad. 232 233 Modern bitmap-only SFNTs like `NotoColorEmoji.ttf' don't contain 234 entries in the bitmap strike(s) for empty glyphs. Instead, they 235 rely that a space glyph gets created from the font's metrics data. 236 This commit makes FreeType behave accordingly. 237 238 * include/freetype/fterrdef.h (FT_Err_Missing_Bitmap): New error 239 code. 240 241 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_image): Change error codes 242 to make a distinction between a missing bitmap in a composite and a 243 simple missing bitmap. 244 245 * src/truetype/ttgload.c (TT_Load_Glyph): For a missing bitmap (in a 246 bitmap-only font), synthesize an empty bitmap glyph if metrics are 247 available. 248 2492017-08-10 Werner Lemberg <wl@gnu.org> 250 251 [base] Minor API improvement for default variation axis setting. 252 253 * src/base/ftmm.c (FT_Set_MM_Design_Coordinates, 254 FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates, 255 FT_Set_Var_Blend_Coordinates): Allow coords==NULL if num_coords==0. 256 257 * docs/CHANGES: Updated. 258 2592017-08-08 Werner Lemberg <wl@gnu.org> 260 261 [psnames] Really fix issue #49949. 262 263 We now use a separate preprocessor macro to handle both definition 264 and declaration of the glyph name arrays. 265 266 * src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro. 267 268 * src/tools/glnames.py (StringTable::dump, 269 StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'. 270 (dump_encoding): Ditto. 271 (main): Use `wb' mode for writing the output file, which works on 272 Windows also. 273 274 * src/psnames/pstables.h: Regenerated. 275 2762017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com> 277 278 [smooth] Harmony LCD rendering. 279 280 This is a new technology for LCD-optimized rendering. It capitalizes 281 on the fact that each color channel grid is shifted by a third of a 282 pixel. Therefore it is logical to render 3 separate monochrome 283 bitmaps shifting the outline by 1/3 pixel, and then combine them. 284 Importantly, the resulting output does not require additional LCD 285 filtering. 286 287 * src/smooth/ftsmooth.c (ft_smooth_render_generic) 288 [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Implement new LCD-optimized 289 rendering. 290 291 * include/freetype/ftlcdfil.h, include/freetype/freetype.h, 292 include/freetype/config/ftoption.h, devel/ftoption.h: Updated 293 documentation. 294 2952017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com> 296 297 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Clean up. 298 2992017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com> 300 301 * src/sfnt/ttpost.c (format): Use otspec-compliant versions. 302 3032017-08-05 Werner Lemberg <wl@gnu.org> 304 305 [truetype] Integer overflow. 306 307 Reported as 308 309 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2868 310 311 * src/truetype/ttinterp.c (Ins_ALIGNRP): Use NEG_LONG. 312 3132017-08-05 Werner Lemberg <wl@gnu.org> 314 315 [base, truetype] New function `FT_Get_Var_Axis_Flags'. 316 317 The reserved `flags' field got a value in OpenType version 1.8.2; 318 unfortunately, the public `FT_Var_Axis' structure misses the 319 corresponding element. Since we can't add a new field, we add an 320 access function. 321 322 * src/base/ftmm.c (FT_Get_Var_Axis_Flags): New function. 323 324 * include/freetype/ftmm.h (FT_VAR_AXIS_FLAG_HIDDEN): New macro. 325 Updated. 326 327 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Increase allocated memory 328 of `mmvar' to hold axis flags. 329 Fill the axis flags array. 330 331 * docs/CHANGES: Updated. 332 3332017-08-03 Nikolaus Waxweiler <madigens@gmail.com> 334 335 [truetype] Fix metrics of B/W hinting in v40 mode. 336 337 Phantom points are now saved outside v40 backwards compatibility 338 mode. This fixes the jumping glyphs when switching between v35 and 339 v40 monochrome mode. 340 341 * src/truetype/ttgload.c (TT_Hint_Glyph): Fix inversed bool logic. 342 3432017-08-03 Nikolaus Waxweiler <madigens@gmail.com> 344 345 [truetype] Do not set any ClearType flags in v40 monochrome mode. 346 347 This fixes weird behavior of instructions that resulted in rendering 348 differences between v35 and v40 in monochrome mode, e.g., in 349 `timesbi.ttf'. 350 351 * src/truetype/ttinterp.c (Ins_GETINFO) 352 [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Check 353 `subpixel_hinting_lean'. 354 3552017-08-01 Werner Lemberg <wl@gnu.org> 356 357 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix thinko. 358 3592017-08-01 Behdad Esfahbod <behdad@behdad.org> 360 361 [truetype] Fix loading of named instances. 362 363 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Preserve file position 364 while loading the `avar' table. 365 3662017-08-01 Werner Lemberg <wl@gnu.org> 367 368 [sfnt, truetype] Minor adjustments for OpenType 1.8.2. 369 370 * src/sfnt/sfobjs.c (sfnt_load_face): The units per EM value has now 371 (tighter) limits. 372 373 * src/truetype/ttgload.c (load_truetype_glyph): The new OpenType 374 version explicitly allows all negative values for the number of 375 contours if we have a composite glyph (this is for better backwards 376 compatibility I guess), but it still recommends value -1. 377 3782017-07-26 Werner Lemberg <wl@gnu.org> 379 380 [cff] Integer overflow. 381 382 Reported as 383 384 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2738 385 386 * src/cff/cf2hints.c (cf2_glyphpath_computeOffset, 387 cf2_glyphpath_curveTo): Use ADD_INT32. 388 3892017-07-13 Werner Lemberg <wl@gnu.org> 390 391 [base] Fix memory leak. 392 393 Reported as 394 395 https://bugs.chromium.org/p/chromium/issues/detail?id=738362 396 397 * src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case 398 of error. 399 4002017-07-12 Werner Lemberg <wl@gnu.org> 401 402 [base] Integer overflow. 403 404 Reported as 405 406 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2573 407 408 * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use 409 FT_PIX_CEIL_LONG and FT_PIX_ROUND_LONG. 410 4112017-07-12 Werner Lemberg <wl@gnu.org> 412 413 * src/truetype/ttpload.c (tt_face_get_location): Off-by-one typo. 414 415 Also improve tracing message. 416 417 Problem reported as 418 419 https://bugs.chromium.org/p/chromium/issues/detail?id=738919 420 4212017-07-07 Werner Lemberg <wl@gnu.org> 422 423 [cff] Integer overflow. 424 425 Reported as 426 427 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2517 428 429 * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32. 430 4312017-07-05 Werner Lemberg <wl@gnu.org> 432 433 * src/sfnt/ttcmap.c (tt_cmap_unicode_class_rec): Fix warning. 434 4352017-07-05 Werner Lemberg <wl@gnu.org> 436 437 * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Fix warning (#51395). 438 4392017-07-04 Werner Lemberg <wl@gnu.org> 440 441 [truetype] Prevent address overflow (#51365). 442 443 * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Add guard. 444 4452017-07-03 Alexei Podtelezhnikov <apodtele@gmail.com> 446 447 * src/base/ftlcdfil.c (ft_lcd_filter_fir): Improve code. 448 4492017-07-03 Werner Lemberg <wl@gnu.org> 450 451 [truetype] Integer overflow. 452 453 Reported as 454 455 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2455 456 457 * src/truetype/ttinterp.c (Ins_SCFS): Use SUB_LONG. 458 4592017-07-01 Alexei Podtelezhnikov <apodtele@gmail.com> 460 461 * src/sfnt/sfobjs.c (sfnt_load_face): Ignore No_Unicode_Glyph_Name. 462 4632017-06-28 Ben Wagner <bungeman@google.com> 464 465 Avoid Microsoft compiler warnings (#51331). 466 467 While clang's sanitizer recommends a cast to unsigned for safe 468 negation (to handle -INT_MIN), both MSVC and Visualc emit warning 469 C4146 if an unsigned value gets negated. 470 471 * include/freetype/internal/ftcalc.h (NEG_LONG, NEG_INT32), 472 src/base/ftcalc.c (FT_MOVE_SIGN): Replace negation with a 473 subtraction. 474 4752017-06-27 Werner Lemberg <wl@gnu.org> 476 477 * src/cff/cffparse.c (do_fixed): Fix typo. 478 479 Spotted by chris <chris@gcjd.org>. 480 4812017-06-27 Werner Lemberg <wl@gnu.org> 482 483 [truetype] Integer overflows. 484 485 Reported as 486 487 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2384 488 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2391 489 490 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix): Use 491 NEG_LONG. 492 493 * src/truetype/ttinterp.c (Ins_SxVTL): Use NEG_LONG. 494 4952017-06-24 Werner Lemberg <wl@gnu.org> 496 497 [truetype] Integer overflows. 498 499 Reported as 500 501 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2364 502 503 * src/truetype/ttinterp.c (Ins_ISECT): Use NEG_LONG. 504 5052017-06-22 Werner Lemberg <wl@gnu.org> 506 507 [cff, truetype] Integer overflows. 508 509 Reported as 510 511 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2323 512 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2328 513 514 * src/cff/cf2blues.c (cf2_blues_capture): Use ADD_INT32 and 515 SUB_INT32. 516 517 * src/truetype/ttinterp.c (Ins_SDPVTL): Use SUB_LONG and NEG_LONG. 518 5192017-06-21 Alexei Podtelezhnikov <apodtele@gmail.com> 520 521 [sfnt] Synthesize a Unicode charmap if one is missing. 522 523 * src/sfnt/ttcmap.h (tt_cmap_unicode_class_rec): Declare it. 524 * src/sfnt/ttcmap.c (tt_get_glyph_name, tt_cmap_unicode_init, 525 tt_cmap_unicode_done, tt_cmap_unicode_char_index, 526 tt_cmap_unicode_char_next, tt_cmap_unicode_class_rec): Implement 527 synthetic Unicode charmap class. 528 (tt_get_cmap_info): Make sure the callback is available. 529 530 * src/sfnt/sfobjs.c (sfnt_load_face) 531 [FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: If Unicode charmap is missing, 532 synthesize one. 533 534 * include/freetype/config/ftoption.h: Document it. 535 * devel/ftoption.h: Ditto. 536 5372017-06-20 Tony Theodore <tonyt@logyst.com> 538 539 Fix pkg-config in freetype-config for cross-compiling (#51274). 540 541 * builds/unix/unix-def.in (PKG_CONFIG): New variable. 542 (freetype-config): Use it in sed expression. 543 544 * builds/unix/freetype-config.in: s/pkg-config/%PKG_CONFIG%/. 545 5462017-06-20 Werner Lemberg <wl@gnu.org> 547 548 [cff, truetype] Integer overflows. 549 550 Reported as 551 552 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2300 553 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2313 554 555 * src/cff/cf2hints.c (cf2_hintmap_adjustHints): Use ADD_INT32. 556 557 * src/truetype/ttinterp.c (Ins_ABS): Avoid FT_ABS. 558 5592017-06-17 Alexei Podtelezhnikov <apodtele@gmail.com> 560 561 [base, smooth] LCD filtering cleanups. 562 563 * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy): 564 Clean up, start filtering from the bottom-left origin. 565 566 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated. 567 5682017-06-16 Werner Lemberg <wl@gnu.org> 569 570 [truetype] Integer overflows. 571 572 Reported as 573 574 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2270 575 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2276 576 577 * src/truetype/ttinterp.c (Ins_MDRP, _iup_worker_interpolate): Use 578 ADD_LONG and SUB_LONG. 579 5802017-06-15 Werner Lemberg <wl@gnu.org> 581 582 [bdf, cff] Integer overflows. 583 584 Reported as 585 586 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2244 587 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2261 588 589 * src/bdf/bdfdrivr.c (BDF_Face_Init): Replace calls to FT_ABS with 590 direct code to avoid value negation. 591 592 * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32 and 593 ADD_INT32. 594 5952017-06-13 Werner Lemberg <wl@gnu.org> 596 597 * src/winfonts/winfnt.c (FNT_Face_Init): Don't set active encoding. 598 599 FreeType only sets a default active encoding for Unicode. 600 6012017-06-13 Werner Lemberg <wl@gnu.org> 602 603 [cff, truetype] Integer overflows. 604 605 Reported as 606 607 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2216 608 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2218 609 610 * src/cff/cf2fixed.h (cf2_fixedAbs): Use NEG_INT32. 611 612 * src/truetype/ttinterp.c (Ins_IP): Use SUB_LONG. 613 6142017-06-11 Werner Lemberg <wl@gnu.org> 615 616 [cff] Integer overflows. 617 618 Reported as 619 620 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2200 621 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2210 622 623 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Use SUB_INT32 and 624 ADD_INT32. 625 626 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO>: Use 627 ADD_INT32. 628 6292017-06-10 Werner Lemberg <wl@gnu.org> 630 631 [truetype] Fix TT_Set_Var_Design. 632 633 Reported by Nikolaus Waxweiler <madigens@gmail.com>. 634 635 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Correctly handle the 636 case where we have less input coordinates than axes. 637 6382017-06-10 Werner Lemberg <wl@gnu.org> 639 640 * src/base/ftcalc.c (FT_DivFix): Fix embarrassing typo. 641 642 Bug introduced 2017-05-28. 643 6442017-06-09 Werner Lemberg <wl@gnu.org> 645 646 [cff, truetype] Integer overflows. 647 648 Reported as 649 650 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2144 651 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2151 652 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2153 653 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2173 654 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2186 655 656 * src/cff/cf2blues.c (cf2_blues_init): Use SUB_INT32. 657 658 * src/truetype/ttinterp.c (Round_None, Round_To_Grid, 659 Round_To_Half_Grid, Round_Down_To_Grid, Round_Up_To_Grid, 660 Round_To_Double_Grid, Round_Super, Round_Super_45): Use ADD_LONG, 661 SUB_LONG, NEG_LONG, FT_PIX_ROUND_LONG, FT_PIX_CEIL_LONG, 662 FT_PAD_ROUND_LONG 663 (Ins_SxVTL, Ins_MIRP): Use SUB_LONG. 664 (_iup_worker_shift): Use SUB_LONG and ADD_LONG. 665 6662017-06-09 Werner Lemberg <wl@gnu.org> 667 668 Provide more macros for flooring, ceiling, and rounding. 669 670 These versions don't produce run-time errors due to integer 671 overflow. 672 673 * include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H. 674 (FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG, 675 FT_PIX_CEIL_LONG): New macros. 676 (FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32, 677 FT_PIX_CEIL_INT32): New macros. 678 6792017-06-09 Werner Lemberg <wl@gnu.org> 680 681 Remove unused macros. 682 683 * include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT, 684 NEG_INT): Deleted. 685 6862017-06-09 Werner Lemberg <wl@gnu.org> 687 688 */*: Remove `OVERFLOW_' prefix. 689 690 This increases readability. 691 6922017-06-07 Werner Lemberg <wl@gnu.org> 693 694 [cff, truetype] Integer overflows. 695 696 Reported as 697 698 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2133 699 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2137 700 701 * src/cff/cf2hints.c (cf2_hint_init): Use OVERFLOW_SUB_INT32. 702 703 * src/truetype/ttinterp.c (PROJECT, DUALPROJ): Use 704 OVERFLOW_SUB_LONG. 705 7062017-06-06 Werner Lemberg <wl@gnu.org> 707 708 [cff] Integer overflows. 709 710 Reported as 711 712 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2109 713 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2110 714 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2122 715 716 * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32. 717 718 * src/cff/cf2hints.c (cf2_hintmap_map): Synchronize if-else 719 branches. 720 7212017-06-05 Werner Lemberg <wl@gnu.org> 722 723 [cff] Integer overflow. 724 725 Reported as 726 727 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2089 728 729 * src/cff/cffload.c (cff_blend_doBlend): User OVERFLOW_ADD_INT32. 730 7312017-06-04 Werner Lemberg <wl@gnu.org> 732 733 [cff, truetype] Integer overflows. 734 735 Reported as 736 737 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2075 738 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2088 739 740 * src/cff/cf2font.c (cf2_font_setup): Use OVERFLOW_MUL_INT32. 741 742 * src/truetype/ttinterp.c (Ins_ISECT): Use OVERFLOW_MUL_LONG, 743 OVERFLOW_ADD_LONG, and OVERFLOW_SUB_LONG. 744 7452017-06-03 Werner Lemberg <wl@gnu.org> 746 747 [base, cff, truetype] Integer overflows. 748 749 Reported as 750 751 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2060 752 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2062 753 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2063 754 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2068 755 756 * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use 757 OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG. 758 759 * src/cff/cf2blues.c (cf2_blues_capture), src/cff/cf2hints.c 760 (cf2_hintmap_adjustHints): Use OVERFLOW_SUB_INT32. 761 762 * src/truetype/ttgload.c (compute_glyph_metrics): User 763 OVERFLOW_SUB_LONG. 764 765 * src/truetype/ttinterp.c (Direct_Move, Direct_Move_Orig, 766 Direct_Move_X, Direct_Move_Y, Direct_Move_Orig_X, 767 Direct_Move_Orig_Y, Move_Zp2_Point, Ins_MSIRP): Use 768 OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG. 769 7702017-06-03 Werner Lemberg <wl@gnu.org> 771 772 * builds/unix/freetype-config.in: Fix pkg-config test (#51162). 773 774 Patch directly taken from bug report. 775 7762017-06-03 Werner Lemberg <wl@gnu.org> 777 778 [bdf] Synchronize sanity checks with pcf driver. 779 780 Reported as 781 782 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2054 783 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2058 784 785 * src/bdf/bdfdrivr.c (BDF_Face_Init): Check font ascent and descent. 786 Check AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and 787 RESOLUTION_Y properties. 788 7892017-06-03 Werner Lemberg <wl@gnu.org> 790 791 [cff, truetype] Integer overflows. 792 793 Reported as 794 795 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2047 796 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2057 797 798 * src/cff/cf2hints.c (cf2_hintmap_map): Use OVERFLOW_SUB_INT32. 799 800 * src/truetype/ttinterp.c (Ins_ADD): Use OVERFLOW_ADD_LONG. 801 (Ins_SUB): Use OVERFLOW_SUB_LONG. 802 (Ins_NEG): Use NEG_LONG. 803 8042017-06-03 Werner Lemberg <wl@gnu.org> 805 806 ftcalc.h: Avoid left-shift of negative numbers. 807 808 Reported as 809 810 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2055 811 812 * include/freetype/internal/ftcalc.h (INT_TO_F26DOT6, 813 INT_TO_F2DOT14, INT_TO_FIXED, F2DOT14_TO_FIXED): Use multiplication. 814 8152017-06-02 Werner Lemberg <wl@gnu.org> 816 817 [cff] Even more integer overflows. 818 819 Reported as 820 821 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2046 822 823 * src/cff/cf2intrp.c (cf2_doStems, cf2_interpT2CharString): Use 824 OVERFLOW_ADD_INT32. 825 8262017-06-02 Werner Lemberg <wl@gnu.org> 827 828 [cff] More integer overflows. 829 830 Reported as 831 832 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2032 833 834 * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32. 835 8362017-06-02 Werner Lemberg <wl@gnu.org> 837 838 [bdf] Don't left-shift negative numbers. 839 840 Reported as 841 842 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2031 843 844 * src/bdf/bdfdrivr.c (BDF_Face_Init): Use multiplication. 845 8462017-06-02 Werner Lemberg <wl@gnu.org> 847 848 [bdf] Fix integer scanning routines. 849 850 Reported as 851 852 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2029 853 854 * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos): 855 Stop scanning if result would overflow. 856 8572017-06-02 Werner Lemberg <wl@gnu.org> 858 859 [cff] Fix integer overflows. 860 861 Reported as 862 863 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2027 864 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2028 865 866 * src/cff/cf2hints.c (cf2_hintmap_insertHint), src/cff/cf2intrp.c 867 (cf2_doFlex): Use OVERFLOW_ADD_INT32 and OVERFLOW_SUB_INT32. 868 8692017-06-01 Werner Lemberg <wl@gnu.org> 870 871 [smooth] Some 32bit integer overflow run-time errors. 872 873 * src/smooth/ftgrays.c [STANDALONE] (OVERFLOW_ADD_LONG, 874 OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG, NEG_LONG): New macros. 875 [!STANDALONE]: Include FT_INTERNAL_CALC_H. 876 (gray_render_cubic): Use those macros where appropriate. 877 8782017-06-01 Werner Lemberg <wl@gnu.org> 879 880 * src/base/ftglyph.c (FT_Get_Glyph): Check `slot->advance'. 881 8822017-06-01 Werner Lemberg <wl@gnu.org> 883 884 [psaux] 32bit integer overflow tun-time errors (#46149). 885 886 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Use 887 OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG where appropriate. 888 8892017-06-01 Werner Lemberg <wl@gnu.org> 890 891 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter again. 892 893 Problem reported by Marek Kašík <mkasik@redhat.com>. 894 895 The problematic font that exceeds the old limit is Padauk-Bold, 896 version 3.002, containing bytecode generated by a buggy version of 897 ttfautohint. 898 8992017-05-31 Werner Lemberg <wl@gnu.org> 900 901 [cff] 32bit integer overflow run-time errors 2/2 (#46149). 902 903 This commit handles the new engine. 904 905 * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT32, 906 OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, NEG_INT, NEG_LONG, 907 NEG_INT32): New macros. 908 909 * src/cff/cf2ft.c (cf2_getScaleAndHintFlag): Use OVERFLOW_ADD_INT32. 910 911 * src/cff/cf2hints.c (cf2_getWindingMomentum, cf2_hint_init, 912 cf2_hintmap_map, cf2_glyphpath_hintPoint, 913 cf2_glyphpath_computeIntersection, cf2_glyphpath_computeOffset, 914 cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): Use 915 OVERFLOW_ADD_INT32, OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, and 916 NEG_INT32 where appropriate. 917 918 * src/cff/cf2intrp.c (cf2_doFlex, cf2_doBlend, 919 cf2_interpT2CharString): Ditto. 920 Also add some other code where needed to avoid overflow. 921 9222017-05-30 Werner Lemberg <wl@gnu.org> 923 924 [cff] 32bit integer overflow run-time errors 1/2 (#46149). 925 926 This commit handles the old engine. 927 928 * src/cff/cffgload.c: Include FT_INTERNAL_CALC_H. 929 (cff_decoder_parse_charstrings): Use OVERFLOW_ADD_LONG and 930 OVERFLOW_SUB_LONG where needed. 931 932 * src/cff/cffparse.c: Include FT_INTERNAL_CALC_H. 933 (power_ten_limits): New static array. 934 (do_fixed): Use it to prevent multiplication overflow. 935 (cff_parser_run): Use OVERFLOW_ADD_LONG. 936 9372017-05-30 Werner Lemberg <wl@gnu.org> 938 939 [psaux] Correctly handle sequences of multiple number signs. 940 941 * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero 942 if we encounter more than a single sign. 943 9442017-05-29 Werner Lemberg <wl@gnu.org> 945 946 [pcf] 32bit integer overflow run-time errors (#46149). 947 948 * src/pcf/pcfread.c (pcf_get_accel): Add sanity checks for 949 `fontAscent' and `fontDescent'. 950 (pcf_load_font): Add sanity checks for global height. 951 Add sanity checks for AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, 952 RESOLUTION_X, and RESOLUTION_Y properties. 953 9542017-05-29 Werner Lemberg <wl@gnu.org> 955 956 Handle some integer overflow run-time errors (#46149, #48979). 957 958 This commit (mainly for 32bit CPUs) is the first of a series of 959 similar commits to handle known integer overflows. Basically, all 960 of them are harmless, since they affect rendering of glyphs only, 961 not posing security threats. It is expected that fuzzying will show 962 up more overflows, to be fixed in due course. 963 964 The idea is to mark places where overflows can occur, using macros 965 that simply cast to unsigned integers, because overflow arithmetic 966 is well defined in this case. Doing so suppresses run-time errors 967 of sanitizers without adding computational overhead. 968 969 * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT, 970 OVERFLOW_SUB_INT, OVERFLOW_MUL_INT, OVERFLOW_ADD_LONG, 971 OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG): New macros. 972 973 * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_Matrix_Multiply, 974 FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled, 975 ft_corner_orientation): Use new macros. 976 977 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use new macros. 978 9792017-05-28 Werner Lemberg <wl@gnu.org> 980 981 * include/freetype/internal/ftcalc.h (FLOAT_TO_FIXED): Remove. 982 983 This macro is not used. 984 9852017-05-28 Werner Lemberg <wl@gnu.org> 986 987 [cff] s/cf2_floatToFixed/cf2_doubleToFixed/. 988 989 The new name better describes what the macro actually does; 990 additionally, we don't need a trailing `f' for literals (there was 991 only a single such instance in the code, but this caused a clang 992 warning because the macro itself uses `double' literals). 993 994 * src/cff/cf2blues.c, src/cff/cf2blues.h, src/cff/cf2fixed.h, 995 src/cff/cf2font.c, src/cff/cf2hints.c: Updated. 996 9972017-05-28 Werner Lemberg <wl@gnu.org> 998 999 Fix negation of INT_MIN and LONG_MIN (#46149). 1000 1001 * src/base/ftcalc.c (FT_MOVE_SIGN): Add argument to pass unsigned 1002 value, to be used as the result. 1003 (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix, FT_MulFix, 1004 FT_Vector_NormLen): Updated. 1005 10062017-05-27 Werner Lemberg <wl@gnu.org> 1007 1008 [truetype] Fix handling of design coordinates (#51127). 1009 1010 * src/truetype/ttgxvar.c (tt_set_mm_blend): Compute all design 1011 coordinates if we have to create the `blends->coord' array. 1012 (TT_Get_MM_Blend, TT_Get_Var_Design): Select default instance 1013 coordinates if no instance is selected yet. 1014 10152017-05-24 Werner Lemberg <wl@gnu.org> 1016 1017 [bdf, pcf] Support ISO646.1991-IRV character encoding (aka ASCII). 1018 1019 Problem reported by Marek Kašík <mkasik@redhat.com>, cf. 1020 1021 https://bugzilla.redhat.com/show_bug.cgi?id=1451795 1022 1023 * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdrivr.c 1024 (PCF_Face_Init): Implement it. 1025 10262017-05-20 Nikolaus Waxweiler <madigens@gmail.com> 1027 1028 [truetype] Always use interpreter v35 for B/W rendering (#51051). 1029 1030 * src/truetype/ttgload.c (tt_loader_init) 1031 [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Adjust 1032 `subpixel_hinting_lean', `grayscale_cleartype', and 1033 `vertical_lcd_lean' accordingly. 1034 1035 * src/truetype/ttinterp.c (Ins_GETINFO): Updated. 1036 (TT_RunIns): Update `backward_compatibility' flag. 1037 10382017-05-20 Alexei Podtelezhnikov <apodtele@gmail.com> 1039 1040 [smooth] Implement minimal dynamic padding for LCD filtering. 1041 1042 Extra bitmap padding for LCD filtering depends on the filter. The 1043 default 5-tap filter needs 2 extra subpixels. The light 3-tap filter 1044 needs only 1 extra subpixel. This space could be already available 1045 due to rounding. In order to optimize the padding, we now expand 1046 CBox for the given filter weights before rounding. 1047 1048 This change breaks current Skia (and Firefox). 1049 1050 * include/freetype/internal/ftobjs.h (FT_LibraryRec) 1051 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Remove `lcd_extra' field. 1052 1053 * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights, 1054 FT_Library_SetLcdFilter): Remove `lcd_extra' initializations. 1055 1056 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Implement dymanic 1057 LCD padding. 1058 10592017-05-15 Werner Lemberg <wl@gnu.org> 1060 1061 [sfnt] Return proper scaling values for SBIX bitmaps. 1062 1063 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>. 1064 1065 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Implement it. 1066 10672017-05-15 Werner Lemberg <wl@gnu.org> 1068 1069 [truetype] Fix error handling for embedded bitmaps. 1070 1071 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>. 1072 1073 * src/truetype/ttgload.c (TT_Load_Glyph) 1074 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Handle error if font is not 1075 scalable. 1076 10772017-05-15 Alexei Podtelezhnikov <apodtele@gmail.com> 1078 1079 [autofit] Make autohint warping NORMAL option. 1080 1081 This moves warping option from LIGHT to NORMAL mode. This makes LIGHT 1082 truly void of hinting in x-direction, with left side bearing never 1083 changed and right side bearing only altered by advance rounding. 1084 Therefore, LIGHT is now ready to return fractional advance. As a 1085 NORMAL option, warping substitutes normal hinting. 1086 1087 * src/autofit/afcjk.c (af_cjk_hints_apply): Updated. 1088 * src/autofit/aflatin.c (af_latin_hints_apply): Updated. 1089 * src/autofit/aflatin2.c (af_latin2_hints_apply): Updated. 1090 1091 * src/autofit/afloader.c (af_loader_load_glyph): Handle warping 1092 phantom points as normal. 1093 10942017-05-14 Werner Lemberg <wl@gnu.org> 1095 1096 Remove remnants of raster pool. 1097 1098 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Remove 1099 `raster_pool' and `raster_pool_size' fields. 1100 1101 * src/base/ftobjs.c (FT_New_Library), src/raster/ftrend1.c 1102 (ft_raster1_init), src/smooth/ftsmooth.c (ft_smooth_init): Updated. 1103 11042017-05-13 Werner Lemberg <wl@gnu.org> 1105 1106 * Version 2.8 released. 1107 ======================= 1108 1109 1110 Tag sources with `VER-2-8'. 1111 1112 * docs/VERSION.TXT: Add entry for version 2.8. 1113 * docs/CHANGES: Updated. 1114 1115 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, 1116 builds/windows/vc2005/index.html, 1117 builds/windows/vc2008/freetype.vcproj, 1118 builds/windows/vc2008/index.html, 1119 builds/windows/vc2010/freetype.vcxproj, 1120 builds/windows/vc2010/index.html, 1121 builds/windows/visualc/freetype.dsp, 1122 builds/windows/visualc/freetype.vcproj, 1123 builds/windows/visualc/index.html, 1124 builds/windows/visualce/freetype.dsp, 1125 builds/windows/visualce/freetype.vcproj, 1126 builds/windows/visualce/index.html, 1127 builds/wince/vc2005-ce/freetype.vcproj, 1128 builds/wince/vc2005-ce/index.html, 1129 builds/wince/vc2008-ce/freetype.vcproj, 1130 builds/wince/vc2008-ce/index.html: s/2.7.1/2.8/, s/271/28/. 1131 1132 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 8. 1133 (FREETYPE_PATCH): Set to 0. 1134 1135 * builds/unix/configure.raw (version_info): Set to 20:0:14. 1136 * CMakeLists.txt (VERSION_MINOR): Set to 8. 1137 (VERSION_PATCH): Set to 0. 1138 11392017-05-12 Hin-Tak Leung <htl10@users.sourceforge.net> 1140 1141 Fix `FT_UINT_TO_POINTER' macro for Windows. 1142 1143 * builds/unix/ftconfig.in, builds/vms/ftconfig.h, 1144 include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER) [_WIN64]: 1145 Fix definition. 1146 11472017-05-11 Sascha Brawer <sascha@google.com> 1148 Werner Lemberg <wl@gnu.org 1149 1150 [autofit] Add support for Chakma script. 1151 1152 * src/autofit/afblue.dat: Add blue zone data for Chakma. 1153 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1154 1155 * src/autofit/afscript.h: Add Chakma standard character. 1156 1157 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Chakma data. 1158 11592017-05-10 Sascha Brawer <sascha@google.com> 1160 Werner Lemberg <wl@gnu.org 1161 1162 [autofit] Add support for Kayah Li script. 1163 1164 * src/autofit/afblue.dat: Add blue zone data for Kayah Li. 1165 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1166 1167 * src/autofit/afscript.h: Add Kayah Li standard character. 1168 1169 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Kayah Li data. 1170 11712017-05-10 Sascha Brawer <sascha@google.com> 1172 Werner Lemberg <wl@gnu.org 1173 1174 [autofit] Add support for Bamum script. 1175 1176 * src/autofit/afblue.dat: Add blue zone data for Bamum. 1177 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1178 1179 * src/autofit/afscript.h: Add Bamum standard character. 1180 1181 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Bamum data. 1182 11832017-05-10 Sascha Brawer <sascha@google.com> 1184 Werner Lemberg <wl@gnu.org 1185 1186 [autofit] Add support for Saurashtra script. 1187 1188 * src/autofit/afblue.dat: Add blue zone data for Saurashtra. 1189 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1190 1191 * src/autofit/afscript.h: Add Saurashtra standard character. 1192 1193 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Saurashtra 1194 data. 1195 11962017-05-10 Sascha Brawer <sascha@google.com> 1197 Werner Lemberg <wl@gnu.org 1198 1199 [autofit] Add support for Buhid script. 1200 1201 * src/autofit/afblue.dat: Add blue zone data for Buhid. 1202 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1203 1204 * src/autofit/afscript.h: Add Buhid standard character. 1205 1206 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Buhid data. 1207 12082017-05-08 Sascha Brawer <sascha@google.com> 1209 Werner Lemberg <wl@gnu.org 1210 1211 [autofit] Add support for Shavian script. 1212 1213 * src/autofit/afblue.dat: Add blue zone data for Shavian. 1214 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1215 1216 * src/autofit/afscript.h: Add Shavian standard character. 1217 1218 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Shavian data. 1219 12202017-05-08 Sascha Brawer <sascha@google.com> 1221 Werner Lemberg <wl@gnu.org 1222 1223 [autofit] Add support for Vai script. 1224 1225 * src/autofit/afblue.dat: Add blue zone data for Vai. 1226 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1227 1228 * src/autofit/afscript.h: Add Vai standard character. 1229 1230 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Vai data. 1231 12322017-05-08 Sascha Brawer <sascha@google.com> 1233 Werner Lemberg <wl@gnu.org 1234 1235 [autofit] Add support for Osmanya script. 1236 1237 * src/autofit/afblue.dat: Add blue zone data for Osmanya. 1238 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1239 1240 * src/autofit/afscript.h: Add Osmanya standard character. 1241 1242 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Osmanya data. 1243 12442017-05-08 Sascha Brawer <sascha@google.com> 1245 Werner Lemberg <wl@gnu.org 1246 1247 [autofit] Add support for Coptic script. 1248 1249 * src/autofit/afblue.dat: Add blue zone data for Coptic. 1250 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1251 1252 * src/autofit/afscript.h: Add Coptic standard character. 1253 1254 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Coptic data. 1255 12562017-05-08 Sascha Brawer <sascha@google.com> 1257 Werner Lemberg <wl@gnu.org 1258 1259 [autofit] Add support for Carian script. 1260 1261 * src/autofit/afblue.dat: Add blue zone data for Carian. 1262 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1263 1264 * src/autofit/afscript.h: Add Carian standard character. 1265 1266 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Carian data. 1267 12682017-05-07 Werner Lemberg <wl@gnu.org> 1269 1270 [truetype] Add tricky font `DFGirl-W6-WIN-BF' (from Dynalab). 1271 1272 Reported by Roy Tam <roytam@gmail.com>. 1273 1274 * src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it. 1275 12762017-05-07 Roy Tam <roytam@gmail.com> 1277 Werner Lemberg <wl@gnu.org> 1278 1279 [truetype] More tricky fonts (mainly from Dynalab). 1280 1281 * src/truetype/ttobjs.c (tt_check_trickyness_family, 1282 tt_check_trickyness_sfnt_ids): Add them. 1283 12842017-05-07 Werner Lemberg <wl@gnu.org> 1285 1286 [truetype] Add tricky font `DLCHayMedium' (from Dynalab). 1287 1288 Reported by Roy Tam <roytam@gmail.com>. 1289 1290 * src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it. 1291 12922017-05-03 Werner Lemberg <wl@gnu.org> 1293 1294 */*: s/backwards compatibility/backward compatibility/. 1295 12962017-05-03 Sascha Brawer <sascha@google.com> 1297 Werner Lemberg <wl@gnu.org 1298 1299 [autofit] Add support for Unified Canadian Syllabics script. 1300 1301 * src/autofit/afblue.dat: Add blue zone data for Unified Canadian 1302 Syllabics. 1303 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1304 1305 * src/autofit/afscript.h: Add Unified Canadian Syllabics standard 1306 character. 1307 1308 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Unified 1309 Canadian Syllabics data. 1310 13112017-05-03 Sascha Brawer <sascha@google.com> 1312 Werner Lemberg <wl@gnu.org> 1313 1314 [autofit] Add blue-zone support for Sundanese script. 1315 1316 This essentially moves the Sundanese script from the `Indic' hinter 1317 to the `Latin' hinter. 1318 1319 * src/autofit/afblue.dat: Add blue zone data for Sundanese. 1320 1321 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1322 1323 * src/autofit/afscript.h: Add Sundanese standard character and move 1324 data out of AF_CONFIG_OPTION_INDIC block. 1325 1326 * src/autofit/afranges.c: Move Sundanese data out of 1327 AF_CONFIG_OPTION_INDIC block. 1328 1329 * src/autofit/afstyles.h: Update Sundanese data; in particular, use 1330 AF_WRITING_SYSTEM_LATIN. 1331 13322017-05-03 Sascha Brawer <sascha@google.com> 1333 Werner Lemberg <wl@gnu.org 1334 1335 [autofit] Add support for Avestan script. 1336 1337 * src/autofit/afblue.dat: Add blue zone data for Avestan. 1338 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1339 1340 * src/autofit/afscript.h: Add Avestan standard character. 1341 1342 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Avestan data. 1343 13442017-05-02 Behdad Esfahbod <behdad@behdad.org> 1345 1346 [truetype] Make `IUP' gvar deltas do the same as Apple (#50832). 1347 1348 When points are not touched by gvar interpolation deltas, FreeType 1349 gave a slightly different result than Apple's CoreText. 1350 1351 The OpenType working group will update the specification to document 1352 the following behaviour: If the two points with deltas to the `left' 1353 and `right' of the untouched point have the same coordinate, then 1354 the inferred delta for the untouched point should be zero. 1355 1356 * src/truetype/ttgxvar.c (tt_delta_interpolate): Implement new 1357 behaviour. 1358 13592017-05-02 Werner Lemberg <wl@gnu.org> 1360 1361 [autofit] Remove `slight' auto-hint mode again. 1362 1363 A poll on freetype-devel favoured changes directly applied to 1364 `light'. 1365 1366 * include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT, 1367 FT_RENDER_MODE_SLIGHT): Removed. 1368 1369 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c 1370 (af_latin_hints_init), src/autofit/aflatin2.c 1371 (af_latin2_hints_init): Revert change from 2017-04-22. 1372 1373 * src/autofit/afloader.c (af_loader_load_glyph) Remove references to 1374 FT_RENDER_MODE_SLIGHT. 1375 [AF_CONFIG_OPTION_TT_SIZE_METRICS]: Enable TrueType-like metrics 1376 unconditionally. 1377 1378 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Revert change from 1379 2017-04-22. 1380 1381 * src/base/ftobjs.c (FT_Load_Glyph): Revert change from 2017-04-22. 1382 1383 * src/pshinter/pshalgo.c (ps_hints_apply): Revert change from 1384 2017-04-22. 1385 1386 * src/smooth/ftsmooth.c (ft_smooth_render): Revert change from 1387 2017-04-22. 1388 1389 * docs/CHANGES: Updated. 1390 13912017-04-30 Werner Lemberg <wl@gnu.org> 1392 1393 [autofit] Fix metrics computation. 1394 1395 Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de> and 1396 Nikolaus Waxweiler <madigens@gmail.com>. 1397 1398 * src/base/ftobjs.c (FT_Request_Size): Trigger recomputation of 1399 auto-hinter metrics. Without this change, multiple size changing 1400 calls for a single face fail. 1401 14022017-04-29 Werner Lemberg <wl@gnu.org> 1403 1404 * src/truetype/ttdriver.c (tt_size_request): Properly check `error'. 1405 1406 Reported by Earnestly <zibeon@googlemail.com> in 1407 1408 https://lists.nongnu.org/archive/html/freetype/2017-04/msg00031.html 1409 14102017-04-27 Werner Lemberg <wl@gnu.org> 1411 1412 Introduce AF_CONFIG_OPTION_TT_SIZE_METRICS configuration option. 1413 1414 * include/freetype/config/ftoption.h 1415 (AF_CONFIG_OPTION_TT_SIZE_METRICS): New option, commented out by 1416 default. 1417 1418 * src/autofit/afloader.c (af_loader_load_glyph): Use 1419 AF_CONFIG_OPTION_TT_SIZE_METRICS to guard the corresponding code. 1420 14212017-04-26 Werner Lemberg <wl@gnu.org> 1422 1423 * include/freetype/freetype.h (FT_Render_Mode): Fix order. 1424 1425 This retains backward compatibility. 1426 1427 Noted by Alexei. 1428 14292017-04-22 Werner Lemberg <wl@gnu.org> 1430 1431 [truetype] Do linear scaling for FT_LOAD_NO_HINTING (#50470). 1432 1433 * src/truetype/ttobjs.h (TT_SizeRec): Add field `hinted_metrics' to 1434 hold hinted metrics. 1435 Make `metrics' a pointer so that `tt_glyph_load' can easily switch 1436 between metrics. 1437 1438 * src/truetype/ttdriver.c (tt_size_request): Updated. 1439 (tt_glyph_load): Use top-level metrics if FT_LOAD_NO_HINTING is 1440 used. 1441 1442 * src/truetype/ttgload.c (TT_Hint_Glyph, TT_Process_Simple_Glyph, 1443 TT_Process_Composite_Component, load_truetype_glyph, 1444 compute_glyph_metrics, TT_Load_Glyph): Updated. 1445 1446 * src/truetype/ttinterp.c (TT_Load_Context): Updated. 1447 1448 * src/truetype/ttobjs.c (tt_size_reset): Updated. 1449 1450 * src/truetype/ttsubpix.c (sph_set_tweaks): Updated. 1451 14522017-04-22 Werner Lemberg <wl@gnu.org> 1453 1454 Add new `slight' auto-hinting mode. 1455 1456 This mode uses fractional advance widths and doesn't scale glyphs 1457 horizontally, only applying vertical scaling and hinting. 1458 1459 At the same time, the behaviour of the `light' auto-hinter gets 1460 restored for backward compatibility: Both vertical and horizontal 1461 scaling is again based on rounded metrics values (this was changed 1462 in a commit from 2017-03-30 as a side effect). To be more precise, 1463 the behaviour is restored for TrueType fonts only; for other font 1464 formats like Type 1, this is a new feature of the `light' hinting 1465 mode. 1466 1467 * include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT): New macro. 1468 (FT_RENDER_MODE_SLIGHT): New render mode. 1469 1470 * include/freetype/internal/ftobjs.h (FT_Size_InternalRec): Add 1471 `autohint_mode' and `autohint_metrics' fields. 1472 1473 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c 1474 (af_latin_hints_init), src/autofit/aflatin2 (af_latin2_hints_init): 1475 Updated. 1476 1477 * src/autofit/afloader.c (af_loader_embolden_glyph_in_slot): Use 1478 `autohint_metrics'. 1479 (af_loader_load_glyph): s/internal/slot_internal/. 1480 Initialize `autohint_metrics' and `autohint_mode' depending on 1481 current auto-hint mode. 1482 Use `autohint_metrics'. 1483 Updated. 1484 1485 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Updated. 1486 1487 * src/base/ftobjs.c (FT_Load_Glyph): Updated. 1488 (FT_New_Size): Allocate `internal' object. 1489 1490 * src/pshinter/pshalgo.c (ps_hints_apply): Updated. 1491 1492 * src/smooth/ftsmooth.c (ft_smooth_render): Updated. 1493 14942017-04-22 Werner Lemberg <wl@gnu.org> 1495 1496 Introduce `FT_Size_InternalRec' structure. 1497 1498 We are going to extend this later on. 1499 1500 * include/freetype/internal/ftobjs.h (FT_Size_InternalRec): New 1501 structure with a single field `module_data'. 1502 1503 * src/base/ftobjs.c (FT_New_Size): Allocate `internal' field of 1504 `FT_Size' structure. 1505 1506 * src/cff/cffgload.c (cff_builder_init, cff_decoder_prepare): Use 1507 `size->internal->module_data' instead of `size->internal'. 1508 1509 * src/cff/cffobjs.c (cff_size_done): Deallocate `module_data'. 1510 (cff_size_init, cff_size_select, cff_size_request): Use 1511 `size->internal->module_data' instead of `size->internal'. 1512 1513 * src/cif/cidobjs.c (cid_size_done, cid_size_init, 1514 cid_size_request): Use `size->internal->module_data' instead of 1515 `size->internal'. 1516 1517 * src/psaux/psobjs.c (t1_builder_ini): Use 1518 `size->internal->module_data' instead of `size->internal'. 1519 1520 * src/type1/t1objs.c (T1_Size_Done, T1_Size_Init, T1_Size_Request): 1521 Use `size->internal->module_data' instead of `size->internal'. 1522 15232017-04-21 Alexei Podtelezhnikov <apodtele@gmail.com> 1524 1525 * src/smooth/ftsmooth.h: Remove unused guards and declaration. 1526 15272017-04-16 Hin-Tak Leung <htl10@users.sourceforge.net> 1528 1529 Fix tracing messages. 1530 1531 * src/base/ftobjs.c (FT_Face_GetCharVariantIndex, 1532 FT_Face_GetCharVariantIsDefault, FT_Face_GetVariantsOfChar): Print 1533 correct function name. 1534 15352017-04-08 Sascha Brawer <sascha@google.com> 1536 Werner Lemberg <wl@gnu.org 1537 1538 [autofit] Add support for Old Turkic script. 1539 1540 * src/autofit/afblue.dat: Add blue zone data for Old Turkic. 1541 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1542 1543 * src/autofit/afscript.h: Add Old Turkic standard characters. 1544 1545 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Old Turkic data. 1546 15472017-04-08 Sascha Brawer <sascha@google.com> 1548 Werner Lemberg <wl@gnu.org 1549 1550 [autofit] Add support for Gothic script. 1551 1552 * src/autofit/afblue.dat: Add blue zone data for Gothic. 1553 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1554 1555 * src/autofit/afscript.h: Add Gothic standard characters. 1556 1557 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Gothic data. 1558 15592017-04-08 Sascha Brawer <sascha@google.com> 1560 Werner Lemberg <wl@gnu.org 1561 1562 [autofit] Add support for Cypriot script. 1563 1564 * src/autofit/afblue.dat: Add blue zone data for Cypriot. 1565 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1566 1567 * src/autofit/afscript.h: Add Cypriot standard characters. 1568 1569 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Cypriot data. 1570 15712017-04-08 Sascha Brawer <sascha@google.com> 1572 Werner Lemberg <wl@gnu.org 1573 1574 [autofit] Add support for Deseret script. 1575 1576 * src/autofit/afblue.dat: Add blue zone data for Deseret. 1577 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1578 1579 * src/autofit/afscript.h: Add Deseret standard characters. 1580 1581 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Deseret data. 1582 15832017-04-07 Werner Lemberg <wl@gnu.org> 1584 1585 [autofit] Fix invalid character range description (#50745). 1586 1587 Also reported as 1588 1589 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1034 1590 1591 * src/autofit/afranges.c (af_glag_nonbase_uniranges): Fix typo in 1592 recent commit. 1593 15942017-04-07 Werner Lemberg <wl@gnu.org> 1595 1596 [ftfuzzer] Fix clang warnings. 1597 1598 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Add 1599 casts. 1600 16012017-04-06 Sascha Brawer <sascha@google.com> 1602 Werner Lemberg <wl@gnu.org 1603 1604 [autofit] Add support for Lisu script. 1605 1606 * src/autofit/afblue.dat: Add blue zone data for Lisu. 1607 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1608 1609 * src/autofit/afscript.h: Add Lisu standard characters. 1610 1611 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Lisu data. 1612 16132017-04-06 Sascha Brawer <sascha@google.com> 1614 Werner Lemberg <wl@gnu.org 1615 1616 [autofit] Add support for Osage script. 1617 1618 * src/autofit/afblue.dat: Add blue zone data for Osage. 1619 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1620 1621 * src/autofit/afscript.h: Add Osage standard characters. 1622 1623 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Osage data. 1624 16252017-04-06 Sascha Brawer <sascha@google.com> 1626 Werner Lemberg <wl@gnu.org 1627 1628 [autofit] Add support for Glagolitic script. 1629 1630 * src/autofit/afblue.dat: Add blue zone data for Glagolitic. 1631 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1632 1633 * src/autofit/afscript.h: Add Glagolitic standard characters. 1634 1635 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Glagolitic data. 1636 16372017-04-06 Sascha Brawer <sascha@google.com> 1638 Werner Lemberg <wl@gnu.org 1639 1640 [autofit] Add support for Tai Viet script. 1641 1642 * src/autofit/afblue.dat: Add blue zone data for Tai Viet. 1643 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1644 1645 * src/autofit/afscript.h: Add Tai Viet standard characters. 1646 1647 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Tai Viet data. 1648 16492017-04-06 Sascha Brawer <sascha@google.com> 1650 Werner Lemberg <wl@gnu.org 1651 1652 [autofit] Add support for Tifinagh script. 1653 1654 * src/autofit/afblue.dat: Add blue zone data for Tifinagh. 1655 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1656 1657 * src/autofit/afscript.h: Add Tifinagh standard characters. 1658 1659 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Tifinagh data. 1660 16612017-04-06 Sascha Brawer <sascha@google.com> 1662 Werner Lemberg <wl@gnu.org 1663 1664 [autofit] Add support for N'Ko script. 1665 1666 * src/autofit/afblue.dat: Add blue zone data for N'Ko. 1667 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1668 1669 * src/autofit/afscript.h: Add N'Ko standard characters. 1670 1671 * src/autofit/afranges.c, src/autofit/afstyles.h: Add N'Ko data. 1672 16732017-04-06 Sascha Brawer <sascha@google.com> 1674 1675 [autofit] Add support for Adlam script. 1676 1677 * src/autofit/afblue.dat: Add blue zone data for Adlam. 1678 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1679 1680 * src/autofit/afscript.h: Add Adlam standard characters. 1681 1682 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Adlam data. 1683 16842017-04-06 Sascha Brawer <sascha@google.com> 1685 1686 [autofit] Add support for Ol Chiki script. 1687 1688 * src/autofit/afblue.dat: Add blue zone data for Ol Chiki. 1689 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. 1690 1691 * src/autofit/afscript.h: Add Ol Chiki standard character. 1692 1693 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Ol Chiki data. 1694 16952017-04-03 Werner Lemberg <wl@gnu.org> 1696 1697 [truetype] Avoid reexecution of `fpgm' and `prep' in case of error. 1698 1699 Reported as 1700 1701 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=981 1702 1703 * include/freetype/fterrdef.h (FT_Err_DEF_In_Glyf_Bytecode): New 1704 error code. 1705 1706 * src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Prohibit execution 1707 of these two opcodes in `glyf' bytecode. 1708 (TT_RunIns): Don't enforce reexecution of `fpgm' and `prep' bytecode 1709 in case of error since function tables can no longer be modified 1710 (due to the changes in `Ins_FDEF' and `Ins_IDEF'). This change can 1711 enormously speed up handling of broken fonts. 1712 17132017-04-02 Alexei Podtelezhnikov <apodtele@gmail.com> 1714 1715 [autofit] Disable metrics adjustment for `FT_LOAD_TARGET_LCD'. 1716 1717 * src/autofit/aflatin.c (af_latin_hints_init): Updated. 1718 * src/autofit/aflatin2.c (af_latin2_hints_init): Ditto. 1719 17202017-04-01 Werner Lemberg <wl@gnu.org> 1721 1722 * src/truetype/ttgload.c: Include FT_CONFIG_CONFIG_H. 1723 1724 Otherwise FT_UINT_TO_POINTER might not be defined. 1725 1726 Problem reported by Alexei. 1727 17282017-03-31 Alexei Podtelezhnikov <apodtele@gmail.com> 1729 1730 [autofit] Disable stem adjustment for `FT_LOAD_TARGET_LCD'. 1731 1732 * include/freetype/freetype.h (FT_LOAD_TARGET_LCD): Document it. 1733 * src/autofit/afcjk.c (af_cjk_hints_init): Updated. 1734 * src/autofit/aflatin.c (af_latin_hints_init): Ditto. 1735 * src/autofit/aflatin2.c (af_latin2_hints_init): Ditto. 1736 17372017-03-31 Werner Lemberg <wl@gnu.org> 1738 1739 * src/cff/cffload.c (cff_font_load): Improve fix from 2017-01-04. 1740 1741 Allow CFFs containing a single font to have an empty font name. 1742 1743 Problem reported by 張俊芝 <418092625@qq.com> in 1744 1745 https://lists.nongnu.org/archive/html/freetype-devel/2017-03/msg00074.html 1746 17472017-03-30 Werner Lemberg <wl@gnu.org> 1748 1749 * src/cff/cffparse.h (CFF2_DEFAULT_STACK): Set to 513 also. 1750 1751 Requested by Dave Arnold. 1752 17532017-03-30 Werner Lemberg <wl@gnu.org> 1754 1755 [truetype] Fix HVAR and VVAR handling (#50678). 1756 1757 * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Handle 1758 glyph indices larger than `mapCount' as described in the 1759 specification. 1760 17612017-03-30 Werner Lemberg <wl@gnu.org> 1762 1763 [truetype] Allow linear scaling for unhinted rendering (#50470). 1764 1765 * src/truetype/ttdriver.c (tt_size_request): Revert change from 1766 2011-07-16; the intended metrics fix seems now to be implemented in 1767 a different way, making the patch unnecessary. Note that this 1768 change was usually patched out by all major GNU/Linux distributions 1769 due to heavy side effects. 1770 1771 * src/truetype/ttgload.c (compute_glyph_metrics, TT_Load_Glyph): 1772 Refer to the metrics of the `TT_Size' object. 1773 17742017-03-29 Werner Lemberg <wl@gnu.org> 1775 1776 [truetype] Fix thinko related to PS name of default named instance. 1777 1778 * src/truetype/ttgxvar.c (TT_Get_MM_Var): `strid' and `psid' are 1779 name ID values, not indices into the array of name entries. 1780 17812017-03-27 Werner Lemberg <wl@gnu.org> 1782 1783 [cid, truetype] Don't use `index' as a variable name. 1784 1785 At least on FreeBSD there is a global declaration of `index' in file 1786 `/usr/include/strings.h'. 1787 1788 * src/cff/cf2intrp.c, src/truetype/ttgload.c: s/index/idx/ where 1789 appropriate. 1790 17912017-03-27 Wojciech Mamrak <wmamrak@gmail.com> 1792 1793 [sfnt] Minor improvement for handling kern tables. 1794 1795 * src/sfnt/ttkern.c (tt_face_load_kern): Don't check for 1796 cross-stream kerning tables since we reject format 2 tables later 1797 on anyways. 1798 Modify code for limit test... 1799 (tt_face_get_kerning): ... to avoid a limit test here. 1800 18012017-03-27 Werner Lemberg <wl@gnu.org> 1802 1803 [pcf] Fix compiler warnings. 1804 1805 Reported by Alexander Hedges <ahedges@student.ethz.ch>. 1806 1807 * src/pcf/pcfdrivr.c (pcf_property_set, pcf_property_get): Tag 1808 `property_name' with `FT_UNUSED' where necessary. 1809 18102017-03-26 Werner Lemberg <wl@gnu.org> 1811 1812 * src/psaux/psobjs.c (t1_builder_close_contour): Add safety guard. 1813 1814 Reported as 1815 1816 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941 1817 18182017-03-23 Werner Lemberg <wl@gnu.org> 1819 1820 [psaux] Better protect `flex' handling. 1821 1822 Reported as 1823 1824 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=935 1825 1826 * src/psaux/t1decode.c (t1_decoder_parse_charstrings) 1827 <callothersubr>: Since there is not a single flex operator but a 1828 series of subroutine calls, malformed fonts can call arbitrary other 1829 operators after the start of a flex, possibly adding points. For 1830 this reason we have to check the available number of points before 1831 inserting a point. 1832 18332017-03-23 Werner Lemberg <wl@gnu.org> 1834 1835 [sfnt] Fix check for default named instance. 1836 1837 * src/sfnt/sfobjs.c (sfnt_init_face): A `fixed' number needs four 1838 bytes, not two... 1839 18402017-03-23 Werner Lemberg <wl@gnu.org> 1841 1842 Make MM fonts work (again). 1843 1844 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, 1845 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Ignore 1846 return value of `ft_face_get_mvar_service'; instead, check whether a 1847 service is actually returned. 1848 18492017-03-20 Werner Lemberg <wl@gnu.org> 1850 1851 [truetype] Some variable renamings. 1852 1853 Too much local variables holding different structures were called 1854 `metrics'. 1855 1856 * src/truetype/ttdriver.c (tt_size_select): s/metrics/size_metrics/. 1857 1858 * src/truetype/ttgload.c (tt_get_metrics_incr_overrides, 1859 compute_glyph_metrics): s/metrics/incr_metrics/. 1860 (load_sbit_image): s/metrics/sbit_metrics/. 1861 1862 * src/truetype/ttobjs.c (tt_size_run_fpgm): s/metrics/size_metrics/. 1863 (tt_size_init_bytecode): s/metrics/tt_metrics/. 1864 (tt_size_reset): s/metrics/size_metrics/. 1865 18662017-03-20 Werner Lemberg <wl@gnu.org> 1867 1868 [sfnt] Don't add instances to non-variation fonts. 1869 1870 * src/sfnt/sfobjs.c (sfnt_init_face): Fix it. 1871 18722017-03-20 Werner Lemberg <wl@gnu.org> 1873 1874 * src/cff/cffgload.c (cff_builder_init): Add safety guard (#50578). 1875 18762017-03-18 Werner Lemberg <wl@gnu.org> 1877 1878 Introduce FT_UINT_TO_POINTER macro (#50560). 1879 1880 We have to make a separate case for Windows 64's LLP64 data model. 1881 1882 * builds/unix/ftconfig.in, builds/vms/ftconfig.h, 1883 include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER): New macro. 1884 1885 * src/truetype/ttgload.c (load_truetype_glyph): Use it. 1886 18872017-03-18 Werner Lemberg <wl@gnu.org> 1888 1889 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#50573). 1890 1891 The problematic font that exceeds the old limit is Lato-Regular, 1892 version 2.007, containing bytecode generated by a buggy version of 1893 ttfautohint. 1894 18952017-03-18 Werner Lemberg <wl@gnu.org> 1896 1897 [truetype] Another limitation for bytecode loop count maximum. 1898 1899 Reported as 1900 1901 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=900 1902 1903 * src/truetype/ttinterp.c (TT_RunIns): Limit `loopcall_counter_max' 1904 by number of glyphs also. 1905 19062017-03-18 Werner Lemberg <wl@gnu.org> 1907 1908 [ftfuzzer] Minor improvement. 1909 1910 * src/tools/ftfuzzer/ftfuzzer.cc: Don't set intermediate axis if 1911 bitmap strikes are active. 1912 19132017-03-18 Werner Lemberg <wl@gnu.org> 1914 1915 Improve `make multi'. 1916 1917 * src/autofit/aflatin2.c: Guard file with FT_OPTION_AUTOFIT2. 1918 1919 * src/base/ftmac.c: Guard more parts of the file with FT_MACINTOSH. 1920 1921 * src/psaux/afmparse.c: Guard file with T1_CONFIG_OPTION_NO_AFM. 1922 1923 * src/sfnt/pngshim.c: Guard file with 1924 TT_CONFIG_OPTION_EMBEDDED_BITMAPS also. 1925 1926 * src/sfnt/ttbdf.c: Avoid empty source file. 1927 * src/sfnt/ttpost.c: Guard file with 1928 TT_CONFIG_OPTION_POSTSCRIPT_NAMES. 1929 * src/sfnt/ttsbit.c: Guard file with 1930 TT_CONFIG_OPTION_EMBEDDED_BITMAPS. 1931 1932 * src/truetype/ttgxvar.c, src/truetype/ttinterp.c: Avoid empty 1933 source file. 1934 1935 * src/truetype/ttsubpix.c: Guard file with 1936 TT_USE_BYTECODE_INTERPRETER also. 1937 1938 * src/type1/t1afm.c: Guard file with T1_CONFIG_OPTION_NO_AFM. 1939 1940 * src/autofit/autofit.c, src/base/ftbase.c, src/cache/ftcache.c, 1941 src/cff/cff.c, src/cid/type1cid.c, src/gxvalid/gxvalid.c, 1942 src/pcf/pcf.c, src/pfr/pfr.c, src/psaux/psaux.c, 1943 src/pshinter/pshinter.c, src/psnames/psnames.c, src/raster/raster.c, 1944 src/sfnt/sfnt.c, src/smooth/smooth.c, src/truetype/truetype.c, 1945 src/type1/type1.c, src/type42/type42.c: Remove conditionals; sort 1946 entries. 1947 19482017-03-17 Werner Lemberg <wl@gnu.org> 1949 1950 Fixes for conditional compilation. 1951 1952 * src/autofit/afcjk.c, src/autofit/afindic.c: Include `afcjk.h' 1953 earlier. 1954 1955 * src/sfnt/sfobjs.c (sfnt_init_face): Put `memory' variable into 1956 TT_CONFIG_OPTION_GX_VAR_SUPPORT block. 1957 (sfnt_done_face): Protect some code with 1958 TT_CONFIG_OPTION_GX_VAR_SUPPORT. 1959 1960 * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Remove compiler 1961 warning. 1962 1963 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Put `tmp' variable 1964 into TT_USE_BYTECODE_INTERPRETER block. 1965 1966 (tt_loader_init): Put `error' variable into 1967 TT_USE_BYTECODE_INTERPRETER block. 1968 19692017-03-17 Werner Lemberg <wl@gnu.org> 1970 1971 Fix preprocessor warning. 1972 1973 * devel/ftoption.h, include/freetype/config/ftoption.h: Test whether 1974 TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined before checking its 1975 value. 1976 19772017-03-17 Werner Lemberg <wl@gnu.org> 1978 1979 `make multi' fixes; compiler warnings. 1980 1981 * src/base/ftsnames.c: Include FT_INTERNAL_DEBUG_H. 1982 1983 * src/cff/cffobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include 1984 FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H. 1985 1986 * src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include 1987 FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H. 1988 (get_win_string, get_apple_string): Initialize `result'. 1989 19902017-03-17 Dave Arnold <darnold@adobe.com> 1991 1992 [cff] Fix potential bugs in default NDV for CFF2. 1993 1994 * src/cff/cffload.c (cff_blend_build_vector): Explicitly build blend 1995 vector when `lenNDV' is zero; don't rely on zero-init. 1996 Save `lenNDV' as part of cache key even when `lenNDV' is zero. 1997 19982017-03-17 Dave Arnold <darnold@adobe.com> 1999 2000 [cff] Fix CFF2 stack allocation. 2001 2002 * src/cff/cffparse.c (cff_parser_init) add 1 for operator. 2003 20042017-03-16 Werner Lemberg <wl@gnu.org> 2005 2006 * src/truetype/ttgxvar.c (tt_done_blend): Free `vvar_table'. 2007 2008 Reported as 2009 2010 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=883 2011 20122017-03-15 Werner Lemberg <wl@gnu.org> 2013 2014 Remove clang compiler warnings (#50548). 2015 2016 * include/freetype/internal/tttypes.h (TT_FaceRec): Make 2017 `var_postscript_prefix_len' unsigned. 2018 2019 * src/autofit/afwarp.c (af_warper_compute_line_best): Remove 2020 redundant assignment. 2021 2022 * src/cff/cffload.c (cff_subfont_load): Add casts. 2023 2024 * src/cff/cffparse.c (cff_parse_blend): Remove redundant assignment. 2025 2026 * src/sfnt/sfdriver.c (fmix32, murmur_hash_3_128): Add `static' 2027 keyword. 2028 Add casts. 2029 (fixed2float): Add cast. 2030 (sfnt_get_var_ps_name): Make `p' always initialized. 2031 Add casts. 2032 2033 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Add casts. 2034 20352017-03-15 Werner Lemberg <wl@gnu.org> 2036 2037 [ftfuzzer] Limit number of tested faces and instances. 2038 2039 This is inspired by the discussion in and analysis of 2040 2041 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=859 2042 2043 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Use only 2044 up to 20 face indices. 2045 Use only up to 20 instance indices. 2046 20472017-03-15 Werner Lemberg <wl@gnu.org> 2048 2049 * src/tools/ftfuzzer/ftfuzzer.cc: Improve readability; formatting. 2050 20512017-03-14 Werner Lemberg <wl@gnu.org> 2052 2053 [sfnt] Implement PS names for font instances [3/3]. 2054 2055 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT. 2056 2057 * include/freetype/internal/tttypes.h (TT_FaceRec): New fields 2058 `var_postscript_prefix' and `var_postscript_prefix_len'. 2059 2060 * src/sfnt/sfdriver.c: Include FT_TRUETYPE_IDS_H. 2061 (sfnt_is_alphanumeric): New wrapperfunction for `ft_isalnum'. 2062 (get_win_string, get_apple_string): Remove `const' from return 2063 value. 2064 (MAX_VALUE_DESCRIPTOR_LEN, MAX_PS_NAME_LEN): New macros. 2065 (hexdigits): New array. 2066 (sfnt_get_var_ps_name): New function, implementing Adobe TechNote 2067 5902 to construct a PS name for a variation font instance. 2068 (sfnt_get_ps_name): Call `sfnt_get_var_ps_name' for font instances. 2069 2070 * src/sfnt/sfobjs.c (sfnt_done_face): Updated. 2071 2072 * src/truetype/ttgxvar.c (tt_set_mm_blend): Reset 2073 `face->postscript_name' to trigger recalculation for new instance 2074 parameters. 2075 20762017-03-14 Werner Lemberg <wl@gnu.org> 2077 2078 [sfnt] Implement PS names for font instances [2/3]. 2079 2080 * src/sfnt/sfdriver.c (fix2float) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: 2081 New function to find the shortest representation of a 16.16 2082 fractional number. 2083 20842017-03-14 Werner Lemberg <wl@gnu.org> 2085 2086 [sfnt] Implement PS names for font instances [1/3]. 2087 2088 Add 128bit MurmurHash 3 function. 2089 2090 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT. 2091 2092 * src/sfnt/sfdriver.c (ROTL32): New macro. 2093 (fmix32, murmur_hash_3_128): New functions. 2094 20952017-03-13 Werner Lemberg <wl@gnu.org> 2096 2097 [truetype] Ignore invalid MVAR tags. 2098 2099 Reported as 2100 2101 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=838 2102 2103 * src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit 2104 warning for invalid tags. 2105 (tt_apply_mvar): Ignore invalid tags. 2106 21072017-03-12 Werner Lemberg <wl@gnu.org> 2108 2109 [truetype] Store and use design coordinates also. 2110 2111 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func): 2112 Add `normalizedcoords' argument. 2113 2114 * src/truetype/ttgxvar.h (GX_BlendRec): Add `coords' field to store 2115 the design coordinates of the current instance. 2116 Updated. 2117 2118 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Move functionality to... 2119 (tt_set_mm_blend): ... New function. 2120 Convert data in `normalizedcoords' array to `coords' array on 2121 demand. 2122 (TT_Set_Var_Design): Store argument data in `coords' array. 2123 (TT_Get_Var_Design): Get data from `coords' array. 2124 (tt_get_var_blend): Updated. 2125 (tt_done_blend): Updated. 2126 2127 * src/cff/cffload.c, src/cff/cffload.h (cff_get_var_blend): Updated. 2128 2129 * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated. 2130 2131 * src/cff/cffobjs.c (cff_face_init): Updated. 2132 21332017-03-12 Werner Lemberg <wl@gnu.org> 2134 2135 src/truetype/ttgxvar.[ch]: s/avar_checked/avar_loaded/. 2136 21372017-03-08 Werner Lemberg <wl@gnu.org> 2138 2139 [sfnt] Another fix for buggy variation fonts. 2140 2141 Reported as 2142 2143 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=759 2144 2145 * src/sfnt/sfobjs.c (sfnt_init_face): While setting number of 2146 instances to zero for `CFF' fonts table, ensure that there is no 2147 `CFF2' present also (which gets priority). 2148 21492017-03-07 Werner Lemberg <wl@gnu.org> 2150 2151 [sfnt] Improve handling for buggy variation fonts. 2152 2153 Reported as 2154 2155 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=738 2156 2157 * src/sfnt/sfobjs.c (sfnt_init_face): While setting number of 2158 instances to zero for `CFF' fonts table, ensure that there is no 2159 `glyf' table present also (which gets priority). 2160 21612017-03-06 Werner Lemberg <wl@gnu.org> 2162 2163 [sfnt, truetype] Always provide default instance. 2164 2165 As documented in the OpenType specification, an entry for the 2166 default instance may be omitted in the named instance table. In 2167 particular this means that even if there is no named instance table 2168 in the font we actually do have a named instance, namely the default 2169 instance. 2170 2171 For consistency, we always want the default instance in our list of 2172 named instances. If it is missing, we try to synthesize it. 2173 2174 * src/sfnt/sfobjs.c (sfnt_init_face): Check whether the default 2175 instance is in the table of named instances. Otherwise adjust 2176 number of instances. 2177 2178 * src/truetype/ttgxvar.c: Include FT_TRUETYPE_IDS_H. 2179 (TT_Get_MM_Var): Use `face->root.style_flags' as the number of named 2180 instances. 2181 Sythesize a named instance entry if necessary. 2182 (tt_done_blend): Free `normalized_stylecoords'. 2183 21842017-03-05 Werner Lemberg <wl@gnu.org> 2185 2186 [sfnt] Remove redundant code. 2187 2188 * src/sfnt/sfobjs.c (sfnt_init_face): Remove second test for 2189 `num_instances', which will always succeed. 2190 21912017-03-04 Werner Lemberg <wl@gnu.org> 2192 2193 [sfnt] Add `get_name_id' service. 2194 2195 * include/freetype/internal/sfnt.h (TT_Get_Name_ID_Func): New 2196 typedef. 2197 (SFNT_Interface): Add `get_name_id' field. 2198 (FT_DEFINE_SFNT_INTERFACE): Updated. 2199 2200 * src/sfnt/sfdriver.c (search_name_id): Rename to... 2201 (sfnt_get_name_id): ... this. 2202 (sfnt_get_ps_name, sfnt_interface): Updated. 2203 22042017-03-04 Werner Lemberg <wl@gnu.org> 2205 2206 [truetype] Make `TT_Set_MM_Blend' set named instance index. 2207 2208 * src/truetype/ttgxvar.h (GX_Blend): New array 2209 `normalized_stylecoords'. 2210 2211 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Allocate and fill 2212 `normalized_stylecoords'. 2213 (TT_Set_MM_Blend): Check instance tuple and adjust `face_index' 2214 accordingly. 2215 22162017-03-02 Werner Lemberg <wl@gnu.org> 2217 2218 [truetype] Split off designer/normalized conversion routines. 2219 2220 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Split off conversion 2221 code designer->normalized coordinates to... 2222 (ft_var_to_normalized): ... New function. 2223 (TT_Get_Var_Design): Split off conversion code normalized->designer 2224 coordinates to... 2225 (ft_var_to_design): ... New function. 2226 22272017-02-28 Werner Lemberg <wl@gnu.org> 2228 2229 [sfnt] Further generalize `sfnt_get_ps_name'; report invalid data. 2230 2231 * src/sfnt/sfdriver.c (sfnt_ps_map): New array. 2232 (sfnt_is_postscript): New function. 2233 (char_type_func): New typedef. 2234 (get_win_string, get_apple_string): Add argument to specify 2235 character checking function. 2236 Add argument whether argument checking failures should be reported. 2237 Update callers. 2238 (search_name_id): Fix return value. 2239 22402017-02-23 Werner Lemberg <wl@gnu.org> 2241 2242 [sfnt] Split off another bit of `sfnt_get_ps_name'. 2243 2244 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some 2245 functionality into... 2246 (search_name_id): ... New function. 2247 22482017-02-23 Werner Lemberg <wl@gnu.org> 2249 2250 [sfnt] Modularize `sfnt_get_ps_name'. 2251 2252 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some 2253 functionality into... 2254 (IS_WIN, IS_APPLE): ... New macros. 2255 (get_win_string, get_apple_string): ... New functions. 2256 22572017-02-23 Werner Lemberg <wl@gnu.org> 2258 2259 [truetype] Minor improvement. 2260 2261 * src/truetype/ttgload.c (TT_Process_Simple_Glyph, 2262 load_truetype_glyph): Remove unnecessary tests. 2263 22642017-02-23 Werner Lemberg <wl@gnu.org> 2265 2266 * include/freetype/internal/tttypes.h (TT_Face): s/isCFF2/is_cff2/. 2267 2268 For orthogonality with other structure field names. 2269 2270 Update all users. 2271 22722017-02-22 Alexei Podtelezhnikov <apodtele@gmail.com> 2273 2274 * src/smooth/ftgrays.c (gray_hline): Improve code. 2275 22762017-02-20 Dominik Röttsches <drott@google.com> 2277 2278 Fix some `ttnameid.h' entries (#50313). 2279 2280 * include/freetype/ttnameid.h: 2281 s/TT_MS_LANGID_SPANISH_INTERNATIONAL_SORT/TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT/, 2282 s/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIA/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN/. 2283 22842017-02-20 Werner Lemberg <wl@gnu.org> 2285 2286 [cff] Finish support for `random' operator. 2287 2288 * src/cff/cfftypes.h (CFF_SubFontRec): Add `random' field. 2289 2290 * src/cff/cffobjs.c: Updated. 2291 (cff_driver_init): Initialize random seed value. 2292 2293 * src/cff/cffload.c (cff_random): New function. 2294 (cff_subfont_load): Add `face' argument. 2295 Update all callers. 2296 Initialize random number generator with a proper seed value. 2297 (cff_font_load): Add `face' argument. 2298 Update all callers. 2299 2300 * src/cff/cffload.h: Updated. 2301 2302 * src/cff/cf2intrp.c (CF2_FIXME): Removed. 2303 (cf2_interpT2CharString) <cf2_escRANDOM>: Implement opcode. 2304 2305 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Don't 2306 initialize random seed value. 2307 <cff_op_random>: Use new random seed framework. 2308 23092017-02-20 Werner Lemberg <wl@gnu.org> 2310 2311 [cff] Sanitize `initialRandomSeed'. 2312 2313 * src/cff/cffload.c (cff_load_private_dict): Make 2314 `initial_random_seed' value always positive. 2315 23162017-02-20 Werner Lemberg <wl@gnu.org> 2317 2318 [cff] Introduce `random-seed' property (2/2). 2319 2320 * src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'. 2321 (open_face): Initialize `face->internal->random_seed'. 2322 (FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'. 2323 2324 * src/cff/cffdrivr.c (cff_property_set): Handle `random-seed' 2325 property. 2326 23272017-02-20 Werner Lemberg <wl@gnu.org> 2328 2329 [cff] Introduce `random-seed' property (1/2). 2330 2331 We need this for support of the `random' operator. 2332 2333 * include/freetype/ftcffdrv.h (FT_PARAM_TAG_RANDOM_SEED): New macro. 2334 2335 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New 2336 field `random_seed'. 2337 2338 * src/cff/cffobjs.h (CFF_DriverRec): New field `random_seed'. 2339 23402017-02-17 Werner Lemberg <wl@gnu.org> 2341 2342 Remove clang warnings. 2343 2344 * src/autofit/aflatin.c (af_latin_sort_blue): Add missing `static' 2345 keyword. 2346 2347 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, 2348 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): 2349 Initialize some variables. 2350 23512017-02-16 Nikolaus Waxweiler <madigens@gmail.com> 2352 Werner Lemberg <wl@gnu.org> 2353 2354 Add face property for stem darkening. 2355 2356 * include/freetype/ftautoh.h (FT_PARAM_TAG_STEM_DARKENING): New 2357 macro. 2358 2359 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add 2360 `no_stem_darkening' field. 2361 2362 * src/autofit/afloader.c (af_loader_load_glyph), 2363 src/autofit/afmodule.c (af_property_set): Updated. 2364 2365 * src/base/ftobjs.c: Include FT_AUTOHINTER_H. 2366 (ft_open_face_internal): Updated. 2367 (FT_Face_Properties): Handle FT_PARAM_TAG_STEM_DARKENING. 2368 2369 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Updated. 2370 2371 * src/cff/cffdrivr.c (cff_property_set): Updated. 2372 23732017-02-16 Nikolaus Waxweiler <madigens@gmail.com> 2374 Werner Lemberg <wl@gnu.org> 2375 2376 Add face property for LCD filter weights. 2377 2378 * include/freetype/ftlcdfil.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS, 2379 FT_LCD_FILTER_FIVE_TAPS): New macros. 2380 (FT_LcdFiveTapFilter): New typedef. 2381 2382 * include/freetype/ftobjs.h (FT_Face_InternalRec) 2383 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add `lcd_weights' field. 2384 (FT_Bitmap_LcdFilterFunc): Change third argument to weights array. 2385 (ft_lcd_filter_fir): New prototype. 2386 (FT_LibraryRec): Updated. 2387 2388 * src/base/ftlcdfil.c (_ft_lcd_filter_fir): Renamed to... 2389 (ft_lcd_filter_fir): ... this base function. 2390 Updated. 2391 (_ft_lcd_filter_legacy): Updated. 2392 (FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated. 2393 2394 * src/base/ftobjs.c (ft_open_face_internal): Updated. 2395 (FT_Face_Properties): Handle FT_PARAM_TAG_LCD_FILTER_WEIGHTS. 2396 2397 * src/smooth/ftsmooth.c (ft_smooth_render_generic) 2398 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Handle LCD weights from 2399 `FT_Face_Internal'. 2400 24012017-02-14 Nikolaus Waxweiler <madigens@gmail.com> 2402 Werner Lemberg <wl@gnu.org> 2403 2404 Add new function `FT_Face_Properties'. 2405 2406 This commit provides the framework, to be filled with something 2407 useful in the next commits. 2408 2409 * include/freetype/freetype.h (FT_Face_Properties): Declare. 2410 2411 * src/base/ftobjs.c (FT_Face_Properties): New function. 2412 24132017-02-13 Werner Lemberg <wl@gnu.org> 2414 2415 [autofit] Prevent overlapping blue zones. 2416 2417 Problem reported as 2418 2419 https://github.com/google/fonts/issues/632 2420 2421 The font in question (Nunito) has values 705 and 713 for the 2422 reference and overshoot values, respectively, of the first blue 2423 zone. Blue zone 2, however, has value 710 for both the reference 2424 and overshoot. At 12ppem, reference and overshoot of blue zone 0 2425 becomes 8px, while blue zone 2 becomes 9px. 2426 2427 A peculiarity of this font is that the tops of isolated vertical 2428 stems like `N' have a slight overshoot also. The auto-hinter tries 2429 to find the nearest blue zone using the *original* coordinates. For 2430 vertical stems, this is value 713. For normal horizontal tops like 2431 in character `E', this is value 710. Since value 713 is mapped to 2432 8px but value 710 to 9px, `N' and similar characters are one pixel 2433 higher than `E', which looks very bad. 2434 2435 This commit sanitizes blue zones to avoid such a behaviour. 2436 2437 * src/autofit/aflatin.c (af_latin_sort_blue): New function. 2438 (af_latin_metrics_init_blues): Sort blue values and remove overlaps. 2439 24402017-02-12 Alexei Podtelezhnikov <apodtele@gmail.com> 2441 2442 * src/smooth/ftgrays.c (gray_sweep): Improve code. 2443 24442017-02-06 Werner Lemberg <wl@gnu.org> 2445 2446 [truetype] Implement `VVAR' table support. 2447 2448 * src/truetype/ttgxvar.h (GX_HVarTable): Renamed to... 2449 (GX_HVVarTable): ...This. 2450 (GX_Blend): Add fields for `VVAR' table handling. 2451 Other minor updates. 2452 2453 * src/truetype/ttgxvar.c (ft_var_load_hvar): Renamed to... 2454 (ft_var_load_hvvar): ...This. 2455 Handle VVAR loading also (controlled by an additional parameter). 2456 (tt_hadvance_adjust): Renamed to... 2457 (tt_hvadvance_adjust): ...This. 2458 Handle application of advance height also (controlled by an 2459 additional parameter). 2460 (tt_hadvance_adjust, tt_vadvance_adjust): Wrappers for 2461 `tt_hvadvance_adjust'. 2462 2463 * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated. 2464 24652017-02-05 Werner Lemberg <wl@gnu.org> 2466 2467 [autofit] Use better blue zone characters for lowercase latin. 2468 2469 The number of lowercase characters for computing the top flat blue 2470 zone value was too small (in most cases only `x' and `z'). If one 2471 of the two characters has a large serif, say, it can happen that 2472 FreeType must select between two different values, having a 50% 2473 chance to use the wrong one. As a result, rendering at larger PPEM 2474 values could yield uneven lowercase glyph heights. 2475 2476 Problem reported by Christoph Koeberlin <christoph@koe.berlin>. 2477 2478 * src/autofit/afblue.dat (AF_BLUE_STRING_LATIN_SMALL): Replaced 2479 with... 2480 (AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_STRING_LATIN_SMALL_BOTTOM): 2481 ... New, extended sets. 2482 (AF_BLUE_STRINGSET_LATN): Updated. 2483 2484 * src/autofit/afblue.c, scr/autofit/afblue.h: Regenerated. 2485 24862017-02-04 Werner Lemberg <wl@gnu.org> 2487 2488 Make `freetype-config' a wrapper of `pkg-config' if possible. 2489 2490 Based on ideas taken from 2491 2492 https://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch 2493 https://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch 2494 2495 * builds/unix/freetype-config.in: Rewritten. Use `pkg-config' to 2496 set output variables if program is available. 2497 2498 * docs/CHANGES, docs/freetype-config.1: Updated. 2499 25002017-02-04 Werner Lemberg <wl@gnu.org> 2501 2502 * builds/unix/unix-def.in (freetype-config): Fix permissions. 2503 25042017-02-03 Werner Lemberg <wl@gnu.org> 2505 2506 * src/autofit/afglobal.c (af_face_globals_free): Erase useless code. 2507 25082017-02-03 Werner Lemberg <wl@gnu.org> 2509 2510 * include/freetype/ftgasp.h (FT_GASP_SYMMETRIC_GRIDFIT): Fix value. 2511 2512 Reported by Behdad. 2513 25142017-02-02 Werner Lemberg <wl@gnu.org> 2515 2516 [truetype] Fix MVAR post-action handling. 2517 2518 Reported as 2519 2520 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=509 2521 2522 * src/truetype/ttobjs.c (tt_size_reset): Do nothing for CFF2. This 2523 is important to make `tt_size_reset_iterator' (called in 2524 `tt_apply_mvar') always work. 2525 25262017-02-02 Werner Lemberg <wl@gnu.org> 2527 2528 Make compilation with FT_CONFIG_OPTION_PIC work again. 2529 2530 All code committed here is guarded with `FT_CONFIG_OPTION_PIC'. 2531 2532 * include/freetype/internal/services/svmetric.h 2533 (FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Remove trailing semicolon. 2534 2535 * src/autofit/aflatin.c (af_latin_hints_compute_edges, 2536 af_latin_hint_edges): Provide `globals' variable. 2537 2538 * src/autofit/afloader.c (af_loader_load_glyph): Remove shadowing 2539 variable. 2540 2541 * src/autofit/afmodule.c (AF_SCRIPT_CLASSES_GET, 2542 AF_STYLE_CLASSES_GET): Redefine. 2543 2544 * src/autofit/aftypes.h (AF_DEFINE_WRITING_SYSTEM_CLASS): Fix typo. 2545 2546 * src/cff/cffparse.c (CFF_FIELD_BLEND): Provide it. 2547 2548 * src/cff/cffpic.h (CffModulePIC): Fix typo. 2549 25502017-01-31 Alexei Podtelezhnikov <apodtele@gmail.com> 2551 2552 * src/smooth/ftgrays.c (gray_render_scanline): Improve code. 2553 25542017-01-31 Werner Lemberg <wl@gnu.org> 2555 2556 [cff] Provide metrics variation service interface (#50196). 2557 2558 Only now I've got an OTF with an HVAR table for testing... 2559 2560 The code in `ftmm.c' uses `FT_FACE_LOOKUP_SERVICE' to get the 2561 metrics variations interface. However, this didn't work with 2562 `FT_FACE_FIND_GLOBAL_SERVICE' used in `sfnt_init_face'. 2563 2564 * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H. 2565 (cff_hadvance_adjust, cff_metrics_adjust): Wrapper functions for 2566 metric service functions from the `truetype' module. 2567 (cff_service_metrics_variations): New service. 2568 (cff_services): Updated. 2569 2570 * src/cff/cffpic.h (CFF_SERVICE_METRICS_VAR_GET): New macro. 2571 [FT_CONFIG_OPTION_PIC]: Synchronize code. 2572 2573 * src/sfnt/sfobjs.c (sfnt_init_face): Replace call to 2574 FT_FACE_FIND_GLOBAL_SERVICE with `ft_module_get_service' to always 2575 load the service from the `truetype' module. 2576 25772017-01-31 Werner Lemberg <wl@gnu.org> 2578 2579 Add framework to support services with 9 functions. 2580 2581 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC9): 2582 New macro. 2583 25842017-01-31 Werner Lemberg <wl@gnu.org> 2585 2586 [base] Fix error handing in MM functions. 2587 2588 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, 2589 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): 2590 Implement it. 2591 25922017-01-31 Werner Lemberg <wl@gnu.org> 2593 2594 [truetype] Fix sanity check for `gvar' table (#50184). 2595 2596 * src/truetype/ttgxvar.c (ft_var_load_gvar): There might be missing 2597 variation data for some glyphs. 2598 25992017-01-31 Werner Lemberg <wl@gnu.org> 2600 2601 [autofit] Avoid uninitialized jumps (#50191). 2602 2603 * src/autofit/afcjk.c (af_cjk_metrics_check_digits), 2604 src/autofit/aflatin.c (af_latin_metrics_check_digits): Initialize 2605 `advance'. 2606 26072017-01-27 Werner Lemberg <wl@gnu.org> 2608 2609 s/GB2312/PRC/. 2610 2611 * include/freetype/freetype.h (FT_ENCODING_PRC): New enum value. 2612 (FT_ENCODING_GB2312): Deprecated. 2613 2614 * include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro. 2615 (TT_MS_ID_GB2312): Deprecated. 2616 2617 * src/sfnt/sfobjs.c (sfnt_find_encoding): Updated. 2618 2619 * docs/CHANGES: Updated. 2620 26212017-01-26 Werner Lemberg <wl@gnu.org> 2622 2623 [base] Add `FT_Get_Sfnt_LangTag' function. 2624 2625 * include/freetype/ftsnames.h (FT_SfntLangTag): New structure. 2626 (FT_Get_Sfnt_LangTag): New declaration. 2627 2628 * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New function. 2629 2630 * docs/CHANGES: Updated. 2631 26322017-01-26 Werner Lemberg <wl@gnu.org> 2633 2634 [sfnt] Support `name' table format 1. 2635 2636 * include/freetype/internal/tttypes.h (TT_LangTagRec): New 2637 structure. 2638 (TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'. 2639 2640 * src/sfnt/ttload.c (tt_face_load_name): Add support for language 2641 tags. 2642 Reduce array size of name strings in case of invalid entries. 2643 (tt_face_free_name): Updated. 2644 2645 * docs/CHANGES: Updated. 2646 26472017-01-25 Werner Lemberg <wl@gnu.org> 2648 2649 [sfnt] s/TT_NameEntry/TT_Name/. 2650 2651 * include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed 2652 to... 2653 (TT_NameRec): This. 2654 (TT_NameTableRec): Updated. 2655 2656 * src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated. 2657 2658 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Updated. 2659 2660 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16, 2661 tt_name_entry_ascii_from_other): Renamed to... 2662 (tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This, 2663 respectively. 2664 (TT_NameEntry_ConvertFunc): Renamed to... 2665 (TT_Name_ConvertFunc): This. 2666 (tt_face_get_name): Updated. 2667 2668 * src/sfnt/ttload.c (tt_face_load_name, tt_face_free_name): 2669 Updated. 2670 26712017-01-24 Werner Lemberg <wl@gnu.org> 2672 2673 [sfnt] Fix Postscript name service for symbol fonts. 2674 2675 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0 2676 entries also. 2677 26782017-01-24 Werner Lemberg <wl@gnu.org> 2679 2680 [truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family. 2681 2682 * include/freetype/ftsnames.h 2683 (FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY, 2684 FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros. 2685 (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY, 2686 FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated. 2687 2688 * include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY, 2689 TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros. 2690 (TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY): 2691 Deprecated. 2692 2693 * src/sfnt/sfobjs.c (sfnt_load_face): Updated. 2694 2695 * docs/CHANGES: Updated. 2696 26972017-01-23 Werner Lemberg <wl@gnu.org> 2698 2699 [base] Add `FT_Set_Default_Properties' (#49187). 2700 2701 * include/freetype/ftmodapi.h: Add declaration. 2702 2703 * src/base/ftinit.c (ft_set_default_properties): Renamed to... 2704 (FT_Set_Default_Properties): ... this. 2705 (FT_Init_FreeType): Updated. 2706 2707 * docs/CHANGES: Updated. 2708 27092017-01-23 Werner Lemberg <wl@gnu.org> 2710 2711 [truetype] Minor updates for OpenType 1.8.1. 2712 2713 * src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been 2714 removed from the specification; it is now reserved. 2715 2716 * src/truetype/ttgxvar.c (ft_var_load_mvar): Updated. 2717 (GX_FVar_Head): Remove `countSizePairs'; the corresponding data 2718 field in the `MVAR' table is now reserved. 2719 (fvar_fields): Updated. 2720 27212017-01-23 Werner Lemberg <wl@gnu.org> 2722 2723 [truetype] Avoid segfault for invalid variation data. 2724 2725 * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure 2726 `itemCount' is not zero. 2727 2728 Reported as 2729 2730 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=441 2731 27322017-01-20 Werner Lemberg <wl@gnu.org> 2733 2734 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits. 2735 27362017-01-17 Werner Lemberg <wl@gnu.org> 2737 2738 * include/freetype/ttnameid.h: Updated to OpenType 1.8.1. 2739 2740 (TT_APPLE_ID_FULL_UNICODE): New macro. 2741 2742 (TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC, 2743 TT_MS_LANGID_UPPER_SORBIAN_GERMANY, 2744 TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND, 2745 TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA, 2746 TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG, 2747 TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE, 2748 TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE, 2749 TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE, 2750 TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA, 2751 TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA, 2752 TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New 2753 macros. 2754 2755 (TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value. 2756 2757 (TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN, 2758 TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT, 2759 TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND, 2760 TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE, 2761 TT_MS_LANGID_SETSWANA_SOUTH_AFRICA, 2762 TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA, 2763 TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN, 2764 TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA, 2765 TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA, 2766 TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC, 2767 TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN, 2768 TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA, 2769 TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC, 2770 TT_MS_LANGID_UIGHUR_PRC): New aliases. 2771 2772 Remove commented out code. 2773 2774 (TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND, 2775 TT_NAME_ID_VARIATIONS_PREFIX): New macros. 2776 2777 (HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many 2778 years), use guarded long macros by default and define short versions 2779 as aliases for the long ones. 2780 27812017-01-15 Werner Lemberg <wl@gnu.org> 2782 2783 * src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters 2784 also. 2785 27862017-01-11 Werner Lemberg <wl@gnu.org> 2787 2788 * src/base/ftobjs.c (ft_open_face_internal): Improve tracing. 2789 27902017-01-11 Werner Lemberg <wl@gnu.org> 2791 2792 [truetype] Actually use metrics variation service. 2793 2794 * src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H. 2795 (ft_face_get_mvar_service): New auxiliary function to look up 2796 metrics variation service. 2797 (FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates, 2798 FT_Set_Var_Blend_Coordinates): Call metrics variation service. 2799 2800 * src/truetype/ttobjs.c (tt_face_init): Use metrics variations for 2801 named instances. 2802 28032017-01-11 Werner Lemberg <wl@gnu.org> 2804 2805 [truetype] Provide metrics variation service. 2806 2807 * include/freetype/internal/services/svmetric.h 2808 (FT_Metrics_Adjust_Func): Reduce number of necessary parameters. 2809 2810 * src/truetype/ttgxvar.c: Include FT_LIST_H. 2811 (tt_size_reset_iterator): New auxiliary function for... 2812 (tt_apply_var): New function. 2813 2814 * src/truetype/ttgxvar.h: Updated. 2815 2816 * src/truetype/ttdriver.c (tt_service_metrics_variations): Add 2817 `tt_apply_mvar'. 2818 2819 * include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics 2820 variation service. 2821 28222017-01-11 Werner Lemberg <wl@gnu.org> 2823 2824 [truetype] Parse `MVAR' table. 2825 2826 * src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags. 2827 (GX_Value, GX_MVarTable): New structures. 2828 (GX_Blend): Add it. 2829 2830 * src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE, 2831 GX_GASP_CASE): New macros. 2832 (ft_var_get_value_pointer): New auxiliary function to get a pointer 2833 to a value from various SFNT tables already stored in `TT_Face'. 2834 (ft_var_load_mvar): New function. 2835 (TT_Get_MM_Var): Call it. 2836 (tt_done_blend): Updated. 2837 28382017-01-11 Werner Lemberg <wl@gnu.org> 2839 2840 [truetype] More preparations for MVAR support. 2841 2842 * src/truetype/ttobjs.c (tt_size_reset): Add argument to make 2843 function only recompute ascender, descender, and height. 2844 2845 * src/truetype/ttobjs.h: Updated. 2846 2847 * src/truetype/ttdriver.c (tt_size_select, tt_size_request): 2848 Updated. 2849 28502017-01-09 Werner Lemberg <wl@gnu.org> 2851 2852 [pcf] Disable long family names by default. 2853 2854 * include/freetype/config/ftoption.h 2855 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out. 2856 28572017-01-09 Werner Lemberg <wl@gnu.org> 2858 2859 [pcf] Make long family names configurable. 2860 2861 The change from 2016-09-29 was too radical (except for people using 2862 the openSuSE GNU/Linux distribution). To ameliorate the situation, 2863 PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls 2864 the feature; if set, a new PCF property option 2865 `no-long-family-names' can be used to switch this feature off. 2866 2867 * include/freetype/config/ftoption.h, devel/ftoption.h 2868 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option. 2869 2870 * include/freetype/ftpcfdrv.h: New header file (only containing 2871 comments currently, used for building the documentation). 2872 2873 * include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro. 2874 2875 * src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field. 2876 2877 * src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and 2878 FT_PCF_DRIVER_H. 2879 (pcf_property_set, pcf_property_get): New functions. 2880 (pcf_service_properties): New service. 2881 (pcf_services): Updated. 2882 (pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle 2883 `no_long_family_names'. 2884 2885 * src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names' 2886 and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES. 2887 2888 * docs/CHANGES: Updated. 2889 28902017-01-09 Werner Lemberg <wl@gnu.org> 2891 2892 [pcf] Introduce a driver structure. 2893 2894 To be filled later on with something useful. 2895 2896 * src/pcf/pcf.h (PCF_Driver): New structure. 2897 2898 * src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy 2899 functions. 2900 (pcf_driver_class): Updated. 2901 29022017-01-08 Werner Lemberg <wl@gnu.org> 2903 2904 [truetype] Again some GX code shuffling. 2905 2906 We need this later on for MVAR also. 2907 2908 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing 2909 an item store variation delta into... 2910 (ft_var_get_item_delta): ...new function. 2911 29122017-01-08 Werner Lemberg <wl@gnu.org> 2913 2914 [truetype] Adjust font variation flags for MVAR. 2915 2916 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX): 2917 Remove all flags related to MVAR; replace it with... 2918 (TT_FACE_FLAG_VAR_MVAR): ...this new macro. 2919 (TT_Face): Remove `mvar_support' field (which was still unused). 2920 29212017-01-06 Werner Lemberg <wl@gnu.org> 2922 2923 [truetype] More GX code shuffling. 2924 2925 We need this later on for MVAR also. 2926 2927 * src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item 2928 variation store into... 2929 (ft_var_done_item_variation_store): ...new function. 2930 29312017-01-06 Werner Lemberg <wl@gnu.org> 2932 2933 [truetype] More generalization of GX stuff. 2934 2935 We need this later on for MVAR also. 2936 2937 * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add 2938 parameters for delta-set index mapping and item variation store. 2939 (ft_var_load_item_variation_store): Add parameter for item variation 2940 store. 2941 s/hvarData/varData/. 2942 Move allocation of `hvar_table' to... 2943 (ft_var_load_hvar): ...this function. 2944 Updated. 2945 29462017-01-06 Werner Lemberg <wl@gnu.org> 2947 2948 [truetype] Some GX structure renames for generalization. 2949 2950 We need this later on for MVAR also. 2951 2952 * src/truetype/ttgxvar.h (GX_HVarData): Renamed to... 2953 (GX_ItemVarData): ...this. 2954 (GX_HVarRegion): Renamed to... 2955 (GX_VarRegion): ...this. 2956 (GX_HVStore): Renamed to... 2957 (GX_ItemVarStore): ...this. 2958 (GX_WidthMap): Renamed to... 2959 (GX_DeltaSetIdxMap): ...this. 2960 2961 (GX_HVarTable): Updated. 2962 2963 * src/truetype/ttgxvar.c: Updated. 2964 29652017-01-06 Werner Lemberg <wl@gnu.org> 2966 2967 [truetype] Code shuffling. 2968 2969 * src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of 2970 item variation store and delta set index mapping into... 2971 (ft_var_load_item_variation_store, 2972 ft_var_load_delta_set_index_mapping): ...new functions. 2973 29742017-01-06 Werner Lemberg <wl@gnu.org> 2975 2976 [truetype] Add HVAR access without advance width map. 2977 2978 * src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where 2979 `offsetToAdvanceWidthMapping' is zero. 2980 (tt_hadvance_adjust): Implement direct deltaSet access by glyph 2981 index. 2982 29832017-01-06 Werner Lemberg <wl@gnu.org> 2984 2985 [pcf] Revise driver. 2986 2987 This commit improves tracing and handling of malformed fonts. In 2988 particular, the changes to `pcf_get_properties' fix 2989 2990 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379 2991 2992 * src/pcf/pcfread.c (tableNames): Use long names for better 2993 readability. 2994 (pcf_read_TOC): Allow at most 9 tables. 2995 (pcf_get_properties): Allow at most 256 properties. 2996 Limit strings array length to 256 * (65536 + 1) bytes. 2997 Better tracing. 2998 (pcf_get_metric): Trace metric data. 2999 (pcf_get_metrics): Allow at most 65536 metrics. 3000 Fix comparison of `metrics->ascent' and `metrics->descent' to avoid 3001 potential overflow. 3002 Better tracing. 3003 (pcf_get_bitmaps): Allow at most 65536 bitmaps. 3004 Better tracing. 3005 (pcf_get_encodings, pcf_get_accel): Better tracing. 3006 3007 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details. 3008 These are now shown by `pcf_get_bitmaps'. 3009 30102017-01-04 Werner Lemberg <wl@gnu.org> 3011 3012 * src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format. 3013 30142017-01-04 Werner Lemberg <wl@gnu.org> 3015 3016 [cff] More consistency checks for pure CFFs. 3017 3018 Reported as 3019 3020 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378 3021 3022 * src/cff/cffload.c (cff_font_load): Check element number and size 3023 of Name and Top DICT indices. 3024 30252017-01-04 Werner Lemberg <wl@gnu.org> 3026 3027 [cff, truetype] Minor tracing improvement. 3028 3029 * src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c 3030 (tt_face_init): Indent first tracing message from SFNT driver. 3031 30322017-01-03 Werner Lemberg <wl@gnu.org> 3033 3034 [truetype] Various minor fixes. 3035 3036 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction 3037 size only if we do native hinting. 3038 (TT_Load_Glyph): Trace returned error code. 3039 3040 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace 3041 returned error code. 3042 (tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is 3043 invalid. 3044 30452017-01-03 Werner Lemberg <wl@gnu.org> 3046 3047 [sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid. 3048 3049 These tables are optional. 3050 3051 * src/sfnt/sfobjs.c (sfnt_load_face): Implement it. 3052 30532017-01-03 Werner Lemberg <wl@gnu.org> 3054 3055 * src/cff/cffparse.c (cff_parse_num): Simplify. 3056 30572017-01-03 Werner Lemberg <wl@gnu.org> 3058 3059 Various fixes for clang's undefined behaviour sanitizer. 3060 3061 * src/cff/cffload.c (FT_fdot14ToFixed): Fix casting. 3062 (cff_blend_doBlend): Don't left-shift negative numbers. 3063 Handle 5-byte numbers byte by byte to avoid alignment issues. 3064 3065 * src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by 3066 byte to avoid alignment issues. 3067 3068 * src/cid/cidload (cid_read_subrs): Do nothing if we don't have any 3069 subrs. 3070 3071 * src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing. 3072 3073 * src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around 3074 definition of `ft_get_adobe_glyph_index'. 3075 3076 * src/psnames/pstables.h: Regenerated. 3077 3078 * src/psnames/psmodule.c: Include `pstables.h' twice to get both 3079 declaration and definition. 3080 3081 * src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix 3082 casting. 3083 30842017-01-01 Werner Lemberg <wl@gnu.org> 3085 3086 [cff] Handle multiple `blend' operators in a row correctly. 3087 3088 Reported as 3089 3090 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368 3091 3092 * src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack' 3093 pointers into `subFont->blend_stack' after reallocation. 3094 30952017-01-01 Werner Lemberg <wl@gnu.org> 3096 3097 [sfnt] Return correct number of named instances for TTCs. 3098 3099 Without this patch, requesting information for face index N returned 3100 the data for face index N+1 (or index 0). 3101 3102 * src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index' 3103 for negative `face_instance_index' values. 3104 31052016-12-31 Werner Lemberg <wl@gnu.org> 3106 3107 */*: Use hex numbers for errors in tracing messages. 3108 31092016-12-31 Werner Lemberg <wl@gnu.org> 3110 3111 [truetype] Check axis count in HVAR table. 3112 3113 Reported as 3114 3115 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362 3116 3117 * src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count. 3118 (ft_var_load_avar): Fix tracing message. 3119 3120 3121---------------------------------------------------------------------------- 3122 3123Copyright (C) 2016-2020 by 3124David Turner, Robert Wilhelm, and Werner Lemberg. 3125 3126This file is part of the FreeType project, and may only be used, modified, 3127and distributed under the terms of the FreeType project license, 3128LICENSE.TXT. By continuing to use, modify, or distribute this file you 3129indicate that you have read the license and understand and accept it 3130fully. 3131 3132 3133Local Variables: 3134version-control: never 3135coding: utf-8 3136End: 3137