blob: 3179268ef47e57547f06f6b323fd5b5dcd5d2f85 [file] [log] [blame]
Werner Lemberg29aa9572016-12-08 08:59:34 +010012016-12-08 Werner Lemberg <wl@gnu.org>
2
Werner Lemberg4191b772016-12-08 22:33:46 +01003 Add framework to support services with 8 functions.
4
5 We will need this for CFF variation font support.
6
7 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC8):
8 New macro.
9
102016-12-08 Werner Lemberg <wl@gnu.org>
11
Werner Lemberg29aa9572016-12-08 08:59:34 +010012 [sfnt] Add `get_glyph_name' and `get_name_index' to SFNT interface.
13
14 CFF2 fonts will need access to those two functions.
15
16 * include/freetype/internal/sfnt.h: Include FT_SERVICE_GLYPH_DICT_H.
17 (SFNT_Interface): Add `get_glyph_name' and `get_name_index' members.
18 (FT_DEFINE_SFNT_INTERFACE): Updated.
19
20 * src/sfnt/sfdriver.c (sfnt_get_glyph_name, sfnt_get_name_index):
21 Fix signatures to exactly correspond to the glyph dict service
22 function typedefs.
23 (sfnt_interface): Updated.
24
Dave Arnoldbcae6572016-12-05 22:08:15 +0100252016-12-06 Dave Arnold <darnold@adobe.com>
26
27 Add `FT_Get_Var_Design_Coordinates' function.
28
29 Note that the low-level functions aren't implemented yet.
30
31 * include/freetype/ftmm.h: Declare.
32
33 * include/freetype/internal/services/svmm.h
34 (FT_Get_Var_Design_Func): New typedef.
35 (MultiMasters): New MM service function `get_var_design'.
36 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
37 Update all callers.
38
39 * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
40
41 * src/truetype/ttdriver.c: Updated.
42
43 * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
44 handle `get_var_design' service.
45 * src/truetype/ttgxvar.h: Updated.
46
47 * src/type1/t1driver.c: Updated.
48
49 * src/type1/t1load.c (T1_Get_Var_Design): New dummp function to
50 handle `get_var_design' service.
51 * src/type1/t1load.h: Updated.
52
Werner Lembergc0fae7d2016-12-06 11:13:19 +0100532016-12-06 Werner Lemberg <wl@gnu.org>
54
55 * src/type1/t1load.c (parse_subrs): Fix memory leak.
56
57 The `subrs' keyword might erroneously occur multiple times.
58
59 Reported as
60
61 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
62
Werner Lemberg602be7c2016-12-01 11:36:37 +0100632016-12-01 Werner Lemberg <wl@gnu.org>
64
65 [gzip] Improve building with external zlib (#49673).
66
67 Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
68 the following error.
69
70 ftgzip.c
71 zlib-1.2.8\zlib.h(86): error C2061:
72 syntax error: identifier 'z_const'
73 zlib-1.2.8\zlib.h(94): error C2054:
74 expected '(' to follow 'z_const'
75 zlib-1.2.8\zlib.h(94): error C2085:
76 'msg': not in formal parameter list
77 ...
78 zlib-1.2.8\zlib.h(877): fatal error C1003:
79 error count exceeds 100; stopping compilation
80
81 The error happens because FreeType keeps an own copy of zlib-1.1.4
82 under `src/gzip'. When building `src/gzip/ftgzip.c' with
83 FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
84
85 #include <zlib.h>
86
87 which correctly finds an external `zlib.h', but `zlib.h' itself has
88 a line
89
90 #include "zconf.h"
91
92 which makes Visual Studio 2015 find `src/gzip/zconf.h' while
93 compiling the files in `src/gzip'.
94
95 * src/gzip/zconf.h: Rename to...
96 * src/gzip/ftzconf.h: ... this.
97 * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
98
Oleksandr Chekhovskyi255828c2016-12-01 07:07:22 +0100992016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
100
101 [autofit] Fix Emscripten crash (patch #9180).
102
103 Function calls through pointers must use a matching signature to
104 work on Emscripten, since such calls are dispatched through lookup
105 tables grouped by signature.
106
107 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
108 typedef.
109
Werner Lembergd949a3d2016-11-29 12:09:56 +01001102016-11-29 Werner Lemberg <wl@gnu.org>
111
Werner Lemberg1d28f692016-11-29 18:45:22 +0100112 [smooth] Revert previous commit. Already fixed with 6ca54c64.
113
1142016-11-29 Werner Lemberg <wl@gnu.org>
115
Werner Lembergd949a3d2016-11-29 12:09:56 +0100116 [smooth] Avoid conditional jump on uninitialized value (#49711).
117
118 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
119
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +01001202016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
121
122 [autofit] Code shuffling.
123
124 Also improve some comments and remove unused code.
125
126 No functional change.
127
128 * src/autofit/afloader.c (af_loader_load_g): Merged with...
129 (af_loader_load_glyph): ...this function.
130 Split off emboldening code into...
131 (af_loader_embolden_glyph_in_slot): ... this function.
132
Werner Lemberg78150502016-11-17 12:00:20 +01001332016-11-17 Werner Lemberg <wl@gnu.org>
134
135 Better support of LLP64 systems with gcc (and clang).
136
137 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
138
139 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
140 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
141
Werner Lembergdd26e3d2016-11-10 12:03:32 +01001422016-11-10 Werner Lemberg <wl@gnu.org>
143
144 Fix `lcd_weights' array size.
145
146 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
147
148 Reported by Nikolaus.
149
Werner Lemberg565db952016-11-06 12:33:51 +01001502016-11-06 Werner Lemberg <wl@gnu.org>
151
Werner Lemberge1ee5472016-11-06 12:39:05 +0100152 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
153
1542016-11-06 Werner Lemberg <wl@gnu.org>
155
Werner Lemberg1c6fd992016-11-06 12:37:55 +0100156 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
157
158 It's unavoidable to call the PNG engine, but to get the metrics it
159 is sufficient to read the PNG image's header only.
160
161 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
162 allocation of the glyph slot.
163 * src/sfnt/pngshim.h: Updated.
164 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
165 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
166
1672016-11-06 Werner Lemberg <wl@gnu.org>
168
Werner Lemberg565db952016-11-06 12:33:51 +0100169 [sfnt] Speed up `sbix' lookup.
170
171 This also fixes a bug introduced in 2016-10-01 which prevents
172 display of embedded bitmap fonts that use the `sbix' format.
173
174 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
175 offset also in `ebdt_size' and `ebdt_start', respectively. This
176 makes the test for an embedded bitmap data table succeed for this
177 format.
178
179 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
180 `ebdt_size' and `ebdt_start'
181 (tt_face_load_sbix_image): Ditto.
182
Werner Lemberg37e193e2016-11-06 12:32:51 +01001832016-11-06 Seigo Nonaka <nona@google.com>
184 Werner Lemberg <wl@gnu.org>
185
186 Introduce a way of quickly retrieving (embedded) bitmap metrics.
187
188 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
189 until the user calls `FT_Render_Glyph'. However, it always
190 allocates memory for bitmaps and copies or decodes the contents of a
191 bitmap glyph, which can be quite slow for PNG data.
192
193 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
194 macro.
195
196 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
197 FT_LOAD_BITMAP_METRICS_ONLY is used.
198
199 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
200 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
201 the glyph slot.
202 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
203 tt_face_load_sbit_image): Updated.
204
205 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
206 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
207
208 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
209 argument to control allocation of the glyph slot.
210 * src/pfr/pfrobjs (pfr_slot_load): Updated.
211
212 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
213
214 * docs/CHANGES: Updated.
215
2162016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +0100217
218 Synchronize with gnulib (#49448).
219
220 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
221 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
222 current version of `intprops.h'.
223 Other minor synchronization to reduce code differences between the
224 three files.
225
Behdad Esfahbodb72858c2016-11-03 06:41:00 +01002262016-11-03 Behdad Esfahbod <behdad@behdad.org>
227
228 [truetype] Clamp variation requests to valid range.
229
230 This is required by OpenType 1.8; it also avoids rounding surprises.
231
232 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
233 outside of the allowed range to always stay within the range instead
234 of producing an error.
235
Werner Lemberg328d6842016-10-29 00:18:56 +02002362016-10-29 Werner Lemberg <wl@gnu.org>
237
238 [truetype] Remove clang warnings.
239
240 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
241 loop counter handling.
242
243 * src/truetype/ttinterp.c: Updated.
244 (Ins_SCANTYPE): Use signed constant.
245 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
246
Werner Lembergddf38722016-10-27 07:27:27 +02002472016-10-27 Werner Lemberg <wl@gnu.org>
248
249 [truetype] Fix commit from 2014-11-24.
250
251 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
252
253 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
254 logic.
255
Werner Lemberg56140902016-10-26 08:10:59 +02002562016-10-26 Werner Lemberg <wl@gnu.org>
257
Werner Lemberg9c45ac32016-10-26 16:00:00 +0200258 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
259
260 * include/freetype/ftmm.h: Declare.
261
262 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
263 New typedef.
264 (MultiMasters): New MM service function `get_mm_blend'.
265 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
266 Update all callers.
267
268 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
269 FT_Get_Var_Blend_Coordinates): Implement.
270
271 * src/truetype/ttdriver.c: Updated.
272
273 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
274 `get_mm_blend' service.
275 * src/truetype/ttgxvar.h: Updated.
276
277 * src/type1/t1driver.c: Updated.
278
279 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
280 `get_mm_blend' service.
281 * src/type1/t1load.h: Updated.
282
283 * docs/CHANGES: Document.
284
2852016-10-26 Werner Lemberg <wl@gnu.org>
286
Werner Lemberg56140902016-10-26 08:10:59 +0200287 * src/type1/t1load.c (parse_subrs): Fix limit check.
288
289 Reported as
290
291 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
292
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -04002932016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
294
295 [cff] Correct cmap format reporting (#24819).
296
297 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
298 charmap instead of guessing its format and language.
299
Werner Lemberg57741402016-10-22 18:34:48 +02003002016-10-22 Werner Lemberg <wl@gnu.org>
301
Werner Lemberg50816742016-10-22 19:16:08 +0200302 [truetype] Fix SCANTYPE instruction (#49394).
303
304 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
305
3062016-10-22 Werner Lemberg <wl@gnu.org>
307
Werner Lemberg57741402016-10-22 18:34:48 +0200308 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
309
310 * src/sfnt/ttpost.c (load_format_25): We need at least a single
311 table entry.
312
Werner Lemberg7eeaf982016-10-14 08:58:17 +02003132016-10-14 Werner Lemberg <wl@gnu.org>
314
315 [truetype] Fix handling of `cvar' table data.
316
317 Reported as
318
319 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
320
321 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
322 indices.
323
Werner Lemberg92281222016-10-11 07:12:12 +02003242016-10-11 Werner Lemberg <wl@gnu.org>
325
Werner Lemberg9c54d122016-10-11 08:57:55 +0200326 [psaux] Fix handling of invalid flex subrs.
327
328 Problem reported as
329
330 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
331
332 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
333 <op_callothersubr>: Set `flex_state' after error checking.
334
3352016-10-11 Werner Lemberg <wl@gnu.org>
336
Werner Lemberg92281222016-10-11 07:12:12 +0200337 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
338
Werner Lembergd61b0422016-10-08 19:20:33 +02003392016-10-08 Werner Lemberg <wl@gnu.org>
340
Werner Lemberg6b354932016-10-08 20:26:59 +0200341 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
342
3432016-10-08 Werner Lemberg <wl@gnu.org>
344
Werner Lembergd61b0422016-10-08 19:20:33 +0200345 [cid] Fix parsing of subr offsets.
346
347 Bug introduced 2016-05-16.
348
349 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
350
Werner Lembergfcc0ee82016-10-01 20:12:25 +02003512016-10-01 Werner Lemberg <wl@gnu.org>
352
353 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
354
355 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
356 a bitmap data table.
357
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -04003582016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
359
360 [smooth] Remove impossibility.
361
362 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
363 (gray_convert_glyph): Remove impossible condition and clean up.
364
Werner Lembergbf902392016-09-29 13:04:46 +02003652016-09-29 Werner Lemberg <wl@gnu.org>
366
Werner Lemberg35764872016-09-30 08:11:52 +0200367 [pcf] Enrich family name with foundry name and glyph width info.
368
369 This is a very old patch from openSuSE (from 2006, submitted to
370 FreeType in 2011) that I forgot to apply.
371
372 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
373
374 Prepend the foundry name plus a space to the family name. There are
375 many fonts just called `Fixed' which look completely different, and
376 which have nothing to do with each other. When selecting `Fixed' in
377 KDE or Gnome one gets results that appear rather random, the style
378 changes often if one changes the size and one cannot select some
379 fonts at all.
380
381 We also check whether we have `wide' characters; all put together,
382 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
383
384 * src/pcf/pcfread.c (pcf_load_font): Implement it.
385
386 * docs/CHANGES: Document it.
387
3882016-09-29 Werner Lemberg <wl@gnu.org>
389
Werner Lemberg71b617d2016-09-29 19:53:39 +0200390 [ftfuzzer] Speed up.
391
392 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
393 check for embedded bitmaps if we have a non-default instance.
394
3952016-09-29 Werner Lemberg <wl@gnu.org>
396
Werner Lemberg2067c692016-09-29 19:49:07 +0200397 [truetype] Disallow bitmap strokes for non-default instances.
398
399 Also speed up access of default instances if GX variations are
400 active.
401
402 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
403 `is_default_instance' member.
404
405 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
406 `is_default_instance'.
407
408 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
409 load_truetype_glyph): Add test for default instance.
410 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
411
412 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
413 `is_default_instance'.
414
4152016-09-29 Werner Lemberg <wl@gnu.org>
416
Werner Lembergbf902392016-09-29 13:04:46 +0200417 [truetype] Clean up `TT_Face' structure.
418
419 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
420 fields `horz_metrics' and `vert_metrics'.
421 Update documentation.
422
423 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
424
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02004252016-09-28 Werner Lemberg <wl@gnu.org>
426
Werner Lemberg45cad2e2016-09-28 19:10:52 +0200427 More FT_ZERO usage.
428
429 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
430 s/ft_memset/FT_MEM_ZERO/.
431
432 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
433 s/ft_memset/FT_ARRAY_ZERO/.
434
435 * src/raster/ftraster.c (FT_ZERO): Define.
436 (ft_black_new): Use it.
437 * src/raster/ftrend1.c (ft_raster1_get_cbox):
438 s/FT_MEM_ZERO/FT_ZERO/.
439
440 * src/smooth/ftgrays.c (FT_ZERO): Define.
441 (gray_raster_new): Use it.
442 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
443 s/FT_MEM_ZERO/FT_ZERO/.
444
4452016-09-28 Werner Lemberg <wl@gnu.org>
446
Werner Lemberg2ecf89b2016-09-28 19:06:21 +0200447 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
448
Werner Lemberg0d945922016-09-27 08:44:31 +02004492016-09-27 Werner Lemberg <wl@gnu.org>
450
Werner Lemberga3e2c832016-09-27 21:42:02 +0200451 [truetype] Trace number of executed opcodes.
452
453 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
454
4552016-09-27 Werner Lemberg <wl@gnu.org>
456
Werner Lemberge27b8a52016-09-27 21:21:01 +0200457 [truetype] Speed up `TT_Load_Glyph'.
458
459 This avoids additional calls to `tt_face_lookup_table' for the
460 `glyf' table, which can be expensive.
461
462 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
463 `glyf_offset' field to ...
464 (TT_FaceRec): ... this structure.
465 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
466 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +0200467 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +0200468
4692016-09-27 Werner Lemberg <wl@gnu.org>
470
Werner Lemberg0d945922016-09-27 08:44:31 +0200471 [truetype] Introduce dynamic limits for some bytecode opcodes.
472
473 This speeds up FreeType's handling of malformed fonts.
474
475 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
476 of twilight points, the total number of negative jumps, and the
477 total number of loops in LOOPCALL opcodes. The values are based on
478 the number of points and entries in the CVT table.
479 (Ins_JMPR): Test negative jump counter.
480 (Ins_LOOPCALL): Test loopcall counter.
481
482 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
483
484 * docs/CHANGES: Updated.
485
Werner Lembergd11e8b62016-09-25 15:32:04 +02004862016-09-25 Werner Lemberg <wl@gnu.org>
487
Werner Lemberga7649632016-09-25 16:29:05 +0200488 [truetype] Sanitize only last entry of `loca' table.
489
490 Without this patch, a loca sequence like `0 100000 0 100000 ...',
491 where value 100000 is larger than the `glyf' table size, makes
492 FreeType handle the whole `glyf' table as a single glyph again and
493 again, which is certainly invalid (and can be very slow, too).
494
495 * src/truetype/ttpload.c (tt_face_get_location): Implement.
496 Improve tracing messages.
497
4982016-09-25 Werner Lemberg <wl@gnu.org>
499
Werner Lembergd11e8b62016-09-25 15:32:04 +0200500 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
501
Werner Lemberg2f2e73c2016-09-24 22:42:58 +02005022016-09-24 Werner Lemberg <wl@gnu.org>
503
504 [autofit] Tracing fixes.
505
506 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
507 functions only if we actually do tracing.
508
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -04005092016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
510
511 [smooth] Reduce divisions in the line renderer.
512
513 We don't need some divisions if a line segments stays within a single
514 row or a single column of pixels.
515
516 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
517 conditional.
518
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -04005192016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
520
521 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
522
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -04005232016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
524
525 [smooth] Another tiny speed-up.
526
527 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
528 (gray_record_cell): ... this function.
529
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04005302016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
531
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -0400532 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
533
5342016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
535
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -0400536 [smooth] Fix valgrind warning and reoptimize.
537
538 The algorithm calls `gray_set_cell' at the start of each new contour
539 or when the contours cross the cell boundaries. Double-checking for
540 that is wasteful.
541
542 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
543 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
544
Werner Lemberge421a0b2016-09-10 08:02:30 +02005452016-09-10 Werner Lemberg <wl@gnu.org>
546
547 [sfnt] Fix previous commit.
548
549 Problems reported as
550
551 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
552
553 We now map the strike index right before accessing the physical
554 data, not earlier.
555
556 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
557 after creating the map so that...
558
559 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
560 can be used before and after setting up `sbit_strike_map'.
561 (tt_face_set_sbit_strike): Revert change.
562 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
563
564 * src/truetype/ttdriver.c (tt_size_select): Revert change.
565
Werner Lembergd609b7c2016-09-09 22:11:07 +02005662016-09-09 Werner Lemberg <wl@gnu.org>
567
Werner Lembergdeb26152016-09-09 22:13:33 +0200568 [ftfuzzer] Minor improvements.
569
570 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
571 invalid strikes.
572 Use better values for call to `FT_Set_Char_Size'.
573
5742016-09-09 Werner Lemberg <wl@gnu.org>
575
Werner Lembergd609b7c2016-09-09 22:11:07 +0200576 [sfnt] Don't provide (completely) broken strike data.
577
578 FreeType tries to sanitize strike header data; we now reject
579 completely broken ones.
580
581 * include/freetype/internal/tttypes.h (TT_FaceRec): New
582 `sbit_strike_map' array pointer.
583
584 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
585 width or height would be zero.
586 Add tracing message in case of error.
587
588 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
589 only using (more or less) valid strike header data for
590 FT_Face's `available_sizes' array.
591 (sfnt_done_face): Updated.
592
593 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
594 `sbit_strike_map'.
595 (tt_face_load_strike_metrics): Improve tracing.
596
597 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
598
Werner Lemberg9749f262016-09-08 07:51:03 +02005992016-09-08 Werner Lemberg <wl@gnu.org>
600
Werner Lembergd2d59682016-09-08 09:04:32 +0200601 * Version 2.7 released.
602 =======================
603
604
605 Tag sources with `VER-2-7'.
606
607 * docs/VERSION.TXT: Add entry for version 2.7.
608
609 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
610 builds/windows/vc2005/index.html,
611 builds/windows/vc2008/freetype.vcproj,
612 builds/windows/vc2008/index.html,
613 builds/windows/vc2010/freetype.vcxproj,
614 builds/windows/vc2010/index.html,
615 builds/windows/visualc/freetype.dsp,
616 builds/windows/visualc/freetype.vcproj,
617 builds/windows/visualc/index.html,
618 builds/windows/visualce/freetype.dsp,
619 builds/windows/visualce/freetype.vcproj,
620 builds/windows/visualce/index.html,
621 builds/wince/vc2005-ce/freetype.vcproj,
622 builds/wince/vc2005-ce/index.html,
623 builds/wince/vc2008-ce/freetype.vcproj,
624 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
625
626 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
627 (FREETYPE_PATCH): Set to 0.
628
629 * builds/unix/configure.raw (version_info): Set to 18:6:12.
630 * CMakeLists.txt (VERSION_MINOR): Set to 7.
631 (VERSION_PATCH): Set to 0.
632
633 * docs/CHANGES: Updated.
634
6352016-09-08 Werner Lemberg <wl@gnu.org>
636
Werner Lembergb1e7b682016-09-08 08:56:34 +0200637 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
638
639 This fixes the `multi' build.
640
6412016-09-08 Werner Lemberg <wl@gnu.org>
642
Werner Lemberg9749f262016-09-08 07:51:03 +0200643 [autofit] Another improvement to Armenian support.
644
645 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
646
647 * src/autofit/afscript.h: Use better suited characters to derive
648 default stem widths.
649
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04006502016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
651
652 * src/smooth/ftgrays.c (gray_hline): Microptimize.
653
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04006542016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
655
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -0400656 [smooth] Operate in absolute bitmap coordinates.
657
658 Simpler bitmap addressing improves performance by 1.5%.
659
660 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
661 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
662 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
663
6642016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
665
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -0400666 [smooth] Improve contour start (take 2).
667
668 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
669 instead of...
670 (gray_start_cell): ... this function, which is removed.
671 (gray_convert_glyph): Make initial y-coordinate invalid.
672
Werner Lembergebbb8b22016-09-06 16:28:57 +02006732016-09-06 Werner Lemberg <wl@gnu.org>
674
675 [type1] MM fonts support exactly zero named instances (#48748).
676
677 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
678
Jonathan Kewa15133e2016-09-06 06:33:36 +02006792016-09-06 Jonathan Kew <jfkthame@gmail.com>
680
681 [cff] Fix uninitialized memory.
682
683 Problem reported as
684
685 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
686
687 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
688 array to handle a `get' opcode without a previous `put'.
689
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04006902016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
691
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -0400692 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
693
6942016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
695
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -0400696 [smooth] Improve contour start.
697
698 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
699 instead of...
700 (gray_start_cell): ... this function, which is removed.
701
Werner Lembergc9adf1a2016-09-05 07:32:37 +02007022016-09-05 Werner Lemberg <wl@gnu.org>
703
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +0200704 [cff] Fix memory initialization.
705
706 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
707 variants of FreeType's memory allocation macros don't do zeroing.
708
7092016-09-05 Werner Lemberg <wl@gnu.org>
710
Werner Lemberg1c8bb632016-09-05 08:13:42 +0200711 [ftrandom] Minor improvements.
712
713 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
714 500.
715
716 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
717 directories to ...
718 (INCLUDES): ... this new variable.
719 (LDFLAGS): New variable.
720 (ftrandom.o, ftrandom): Updated.
721
7222016-09-05 Werner Lemberg <wl@gnu.org>
723
Werner Lembergc9adf1a2016-09-05 07:32:37 +0200724 [autofit] Improve Armenian support.
725
726 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
727
728 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
729 selection of characters.
730
731 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
732
Werner Lemberg4b28f6a2016-09-04 19:05:45 +02007332016-09-04 Werner Lemberg <wl@gnu.org>
734
735 [ftrandom] Improve Makefile.
736
737 It now supports both a normal build (`./configure && make') and a
738 development build (`make devel').
739
740 * src/tools/ftrandom/Makefile (VPATH): Set it so that
741 `libfreetype.a' gets searched in both `objs' (for the development
742 build) and `objs/.libs' (for a normal build which uses libtool).
743 (LIBS): Add missing libraries.
744 (ftrandom.o): New rule.
745 (ftrandom): Use automatic variables.
746
Werner Lembergf0fa7a62016-09-03 06:33:36 +02007472016-09-03 Werner Lemberg <wl@gnu.org>
748
Werner Lemberg4e659d72016-09-03 18:14:00 +0200749 [truetype] More fixes for handling of GX deltas.
750
751 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
752
753 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
754 sanity test for glyph variation array header size.
755 Always set stream position before reading packed x and y deltas.
756 Fix thinko w.r.t. `localpoints' array.
757
7582016-09-03 Werner Lemberg <wl@gnu.org>
759
Werner Lembergca8e98d2016-09-03 13:06:16 +0200760 [ftrandom] Various fixes.
761
762 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
763 default.
764 (error_fraction): Make it of type `double' to work as advertized –
765 this was completely broken.
766 Update all related code.
767 (error_count, fcnt): Make it unsigned to fix compiler warnings.
768 Update all related code.
769 (fontlist): Change `len' member to `long' to fix compiler warnings.
770 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
771 unused variables.
772 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
773 (ExecuteTest): Ditto.
774 Call `FT_Done_FreeType'.
775 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
776 int'.
777 (usage): Improve output.
778 (main): Fix compiler warnings.
779
780 * src/tools/ftrandom/README: Updated.
781
7822016-09-03 Werner Lemberg <wl@gnu.org>
783
Werner Lembergb98dfda2016-09-03 08:20:31 +0200784 [base] Avoid negative bitmap stroke dimensions (#48985).
785
786 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
787 actually successful. For example, this can fail for value
788 -32768 if the type is `signed short'. If there are problems,
789 disable the stroke.
790
7912016-09-03 Werner Lemberg <wl@gnu.org>
792
Werner Lembergf0fa7a62016-09-03 06:33:36 +0200793 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
794
795 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
796
Werner Lembergd8ef7262016-09-02 23:27:50 +02007972016-09-02 Werner Lemberg <wl@gnu.org>
798
Werner Lembergd87bb912016-09-02 23:56:27 +0200799 [unix] Enable 64bit support in file system access (#48962).
800
801 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
802
8032016-09-02 Werner Lemberg <wl@gnu.org>
804
Werner Lembergd8ef7262016-09-02 23:27:50 +0200805 [sfnt] Avoid left shift of negative value (#48980).
806
807 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
808 constant.
809
8102016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +0200811
812 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
813
Werner Lemberg7a13dc02016-09-02 08:24:01 +02008142016-09-02 Werner Lemberg <wl@gnu.org>
815
816 Some preparations for the next release.
817
818 * include/freetype/config/ftoption.h
819 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
820
821 * docs/CHANGES: Updated.
822
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04008232016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
824
825 [smooth] Simplify span rendering more.
826
827 It turns out that there is significant cost associated with `FT_Span'
828 creation and calls to `gray_render_span' because it happerns so
829 frequently. This removes these steps from our internal use but leaves
830 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
831 is about 5%.
832
833 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
834 migrated to...
835 (gray_hline): ... here.
836
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04008372016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
838
839 [smooth] Streamline pixmap drawing a bit more.
840
841 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -0400842 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -0400843
844 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
845
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -04008462016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
847
848 [smooth] Streamline pixmap drawing.
849
850 This gives 2% speed improvement in rendering simple glyphs.
851
852 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
853 pointer to its bottom-left and pitch to be used in...
854 (gray_TWorker): ... here.
855 (gray_render_span): Move pixmap flow check from here...
856 (gray_raster_render): .. to here.
857
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -04008582016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
859
860 [smooth] Reduce stack of band boundaries.
861
862 * src/smooth/ftgrays.c (gray_TBand): Removed.
863 (gray_convert_glyph): Updated to stack band boundaries concisely.
864
Werner Lembergf3e71ba2016-08-26 10:31:30 +02008652016-08-26 Werner Lemberg <wl@gnu.org>
866
Werner Lemberg57aa8392016-08-26 11:59:50 +0200867 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
868
8692016-08-26 Werner Lemberg <wl@gnu.org>
870
Werner Lemberg3c61a2f2016-08-26 11:50:09 +0200871 [cid] Fix commit from 2016-05-16.
872
873 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
874
8752016-08-26 Werner Lemberg <wl@gnu.org>
876
Werner Lembergf3e71ba2016-08-26 10:31:30 +0200877 [sfnt] Cache offset and size to bitmap data table.
878
879 This commit avoids `EBDT' and friends being looked up again and
880 again while loading a single embedded bitmap.
881
882 * include/freetype/internal/tttypes.h (TT_FaceRec)
883 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
884 `ebdt_size'.
885
886 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
887 (tt_face_load_sbit): ... this function; also store the table size
888 and offset.
889
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04008902016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
891
892 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
893
Werner Lemberga660e3d2016-08-26 00:23:27 +02008942016-08-26 Werner Lemberg <wl@gnu.org>
895
896 [type1] Fix heap buffer overflow.
897
898 Reported as
899
900 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
901
902 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
903 contain glyph names.
904
Werner Lemberg327f2e32016-08-25 12:46:08 +02009052016-08-25 Werner Lemberg <wl@gnu.org>
906
Werner Lemberg69ce9732016-08-25 19:49:52 +0200907 [sfnt] Fix previous commit (#48901).
908
909 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
910
9112016-08-25 Werner Lemberg <wl@gnu.org>
912
Werner Lembergacd18792016-08-25 17:12:46 +0200913 [sfnt] Speed up handling of invalid format 4 cmaps.
914
915 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
916 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
917
9182016-08-25 Werner Lemberg <wl@gnu.org>
919
Werner Lemberg327f2e32016-08-25 12:46:08 +0200920 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
921
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04009222016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
923
924 [smooth] Simplify span rendering.
925
926 This removes unnecessary complexity of span merging and buffering.
927 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -0400928 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -0400929
930 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
931 (gray_TWorker): Remove span buffer and related fields.
932 (gray_sweep, gray_hline): Updated.
933
934 * include/freetype/ftimage.h: Remove documentation note about
935 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
936
Werner Lembergcf4224a2016-08-16 06:44:23 +02009372016-08-16 Werner Lemberg <wl@gnu.org>
938
Werner Lemberga4c2a312016-08-22 19:32:34 +0200939 [truetype] Fix `MPS' instruction.
940
941 According to Greg Hitchcock, MPS in DWrite really returns the point
942 size.
943
944 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
945
946 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
947
948 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
949 member.
950
951 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
952 (Ins_MPS): Fix instruction.
953
9542016-08-16 Werner Lemberg <wl@gnu.org>
955
Werner Lemberg8521ad92016-08-16 13:44:38 +0200956 [lzw] Optimize last commit.
957
958 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
959 conditional clause.
960
9612016-08-16 Werner Lemberg <wl@gnu.org>
962
Werner Lemberg548f68d2016-08-16 09:46:40 +0200963 [lzw] Avoid invalid left shift.
964
Werner Lemberg6df68332016-08-16 09:50:07 +0200965 Reported as
966
967 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
968
Werner Lemberg548f68d2016-08-16 09:46:40 +0200969 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
970
9712016-08-16 Werner Lemberg <wl@gnu.org>
972
Werner Lemberg8d7b9192016-08-16 08:07:58 +0200973 [lzw] Avoid buffer overrun.
974
975 Reported as
976
977 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
978
979 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
980 underflow.
981
9822016-08-16 Werner Lemberg <wl@gnu.org>
983
Werner Lembergcf4224a2016-08-16 06:44:23 +0200984 [truetype] Fix compiler warning.
985
986 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
987
Werner Lemberg248f5622016-08-13 06:53:53 +02009882016-08-13 Werner Lemberg <wl@gnu.org>
989
990 [winfonts] Avoid zero bitmap width and height.
991
992 Reported as
993
994 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
995
996 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
997 (FNT_Load_Glyph): Check for zero pitch.
998
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02009992016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1000
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -04001001 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
1002
10032016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1004
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -04001005 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
1006
10072016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1008
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02001009 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
1010
Peter Klotz3b37bfc2016-08-10 22:38:08 -040010112016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
1012
1013 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
1014
Werner Lemberg5224aae2016-08-10 19:47:29 +020010152016-08-10 Werner Lemberg <wl@gnu.org>
1016
1017 [sfnt] Use correct type for `italicAngle' field (#48732).
1018
1019 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
1020
Werner Lemberg53059f92016-08-07 09:01:33 +020010212016-08-06 Jon Spencer <jon@jonspencer.ca>
1022
1023 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
1024
1025 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
1026 advance value from the font table and then scales it by the
1027 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
1028 set that value for bitmap fonts and the advance gets scaled to zero.
1029
1030 Taken from
1031
1032 https://github.com/behdad/harfbuzz/issues/252
1033
1034 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
1035 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
1036
10372016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +02001038
1039 [truetype] Fix GX variation handling of composites.
1040
1041 * src/truetype/ttgload.c (load_truetype_glyph)
1042 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
1043
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -040010442016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1045
1046 [smooth] Minor refactoring.
1047
1048 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
1049 Updated.
1050
Werner Lembergfae4ec02016-07-29 06:43:32 +020010512016-07-29 Werner Lemberg <wl@gnu.org>
1052
1053 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
1054
1055 Since 2016-05-16 we detect infinite recursion directly.
1056
1057 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
1058 `maxComponentDepth'.
1059 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
1060 `maxComponentDepth' is not valid. Instead, simply adjust its value
1061 and emit a tracing message.
1062
Werner Lembergd9c7f5a2016-07-26 20:20:27 +020010632016-07-26 Werner Lemberg <wl@gnu.org>
1064
1065 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
1066
1067 No functional change.
1068
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +020010692016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
1070
1071 [truetype] Record the end of IDEFs.
1072
1073 To match the logic in FDEF. The value of the end is only used for
1074 bound-checking in `Ins_JMPR', so it may not have been obvious that
1075 it was not recorded. Tested (as part of Font Validator 2.0) all the
1076 fonts on Fedora and did not see any change.
1077
1078 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
1079
Werner Lemberge69f34b2016-07-19 07:06:19 +020010802016-07-19 Werner Lemberg <wl@gnu.org>
1081
Werner Lemberg7f631052016-07-19 21:35:58 +02001082 [truetype] Sanitizer fix, second try.
1083
1084 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1085 tests and use only one slot more.
1086
10872016-07-19 Werner Lemberg <wl@gnu.org>
1088
Werner Lemberge69f34b2016-07-19 07:06:19 +02001089 [truetype] Sanitizer fix.
1090
1091 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
1092 to fix nested loops.
1093
Werner Lemberga3b70d72016-07-18 06:23:36 +020010942016-07-18 Werner Lemberg <wl@gnu.org>
1095
1096 [truetype] Make GETDATA work only for GX fonts.
1097
1098 * src/truetype/ttinterp.c (opcode_name): Updated.
1099 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
1100 (TT_RunIns): Updated.
1101
11022016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +02001103
Werner Lemberg8c930132016-07-17 22:40:31 +02001104 [truetype] Add support for Apple's
1105
1106 GETDATA[], opcode 0x92
1107
1108 bytecode instruction. It always returns 17, and we have absolutely
1109 no idea what it is good for...
1110
1111 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
1112 (Ins_GETDATA): New function.
1113 (TT_RunIns): Add it.
1114
11152016-07-16 Werner Lemberg <wl@gnu.org>
1116
Werner Lemberge0843602016-07-16 18:46:28 +02001117 [truetype] Add bytecode support for GX variation fonts.
1118
1119 This commit implements undocumented (but confirmed) stuff from
1120 Apple's old bytecode engine.
1121
1122 GETVARIATION[], opcode 0x91
1123 This opcode pushes normalized variation coordinates for all axes
1124 onto the stack (in 2.14 format). Coordinate of first axis gets
1125 pushed first.
1126
1127 GETINFO[], selector bit 3
1128 If GX variation support is enabled, bit 10 of the result is set
1129 to 1.
1130
1131 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
1132 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
1133 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
1134 bit 3, checking support for variation glyph hinting.
1135 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
1136 to implement opcode 0x91.
1137 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
1138
11392016-07-16 Werner Lemberg <wl@gnu.org>
1140
Werner Lemberg32a32062016-07-16 16:39:26 +02001141 [truetype] Fix GETINFO bytecode instruction.
1142
1143 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
1144 stretching information.
1145
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020011462016-07-16 Behdad Esfahbod <behdad@behdad.org>
1147
1148 [truetype] Make all glyphs in `Zycon' GX font work.
1149
1150 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1151 tests.
1152
Werner Lemberga3b61252016-07-16 08:16:16 +020011532016-07-16 Werner Lemberg <wl@gnu.org>
1154
1155 [truetype] Fix GX delta tracing.
1156
1157 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
1158 relative point movements.
1159
11602016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02001161
1162 [truetype] More fixes for GX.
1163
1164 This finally fixes the rendering of the cyclist and the lizard in
1165 the `Zycon' font.
1166
1167 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
1168 index is always cumulative.
1169
1170 (tt_handle_deltas): Rename to...
1171 (tt_interpolate_deltas): ... This.
1172 Add new parameter for output point array.
1173 Update caller.
1174
1175 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
1176 the intermediate results of `tt_interpolate_deltas' that are to be
1177 added to `outline->points'.
1178
Werner Lembergaafff572016-07-16 06:41:39 +020011792016-07-15 Werner Lemberg <wl@gnu.org>
1180
1181 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
1182
1183 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
1184
1185 Reported by Alexei.
1186
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020011872016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
1188
1189 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
1190
1191 Problem reported by Hin-Tak Leung.
1192
Werner Lemberg894c0222016-07-15 10:23:11 +020011932016-07-15 Werner Lemberg <wl@gnu.org>
1194
Werner Lemberg1831e6f2016-07-15 10:35:32 +02001195 [autofit] Update and improve segment and edge tracing.
1196
1197 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
1198 `delta' also.
1199 Don't show first point of segment as a replacement for `pos'; this
1200 is (a) misleading, since the difference to `pos' can be almost
1201 arbitrarily large in corner cases, and (b) it is better to have all
1202 segment data in font units instead of a single value given in output
1203 space coordinates.
1204 Improve layout.
1205 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
1206 values for convenience.
1207 Improve layout.
1208
12092016-07-15 Werner Lemberg <wl@gnu.org>
1210
Werner Lemberg894c0222016-07-15 10:23:11 +02001211 [autofit] For edges, reject segments wider than 1px (#41334).
1212
1213 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
1214
1215 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
1216 `delta'.
1217 (af_latin_hints_compute_edges): Reject segments with a delta larger
1218 than 0.5px.
1219
Werner Lemberg631e2182016-07-14 06:25:05 +020012202016-07-14 Werner Lemberg <wl@gnu.org>
1221
Werner Lembergff655432016-07-14 15:01:55 +02001222 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
1223
12242016-07-14 Werner Lemberg <wl@gnu.org>
1225
Werner Lembergee3f36f2016-07-14 10:25:20 +02001226 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
1227
1228 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
1229
12302016-07-14 Werner Lemberg <wl@gnu.org>
1231
Werner Lemberg631e2182016-07-14 06:25:05 +02001232 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
1233
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020012342016-07-14 Behdad Esfahbod <behdad@behdad.org>
1235
1236 [truetype] Fix gxvar delta interpolation.
1237
1238 The coordinates of the base font should be used for interpolation
1239 purposes, NOT the current points (i.e., the result of accumulation
1240 of previous deltas).
1241
1242 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
1243 `points_org' before looping over all tuples.
1244
Werner Lembergf6aa0892013-05-10 07:58:47 +02001245
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001246----------------------------------------------------------------------------
1247
Werner Lemberg8160b202016-09-08 08:42:10 +02001248Copyright 2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001249David Turner, Robert Wilhelm, and Werner Lemberg.
1250
1251This file is part of the FreeType project, and may only be used, modified,
1252and distributed under the terms of the FreeType project license,
1253LICENSE.TXT. By continuing to use, modify, or distribute this file you
1254indicate that you have read the license and understand and accept it
1255fully.
1256
1257
1258Local Variables:
1259version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00001260coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001261End: