blob: ea323f3f4389d13d23eedb867998c02553adc8ca [file] [log] [blame]
Werner Lembergd0d7ee02015-08-14 14:30:58 +020012015-08-14 Andreas Enge <andreas.enge@inria.fr>
2
3 * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261).
4
Werner Lemberg14d6b5d2015-08-13 15:22:17 +020052015-08-13 Werner Lemberg <wl@gnu.org>
6
7 [truetype] Introduce named instance access to GX fonts.
8
9 For functions querying a face, bits 16-30 of the face index can hold
10 the named instance index if we have a GX font. The indices start
11 with value 1; value 0 indicates font access without GX variation
12 data.
13
14 * include/freetype/freetype.h (FT_FaceRec): Update documentation.
15 * include/freetype/internal/sfnt.h: Ditto.
16
17 * src/sfnt/sfobjs.c (sfnt_init_face)
18 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and
19 do argument checks.
20 (sfnt_load_face): Updated.
21
22 * src/truetype/ttobjs.c (tt_face_init)
23 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting
24 the style name.
25
26 * src/base/ftobjs.c (open_face_from_buffer,
27 open_face_PS_from_sfnt_stream): Updated.
28 * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated.
29 * src/cff/cffload.c (cff_font_load): Updated.
30
31 * src/cff/cffobjs.c (cff_face_init): Make function exit early for
32 pure CFF fonts if `font_index < 0'.
33 Updated.
34
35 * src/cid/cidobjs.c (cid_face_init): Updated.
36 * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
37 * src/pfr/pfrobjs.c (pfr_face_init): Updated.
38 * src/type1/t1objs.c (T1_Face_Init): Updated.
39 * src/type42/t42objs.c (T42_Face_Init): Updated.
40 * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
41 Updated.
42
43 * docs/CHANGES: Updated.
44
Alexei Podtelezhnikov4a466862015-08-12 23:45:40 -0400452015-08-12 Alexei Podtelezhnikov <apodtele@gmail.com>
46
47 [type1,cff,cid] Streamline font matrix application.
48
49 * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only
50 if font matrix is not trivial.
51 * src/cff/cffgload.c (cff_slot_load): Ditto.
52 * sff/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the
53 entire outline.
54
Werner Lemberg7ebe6ac2015-08-11 06:47:25 +0200552015-08-11 Werner Lemberg <wl@gnu.org>
56
57 [builds/unix] Minor.
58
59 * builds/unix/configure.raw:
60 s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
61 similarly named uppercase variables.
62
Alexei Podtelezhnikova37da212015-08-10 23:05:02 -0400632015-08-10 Alexei Podtelezhnikov <apodtele@gmail.com>
64
65 [type1,cid,type42] Minor improvements.
66
67 * src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only
68 when necessary. Refresh comments.
69 * src/cid/cidload.c (cid_parse_font_matrix): Ditto.
70 * src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments.
71
Werner Lemberge5f44692015-08-08 07:45:03 +0200722015-08-08 Werner Lemberg <wl@gnu.org>
73
Werner Lembergbd75a512015-08-08 08:39:45 +020074 [type42] Fix glyph access.
75
76 This is a severe bug: We've missed one level of indirection, as
77 described in the Type 42 specification. As a result, ftview
78 sometimes showed incorrect glyphs for given glyph names, and even
79 displayed `error 0x0006' (invalid argument!) in case the number of
80 glyph indices differed between the Type 42 font and the embedded
81 TTF.
82
83 Apparently, noone ever noticed it; this shows how much Type 42 fonts
84 are in use...
85
86 * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
87 to embedded TTF's glyph index.
88
892015-08-08 Werner Lemberg <wl@gnu.org>
90
Werner Lemberge5f44692015-08-08 07:45:03 +020091 [type42] Minor clean-up.
92
93 * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
94 variable.
95
Alexei Podtelezhnikovfd705122015-08-06 21:49:08 -0400962015-08-06 Alexei Podtelezhnikov <apodtele@gmail.com>
97
98 [type42] Parse FontMatrix according to specifications.
99
100 * src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix
101 does not need scaling by 1000. Units_per_EM are taken from the
102 embedded TrueType.
103
Werner Lembergff406e22015-08-06 07:34:50 +02001042015-08-06 Werner Lemberg <wl@gnu.org>
105
106 [autofit] Improve Arabic hinting.
107
108 Problem reported by Titus Nemeth <tn@tntypography.eu> (by using
109 ttfautohint).
110
111 * src/autofit/afblue.dat: Add neutral blue zone for the tatweel
112 character.
113
114 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
115
Alexei Podtelezhnikov98e8e992015-08-06 00:06:14 -04001162015-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
117
118 [truetype] Clean up types.
119
120 * src/truetype/ttobjs.c (TT_Size): Move declaration from here.
121 * include/freetype/internal/tttypes.h (TT_Size): ... to here.
122 (TT_LoaderRec): Switch to appropriate types for `face' and `size'.
123 * src/truetype/ttgload.c: Remove corresponding type casts.
124 * src/truetype/ttsubpix.c: Ditto.
125
Werner Lemberg15e2a4f2015-08-05 21:53:50 +02001262015-08-05 Werner Lemberg <wl@gnu.org>
127
128 [autofit] Improve recognition of flat vs. rounded segments.
129
130 Lower the flatness threshold from upem/8 to upem/14, making the
131 auto-hinter accept shorter elements.
132
133 Synchronize flat/round stem selection algorithm with blue zone code.
134
135 * src/autofit/aflatin.c (FLAT_THRESHOLD): New macro.
136 (af_latin_metrics_init_blues): Use it.
137 (af_latin_hints_compute_segments): Collect information on maximum
138 and minimum coordinates of `on' points; use this to add a constraint
139 for the flat/round decision similar to
140 `af_latin_metrics_init_blues'.
141
Werner Lembergeb22ef22015-08-04 06:50:04 +02001422015-08-04 Werner Lemberg <wl@gnu.org>
143
144 Another left-shift bug (#45681).
145
146 * src/base/ftobjs.c (IsMacBinary): Only accept positive values for
147 `dlen'.
148
Alexei Podtelezhnikov7e6c3212015-08-03 23:26:13 -04001492015-08-03 Alexei Podtelezhnikov <apodtele@gmail.com>
150
151 [base] Fix `ft_corner_orientation'.
152
153 Remove casting from `FT_Long' to `FT_Int' that might change the sign
154 of the return value and make it faster too.
155
156 * src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay
157 with 32-bit arithmetic when safe. Use plain math on 64-bit systems.
158 * src/pshinter/pshalgo.c: Remove old unused code.
159
Werner Lembergca6a5cf2015-08-03 08:51:18 +02001602015-08-03 Werner Lemberg <wl@gnu.org>
161
Werner Lemberg8dfc7602015-08-03 12:23:30 +0200162 * src/truetype/ttgload.c (load_truetype_glyph)
163 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs
164 having a depth greater than 1.
165
1662015-08-03 Werner Lemberg <wl@gnu.org>
167
Werner Lembergca6a5cf2015-08-03 08:51:18 +0200168 Fix typo in clang bug from 2015-07-31 (#45678).
169
170 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality.
171
Werner Lemberg70e9d812015-08-02 09:42:12 +02001722015-08-02 Werner Lemberg <wl@gnu.org>
173
Werner Lemberga82c45d2015-08-02 18:35:49 +0200174 * CMakeLists.txt: Improve shared library support.
175
176 Based on a patch from John Cary <cary@txcorp.com>.
177
1782015-08-02 Werner Lemberg <wl@gnu.org>
179
Werner Lemberg682c2712015-08-02 15:46:26 +0200180 * builds/unix/freetype-config.in (enable_shared): Remove. Unused.
181
1822015-08-02 Werner Lemberg <wl@gnu.org>
183
Werner Lemberg70e9d812015-08-02 09:42:12 +0200184 Fix more invalid left-shifts.
185
186 * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication,
187 not left-shift.
188
189 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
190 tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication,
191 not left-shift.
192
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +02001932015-07-31 Werner Lemberg <wl@gnu.org>
194
Werner Lemberg6343ba22015-08-01 07:53:48 +0200195 Fix some bugs found by clang's `-fsanitize=undefined' (#45661).
196
197 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept
198 positive values from header.
199 Check overflow.
200
201 * src/base/ftoutln.c (SCALED): Correctly handle left-shift of
202 negative values.
203
204 * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified,
205 _bdf_clear_glyph_modified): Use unsigned long constant.
206
207 * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't
208 left-shift values that can be negative.
209
210 * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't
211 left-shift values that can be negative.
212
213 * src/raster/ftraster.c (SCALED): Correctly handle left-shift of
214 negative values.
215
216 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift
217 values that can be negative.
218
219 * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
220 compute_glyph_metrics, load_sbit_image): Don't left-shift values
221 that can be negative.
222
2232015-07-31 Werner Lemberg <wl@gnu.org>
224
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +0200225 Define FT_LONG_MAX.
226
227 * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro.
228 * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it.
229
2302015-07-28 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov2b07a5a2015-07-28 23:14:30 -0400231
232 * src/base/ftcalc.c (FT_Vector_NormLen): Clarify.
233
Werner Lemberg5d1b8ab2015-07-31 21:49:07 +02002342015-07-27 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikove8b186e2015-07-27 23:22:34 -0400235
236 * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions.
237
Matthias Clasenb650dfb2015-07-26 21:08:34 +02002382015-07-26 Matthias Clasen <matthias.clasen@gmail.com>
239
240 [cff] Don't use `hmtx' table for LSB (#45520).
241
242 * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance
243 width only. Bug introduced 2015-04-10.
244
Werner Lembergf9be5672015-07-09 15:10:31 +02002452015-07-09 Werner Lemberg <wl@gnu.org>
246
247 Better support of user-supplied C++ namespaces.
248
249 See
250
251 http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html
252
253 for a rationale.
254
255 * src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h,
256 src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h,
257 src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h
258 (FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose
259 header files that contain FT_{BEGIN,END}_HEADER macros by
260 themselves.
261
262 * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
263 FT_CONFIG_STANDARD_LIBRARY_H earlier.
264
265 * src/truetype/ttpic.h: Include FT_INTERNL_PIC_H.
266
Werner Lemberg1cdac102015-07-07 14:04:44 +02002672015-07-07 Werner Lemberg <wl@gnu.org>
268
269 [sfnt] Make `tt_face_get_name' member of the SFNT interface.
270
271 * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New
272 prototype.
273 (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'.
274
275 * src/sfnt/sfdriver.c (sfnt_interface): Updated.
276
277 * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'.
278 * src/sfnt/sfobjs.h: Add prototype for it.
279
Werner Lembergeb1bba92015-06-30 09:46:39 +02002802015-06-30 Werner Lemberg <wl@gnu.org>
281
282 Fix some clang compiler warnings.
283
284 * src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c
285 (cf2_interpT2CharString), src/truetype/ttgload.c
286 (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas),
287 src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues.
288
Alexei Podtelezhnikov884e4e62015-06-29 22:32:05 -04002892015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
290
Alexei Podtelezhnikov5aaabb42015-06-29 22:46:54 -0400291 [truetype] Speed up bytecode interpreter.
292
293 * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'.
294
2952015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
296
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -0400297 [base] Speed up emboldening.
298
Werner Lembergeb1bba92015-06-30 09:46:39 +0200299 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use
300 `FT_Vector_NormLen'.
Alexei Podtelezhnikov9ef02bd2015-06-29 22:39:10 -0400301
3022015-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
303
Alexei Podtelezhnikov884e4e62015-06-29 22:32:05 -0400304 [base] Implement fast vector normalization.
305
306 The function uses Newton's iterations instead of dividing vector
307 components by its length, which needs a square root. This is,
308 literally, a bit less accurate but a lot faster.
309
310 * src/base/ftcalc.c (FT_Vector_NormLen): New function.
311
Werner Lemberg22479ca2015-06-28 10:26:33 +02003122015-06-28 Werner Lemberg <wl@gnu.org>
313
Werner Lemberg7cdc77f2015-06-28 11:40:02 +0200314 * CMakeLists.txt: Always create `ftconfig.h'.
315
316 For non-UNIX builds, the file stays unmodified. However, it's
317 better to have the main configuration files at the same place
318 regardless of the OS.
319
3202015-06-28 Werner Lemberg <wl@gnu.org>
321
Werner Lemberg2c89e2c2015-06-28 11:06:47 +0200322 * CMakeLists.txt: Improve MSVC support (#43737).
323
3242015-06-28 Werner Lemberg <wl@gnu.org>
325
Werner Lemberg52c9b1a2015-06-28 11:03:10 +0200326 [cmake] Check for libraries and create `ftoption.h'.
327
328 * builds/FindHarfBuzz.cmake: New file, taken from
329
330 https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake
331
332 * CMakeLists.Txt: Add path to local cmake modules.
333 Find dependencies for zlib, bzip2, libpng, and harfbuzz.
334 Create `ftoption.h' file.
335 Set up include and linker stuff for libraries.
336
3372015-06-28 Werner Lemberg <wl@gnu.org>
338
Werner Lemberg97b757d2015-06-28 10:42:47 +0200339 * CMakeLists.txt: Fix creation of `ftconfig.h'.
340 Check for UNIX header files using `check_include_file'.
341 Set up correct header include directories.
342
3432015-06-28 Werner Lemberg <wl@gnu.org>
344
Werner Lemberg22479ca2015-06-28 10:26:33 +0200345 * CMakeLists.txt: Disallow in-source builds.
346
Werner Lemberg802f6a92015-06-27 07:12:42 +02003472015-06-27 Werner Lemberg <wl@gnu.org>
348
349 * src/tools/docmaker/utils.py (check_output): Add missing `\n'.
350
Werner Lemberg94c79c22015-06-26 06:46:59 +02003512015-06-26 Werner Lemberg <wl@gnu.org>
352
Werner Lemberg802f6a92015-06-27 07:12:42 +0200353 * CMakeLists.txt: Select platform-dependent `ftdebug.c'.
Werner Lemberg94c79c22015-06-26 06:46:59 +0200354
Werner Lemberg392cf222015-06-25 13:04:57 +02003552015-06-25 Werner Lemberg <wl@gnu.org>
356
Werner Lemberg68222dd2015-06-25 16:38:11 +0200357 * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'.
358 Additionally, do this for UNIX only.
359
3602015-06-25 Werner Lemberg <wl@gnu.org>
361
Werner Lemberg5ef5a4f2015-06-25 15:45:13 +0200362 * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'.
363
3642015-06-25 Werner Lemberg <wl@gnu.org>
365
Werner Lemberg392cf222015-06-25 13:04:57 +0200366 Another adjustment to header locations.
367
368 This change is a result of a discussion thread on freetype-devel
369
370 http://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html
371
372 Re-introduce the `freetype2' subdirectory for all FreeType header
373 files after installation, and rename the `freetype2' subdirectory in
374 the git repository to `freetype'.
375
376 * include/freetype2: Renamed to...
377 * include/freetype: This.
378
379 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
380 PRIVATE_HEADERS): Updated.
381 Update creation of `ftconfig.h'.
382 Install generated `ftconfig.h'.
383
384 * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
385
386 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
387 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
388 builds/unix/freetype2.in: Updated.
389
390 * builds/unix/freetype-config.in: Updated.
391 * builds/unix/configure.raw: Don't check for `rmdir'.
392 * builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable
393 according to the autoconf info manual.
394 * builds/unix/install.mk (install, uninstall,
395 distclean_project_unix): Update and simplify.
396
397 * builds/wince/*, builds/windows/*: Updated.
398
399 * devel/ft2build.h, include/ft2build.h: Updated.
400
401 * include/freetype2/config/ftheader.h,
402 include/freetype2/internal/ftserv.h,
403 include/freetype2/internal/internal.h: Update all header file
404 macros.
405
406 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
407
408 * docs/*: Updated.
409
Werner Lemberg1982a882015-06-26 06:52:34 +02004102015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
411
412 * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp.
413
4142015-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
415
416 * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.
417
Werner Lemberg59312682015-06-23 09:24:48 +02004182015-06-23 Werner Lemberg <wl@gnu.org>
419
420 s/TYPEOF/FT_TYPEOF/ (#45376).
421
422 * builds/unix/ftconfig.in, builds/vms/ftconfig.in,
423 include/freetype2/config/ftconfig.h,
424 include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it.
425
Werner Lemberg8502c982015-06-22 06:35:23 +02004262015-06-22 Werner Lemberg <wl@gnu.org>
427
428 Fix Savannah bug #45097.
429
430 We no longer `pollute' the namespace of possible header file names;
431 instead we move `ft2build.h' up by one level so that it gets
432 installed in the default include directory (e.g.,
433 /usr/local/include). After this commit, only `ft2build.h' stays in
434 the compiler's include path.
435
436 No visible changes for the user who follows the standard FreeType
437 header inclusion rules.
438
439 * include/*: Move to ...
440 * include/freetype2/*: This directory, except `ft2build.h'.
441
442 * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
443 PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
444
445 * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
446 (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
447 builds/unix/install.mk (install, uninstall),
448 builds/unix/freetype2.in: Updated.
449
450 * builds/unix/freetype-config.in: Updated.
451 Emit -I directory only if it is not `/usr/include'.
452
453 * builds/wince/*, builds/windows/*: Updated.
454
455 * devel/ft2build.h, include/ft2build.h: Updated.
456
457 * include/freetype2/config/ftheader.h,
458 include/freetype2/internal/ftserv.h,
459 include/freetype2/internal/internal.h: Update all header file
460 macros.
461
462 * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
463
Werner Lemberg31d97df2015-06-21 19:12:12 +02004642015-06-21 Werner Lemberg <wl@gnu.org>
465
466 Make Jam support work again.
467
468 This is just very basic stuff and just a little bit tested on
469 GNU/Linux only. I won't delve into this since I'm not a Jam user.
470
471 * Jamfile: Call `HDRMACRO' for `ftserv.h' also.
472 (DEFINES): Replace with...
473 (CCFLAGS): ... this.
474
475 * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is
476 already handled in the top-level Jamfile.
477
478 * src/autofit/Jamfile (DEFINES): Replace with...
479 (CCFLAGS): ... this.
480 (_sources): Add missing files.
481
482 * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no
483 longer contains macro header definitions.
484
485 * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile,
486 src/truetype/Jamfile (_sources): Add missing files.
487
Werner Lemberg1a147ac2015-06-16 10:20:07 +02004882015-06-16 Werner Lemberg <wl@gnu.org>
489
490 Fix Savannah bug #45326.
491
492 * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate
493 definitions.
494
Werner Lemberge1862302015-06-07 16:11:18 +02004952015-06-07 Werner Lemberg <wl@gnu.org>
496
497 * Version 2.6 released.
498 =======================
499
500
501 Tag sources with `VER-2-6'.
502
503 * docs/VERSION.DLL: Update documentation and bump version number to
504 2.6.
505
506 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
507 builds/windows/vc2005/index.html,
508 builds/windows/vc2008/freetype.vcproj,
509 builds/windows/vc2008/index.html,
510 builds/windows/vc2010/freetype.vcxproj,
511 builds/windows/vc2010/index.html,
512 builds/windows/visualc/freetype.dsp,
513 builds/windows/visualc/freetype.vcproj,
514 builds/windows/visualc/index.html,
515 builds/windows/visualce/freetype.dsp,
516 builds/windows/visualce/freetype.vcproj,
517 builds/windows/visualce/index.html,
518 builds/wince/vc2005-ce/freetype.vcproj,
519 builds/wince/vc2005-ce/index.html,
520 builds/wince/vc2008-ce/freetype.vcproj,
521 builds/wince/vc2008-ce/index.html: s/2.5.5/2.6/, s/255/26/.
522
523 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6.
524 (FREETYPE_PATCH): Set to 0.
525
526 * builds/unix/configure.raw (version_info): Set to 18:0:12.
527 * CMakeLists.txt (VERSION_MINOR): Set to 0.
528 (VERSION_PATCH): Set to 6.
529
530 * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add
531 declarations for dumping functions.
532
533 * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler.
534
535 * builds/toplevel.mk: Use `freetype.mk's code to compute the version
536 string.
537 Don't include a zero patch level in version string.
538 * builds/freetype.mk: Remove code for computing the version string.
539
Ashish Azad472119a2015-06-06 05:45:17 +02005402015-06-06 Ashish Azad <ashish.azad@samsung.com>
541
542 Fix Savannah bug #45260.
543
544 * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo.
545
Werner Lemberg75534a02015-06-03 00:54:09 +02005462015-06-03 Werner Lemberg <wl@gnu.org>
547
548 [truetype] Fix memory leak.
549
550 Problem reported by Grissiom <chaos.proton@gmail.com>; in
551
552 http://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html
553
554 there is an example code to trigger the bug.
555
556 * src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size'
557 data before allocating again. Bug most probably introduced four
558 years ago in version 2.4.3.
559
5602015-06-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg54d04282015-06-01 12:12:06 +0200561
Werner Lembergd1ade6d2015-06-02 11:44:52 +0200562 [raster] Add more tracing.
563
564 * src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define.
565 (Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span,
566 Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls.
567
5682015-06-01 Werner Lemberg <wl@gnu.org>
569
Werner Lemberg54d04282015-06-01 12:12:06 +0200570 [truetype] While tracing opcodes, show code position and stack.
571
572 * src/truetype/ttinterp.c: Change all existing TRACE7 calls to
573 TRACE6.
574 (opcode_name): Add string lengths.
575 (TT_RunIns): Implement display of code position and stack.
576
Werner Lembergcdee7d12015-05-31 11:54:42 +02005772015-05-31 Werner Lemberg <wl@gnu.org>
578
Werner Lemberge9df4e42015-05-31 12:21:34 +0200579 [truetype] In GX, make private point numbers work correctly.
580
581 This is completely missing in Apple's documentation: If a `gvar'
582 tuple uses private point numbers (this is, deltas are specified for
583 some points only), the uncovered points must be interpolated for
584 this tuple similar to the IUP bytecode instruction. Examples that
585 need this functionality are glyphs `Oslash' and `Q' in Skia.ttf.
586
587 * src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate,
588 tt_handle_deltas): New functions.
589 (TT_Vary_Get_Glyph_Deltas): Renamed to...
590 (TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the
591 points and does no longer return an array of deltas.
592 Add tracing information.
593 Call `tt_handle_deltas' to interpolate missing deltas.
594 Also fix a minor memory leak in case of error.
595
596 * src/truetype/ttgxvar.h: Updated.
597
598 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
599 load_truetype_glyph): Updated.
600
6012015-05-31 Werner Lemberg <wl@gnu.org>
602
Werner Lemberg9845c1d2015-05-31 11:57:31 +0200603 [truetype] In GX, make intermediate tuplets work at extrema.
604
605 * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition.
606
6072015-05-31 Werner Lemberg <wl@gnu.org>
608
Werner Lembergcdee7d12015-05-31 11:54:42 +0200609 [truetype] Add tracing information to GX code.
610
611 * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
612 ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend,
613 TT_Set_Var_Design, tt_face_vary_cvt): Do it.
614
Werner Lemberg366b2ea2015-05-28 10:58:40 +02006152015-05-28 Werner Lemberg <wl@gnu.org>
616
617 * src/tools/apinames.c (names_dump): Fix invalid reference.
618
619 Problem reported by Guzman Mosqueda, Jose R
620 <jose.r.guzman.mosqueda@intel.com>.
621
Werner Lemberga5e1f6f2015-05-24 23:29:23 +02006222015-05-24 Werner Lemberg <wl@gnu.org>
623
624 [truetype] Fix commit from 2015-05-22.
625
626 * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code
627 with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'.
628
629 Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.
630
Werner Lembergbb435da2015-05-23 07:21:25 +02006312015-05-23 Werner Lemberg <wl@gnu.org>
632
Werner Lemberg7f099482015-05-24 09:50:24 +0200633 [truetype] Fix return values of GETINFO bytecode instruction.
634
635 * src/truetype/ttinterp.h (TT_ExecContextRec): New fields
636 `vertical_lcd' and `gray_cleartype'.
637
638 * src/truetype/ttgload.c (tt_loader_init): Initialize new fields.
639 Change `symmetrical smoothing' to TRUE, since FreeType produces
640 exactly this.
641
642 * src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit
643 values for symmetrical smoothing, namely 11/18.
644 Handle bits for vertical LCD subpixels (8/15) and Gray ClearType
645 (12/19).
646
6472015-05-23 Werner Lemberg <wl@gnu.org>
648
Werner Lembergbb435da2015-05-23 07:21:25 +0200649 [truetype] Minor.
650
651 * src/truetype/ttinterp.h (TT_ExecContext):
652 s/subpixel/subpixel_hinting.
653
654 * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated.
655
6562015-05-22 Werner Lemberg <wl@gnu.org>
Werner Lemberg790b8df2015-05-20 12:33:40 +0200657
Werner Lembergc61cad82015-05-22 22:02:15 +0200658 [truetype] Support selector index 3 of the INSTCTRL instruction.
659
660 This flag activates `native ClearType hinting', disabling backwards
661 compatibility mode as described in Greg Hitchcocks whitepaper. In
662 other words, it enables unrestricted functionality of all TrueType
663 instructions in ClearType.
664
665 * src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks'
666 unconditionally.
667 (tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of
668 `GS.instruct_control' is active.
669
670 * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3.
671 (Ins_GETINFO): Updated.
672
673 * docs/CHANGES: Document it.
674
6752015-05-20 Werner Lemberg <wl@gnu.org>
676
Werner Lemberg790b8df2015-05-20 12:33:40 +0200677 [truetype] Minor.
678
679 * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod'
680 argument.
681
Werner Lemberg0a6b6ff2015-05-17 22:54:48 +02006822015-05-17 Werner Lemberg <wl@gnu.org>
683
684 [truetype] Fix loading of composite glyphs.
685
686 * src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the
687 ARGS_ARE_XY_VALUES flag is not set, handle argument values as
688 unsigned. I trust `ttx' (which has exactly such code) that it does
689 the right thing here...
690
691 The reason that noone has ever noticed this bug is probably the fact
692 that point-aligned subglyphs are rare, as are subglyphs with a
693 number of points in the range [128;255], which is quite large (or
694 even in the range [32768;65535], which is extremely unlikely).
695
Chris Liddelld65bf722015-05-12 07:16:46 +02006962015-05-12 Chris Liddell <chris.liddell@artifex.com>
697
Chris Liddella87fb8c2015-05-12 07:27:35 +0200698 [cff] Make the `*curveto' operators more tolerant.
699
700 * src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes
701 `vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate,
702 pulling values off the stack until the stack is exhausted.
703 Implicitly the stack must be a multiple (or for subtly different
704 behaviour) a multiple plus a specific number of extra values deep.
705 If that's not the case, enforce it (as the old code did).
706
7072015-05-12 Chris Liddell <chris.liddell@artifex.com>
708
Chris Liddelld65bf722015-05-12 07:16:46 +0200709 [cff] fix incremental interface with new cff code.
710
711 * src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental
712 interface to retrieve glyph data for a SEAC, it be left to the
713 incremental interface callback to apply the encoding to raw
714 character index (as it was in the previous code).
715
Alexei Podtelezhnikov40914952015-04-29 21:57:30 -04007162015-04-29 Alexei Podtelezhnikov <apodtele@gmail.com>
717
718 [autofit] Speed up IUP.
719
720 * src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to
721 the same position from true interpolation, use `scale' to reduce
722 divisions.
723
Werner Lemberg3cc076d2015-04-28 09:16:27 +02007242015-04-28 Werner Lemberg <wl@gnu.org>
725
726 [cff] Use `name' table for PS name if we have a SFNT-CFF.
727
728 This follows the OpenType 1.7 specification. See
729
730 http://tug.org/pipermail/tex-live/2015-April/036634.html
731
732 for a discussion.
733
734 * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we
735 have an SFNT.
736
Alexei Podtelezhnikov40623a12015-04-27 22:27:00 -04007372015-04-27 Alexei Podtelezhnikov <apodtele@gmail.com>
738
739 [truetype] Speed up IUP.
740
741 * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
742 snapping to the same position from true interpolation.
743
Werner Lemberg12661a52015-04-21 07:13:59 +02007442015-04-21 Werner Lemberg <wl@gnu.org>
745
Werner Lemberg14df6b12015-04-22 11:14:35 +0200746 [autofit] By default, enable warping code but switch off warping.
747
748 Suggested by Behdad.
749
750 * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER.
751
752 * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping'
753 with `false'.
754
7552015-04-21 Werner Lemberg <wl@gnu.org>
756
Werner Lembergd164f702015-04-21 07:51:41 +0200757 * docs/CHANGES: Updated.
758
7592015-04-21 Werner Lemberg <wl@gnu.org>
760
Werner Lemberg12661a52015-04-21 07:13:59 +0200761 [autofit] Introduce `warping' property.
762
763 This code replaces the debugging hook from the previous commit with
764 a better, more generic solution.
765
766 * include/ftautoh.h: Document it.
767
768 * src/autofit/afmodule.h (AF_ModuleRec)
769 [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field.
770
771 * src/autofit/afmodule.c (_af_debug_disable_warper): Remove.
772 (af_property_set, af_property_get, af_autofitter_init)
773 [AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option.
774
775 * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no
776 longer existing `_af_debug_disable_warper'.
777
778 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
779 (af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init)
780 [AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the
781 scaler flags if warping is off.
782
783 * src/autofit/aftypes.h: Updated.
784
Werner Lemberg58f48f02015-04-16 20:11:49 +02007852015-04-16 Werner Lemberg <wl@gnu.org>
786
787 [autofit] Add debugging hook to disable warper.
788
789 * src/autofit/afmodule.c (_af_debug_disable_warper)
790 [FT_DEBUG_AUTOFIT]: New global variable.
791
792 * src/autofit/aftypes.h: Updated.
793 (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet).
794
795 * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro.
796
797 * src/autofi/aflatin.c (af_latin_hints_apply)
798 [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use
799 of warper.
800
801 * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply)
802 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
803
804 * src/autofit/aflatin2.c (af_latin2_hints_apply)
805 [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
806
Werner Lemberg5cd21552015-04-10 07:01:01 +02008072015-04-10 Werner Lemberg <wl@gnu.org>
808
809 [cff] Update advance width handling to OpenType 1.7.
810
811 Problem reported by Behdad.
812
813 * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case
814 separately.
815
816 * src/cff/cffgload.c (cff_slot_load): Use advance width and side
817 bearing values from `hmtx' table if present.
818
Alexei Podtelezhnikov67b912d2015-04-03 22:38:11 -04008192015-04-03 Alexei Podtelezhnikov <apodtele@gmail.com>
820
821 * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop.
822
Alexei Podtelezhnikov770b5d02015-04-02 23:15:36 -04008232015-04-02 Alexei Podtelezhnikov <apodtele@gmail.com>
824
825 * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic.
826
8272015-04-01 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov886f4d02015-04-01 22:57:43 -0400828
829 [autofit] Finish the thought.
830
831 * src/autofit/afhints.c (af_direction_compute): make sure the long arm
832 is never negative so that its `FT_ABS' is not necessary.
833
Werner Lemberg16217e52015-04-01 13:13:56 +02008342015-04-01 Werner Lemberg <wl@gnu.org>
835
Werner Lemberga2fa6572015-04-01 15:55:41 +0200836 [autofit] Call dumper functions for tracing.
837
838 * src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code.
839 * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor
840 improvement.
841 * src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it.
842
8432015-04-01 Werner Lemberg <wl@gnu.org>
844
Werner Lembergdb8df792015-04-01 13:30:55 +0200845 [autofit] Make debugging stuff work again.
846
847 The interface to ftgrid was broken in the series of commits starting
848 with
849
850 [autofit] Allocate AF_Loader on the stack instead of AF_Module.
851
852 from 2015-01-14.
853
854 * src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]:
855 Use a global AF_GlyphHintsRec object for debugging.
856 (af_autofitter_done, af_autofitter_load_glyph): Updated.
857
858 * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated.
859
8602015-04-01 Werner Lemberg <wl@gnu.org>
861
Werner Lemberg16217e52015-04-01 13:13:56 +0200862 * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko.
863
Werner Lemberg10e2bb82015-03-29 13:32:47 +02008642015-03-29 Werner Lemberg <wl@gnu.org>
865
Werner Lembergf353a382015-03-29 14:47:49 +0200866 [cff] Fix Savannah bug #44629.
867
868 * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h
869 (CFF_MAX_SUBRS_CALLS): Set to 16.
870
8712015-03-29 Werner Lemberg <wl@gnu.org>
872
Werner Lemberg10e2bb82015-03-29 13:32:47 +0200873 [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'.
874
875 This commit allows `num_coords' to be larger or smaller than the
876 number of available axes while selecting a design instance, either
877 ignoring excess data or using defaults if data is missing.
878
879 * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
880 Implement it.
881
882 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design,
883 T1_Set_Var_Design): Ditto.
884
8852015-03-29 Werner Lemberg <wl@gnu.org>
Werner Lemberg8ce30262015-03-27 08:33:47 +0100886
Werner Lembergdd5d6d72015-03-29 10:04:22 +0200887 [type1] Minor.
888
889 * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use
890 FT_THROW.
891 (T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW.
892
8932015-03-27 Werner Lemberg <wl@gnu.org>
894
Werner Lemberg8ce30262015-03-27 08:33:47 +0100895 [cff] Trace charstring nesting levels.
896
897 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR,
898 cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it.
899
900 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
901 <cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto.
902
Alexei Podtelezhnikovdac56442015-03-21 23:30:16 -04009032015-03-21 Alexei Podtelezhnikov <apodtele@gmail.com>
904
905 [base] Optimize `FT_Angle_Diff'.
906
907 Under normal circumstances we are usually close to the desired range
908 of angle values, so that the remainder is not really necessary.
909
910 * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder.
911
912 * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro.
913
Werner Lemberg6cc425d2015-03-21 06:51:07 +01009142015-03-21 Werner Lemberg <wl@gnu.org>
915
916 [truetype] Improve `gvar' handling.
917
918 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle
919 single-element runs. Cf. glyph `Q' in Skia.ttf with weights larger
920 than the default.
921
Alexei Podtelezhnikov2d7284e2015-03-20 21:34:19 -04009222015-03-20 Alexei Podtelezhnikov <apodtele@gmail.com>
923
924 * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring.
925
Alexei Podtelezhnikov6a171722015-03-17 22:43:08 -04009262015-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
927
928 Fix Savannah bug #44412 (part 2).
929
930 * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'.
931
Werner Lemberg06339952015-03-11 06:30:23 +01009322015-03-11 Werner Lemberg <wl@gnu.org>
933
Werner Lembergd3284462015-03-11 16:45:58 +0100934 [autofit] Add support for Arabic script.
935
936 Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!
937
938 * src/autofit/afblue.dat: Add blue zone data for Arabic.
939
940 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
941
942 * src/autofit/afscript.h: Add Arabic standard characters.
943
944 * src/autofit/afranges.c: Add Arabic data.
945
946 * src/autofit/afstyles.h: Add Arabic data.
947
948 * docs/CHANGES: Document it.
949
9502015-03-11 Werner Lemberg <wl@gnu.org>
951
Werner Lemberga4516382015-03-11 08:09:13 +0100952 Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.
953
954 * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed
955 to...
956 (FT_SERVICE_FONT_FORMAT_H): This.
957
958 * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed
959 to ...
960 (FT_FONT_FORMAT_*): This.
961
962 src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
963 src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c,
964 src/truetype/ttdriver.c, src/type1/t1driver.c,
965 src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated.
966
9672015-03-11 Werner Lemberg <wl@gnu.org>
968
Werner Lembergdd7028c2015-03-11 07:45:05 +0100969 [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'.
970
971 * include/config/ftheader.h: Implement it.
972 * src/base/ftfntfmt.c, docs/CHANGES: Updated.
973
9742015-03-11 Werner Lemberg <wl@gnu.org>
975
Werner Lembergf4d1c112015-03-11 07:32:58 +0100976 [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'.
977
978 * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it.
979
980 * docs/CHANGES: Updated.
981
9822015-03-11 Werner Lemberg <wl@gnu.org>
983
Werner Lembergcb0f7b62015-03-11 06:51:27 +0100984 Fix automatic copyright updating.
985
986 * src/tools/update-copyright: Make scanning of `no-copyright'
987 actually work.
988
989 * src/tools/no-copyright: Don't include README in general.
990
9912015-03-11 Werner Lemberg <wl@gnu.org>
992
Werner Lemberg06339952015-03-11 06:30:23 +0100993 Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'.
994
995 CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4,
996 builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
997 builds/mac/FreeType.m68k_far.make.txt,
998 builds/mac/FreeType.ppc_carbon.make.txt,
999 builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf,
1000 builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
1001 builds/wince/vc2008-ce/freetype.vcproj,
1002 builds/windows/vc2005/freetype.vcproj,
1003 builds/windows/vc2008/freetype.vcproj,
1004 builds/windows/vc2010/freetype.vcxproj,
1005 builds/windows/vc2010/freetype.vcxproj.filters,
1006 builds/windows/visualc/freetype.dsp,
1007 builds/windows/visualc/freetype.vcproj,
1008 builds/windows/visualce/freetype.dsp,
1009 builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY,
1010 include/config/ftheader.h, include/ftfntfmt.h, modules.cfg,
1011 src/base/ftfntfmt.c, vms_make.com: Updated.
1012
Alexei Podtelezhnikov6b832c82015-03-10 23:25:49 -040010132015-03-10 Alexei Podtelezhnikov <apodtele@gmail.com>
1014
1015 Fix Savannah bug #44412 (part 1).
1016
1017 * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns.
1018
Werner Lembergeee7d8b2015-03-10 11:15:15 +010010192015-03-10 Werner Lemberg <wl@gnu.org>
1020
1021 [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'.
1022
1023 * include/ftbitmap.h, src/base/ftbitmap.c: Implement it.
1024 Update all callers.
1025
1026 * docs/CHANGES: Updated.
1027
Werner Lemberg493cc032015-03-06 05:38:31 +010010282015-03-06 Werner Lemberg <wl@gnu.org>
1029
1030 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
1031
1032 Found by Alexei.
1033
Alexei Podtelezhnikovdd7498d2015-03-05 22:51:36 -050010342015-03-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1035
1036 * src/base/ftstroke.c: Simplify.
1037
Werner Lemberg328b7922015-03-04 08:40:23 +010010382015-03-04 Werner Lemberg <wl@gnu.org>
1039
1040 [truetype] Some fixes and code refactoring in `ttgxvar.c'.
1041
1042 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value
1043 of `point_cnt' if two bytes are read.
1044 Use a more vertical coding style.
1045 (ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter.
1046 Use a more vertical coding style.
1047
Werner Lemberga374c9c2015-03-03 11:23:45 +010010482015-03-03 Werner Lemberg <wl@gnu.org>
1049
1050 [autofit] Fix Savannah bug #44241.
1051
1052 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs
1053 with less than 3 points.
1054
Werner Lemberga07029e2015-03-02 06:54:08 +010010552015-03-02 Werner Lemberg <wl@gnu.org>
1056
1057 Simplify `TYPEOF' macro.
1058
1059 No need for two arguments.
1060
1061 * include/config/ftconfig.h, builds/unix/ftconfig.in,
1062 builds/vms/ftconfig.h (TYPEOF): Updated.
1063
1064 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
1065 src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated.
1066
10672015-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg4b9234b2015-02-25 06:31:43 +01001068
Werner Lemberg851e8152015-03-01 19:27:09 +01001069 Various compiler warning fixes for `make multi'.
1070
1071 * src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges),
1072 src/autofit/aflatin.c (af_latin_hint_compute_blue_edges,
1073 af_latin_hint_edges), src/autofit/aflatin2.c
1074 (af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare
1075 as `static'.
1076
1077 * src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH):
1078 Removed. Unused.
1079 * src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H.
1080 * src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed. Unused.
1081
1082 * src/cff/cf2intrp.c: Include `cf2intrp.h'.
1083 * src/cff/cffdrivr.c (PAIR_TAG): Removed. Unused.
1084
1085 * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed. Unused.
1086
1087 * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'.
1088
1089 * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX):
1090 Removed. Unused.
1091
1092 * src/raster/ftraster.c (Render_Glyph): Declare as `static'.
1093
1094 * src/sfnt/ttpost.c (load_format_20): Fix signedness warning.
1095
1096 * src/truetype/ttdriver.c (PAIR_TAG): Removed. Unused.
1097 * src/truetype/ttsubpix.c (is_member_of_family_class,
1098 is_member_of_style_class): Declare as `static'.
1099
1100 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare
1101 as `static'.
1102 * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as
1103 `static'.
1104 (T1_FIELD_COUNT): Removed. Unused.
1105 * src/type1/t1parse.h (T1_Done_Table): Removed. Unused.
1106
1107 * src/type42/t42parse.c (T1_Done_Table): Removed. Unused.
1108
11092015-02-25 Werner Lemberg <wl@gnu.org>
1110
Werner Lemberg04c22372015-02-25 11:20:20 +01001111 [psaux] Signedness fixes.
1112
1113 * include/internal/psaux.h, src/psaux/afmparse.c,
1114 src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c,
1115 src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply.
1116
11172015-02-25 Werner Lemberg <wl@gnu.org>
1118
Werner Lembergd25ec162015-02-25 09:19:59 +01001119 [otvalid] Signedness fixes.
1120
1121 * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c,
1122 src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c:
1123 Apply.
1124
11252015-02-25 Werner Lemberg <wl@gnu.org>
1126
Werner Lemberg5c9d9bf2015-02-25 08:13:40 +01001127 * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix.
1128
11292015-02-25 Werner Lemberg <wl@gnu.org>
1130
Werner Lemberg83d41812015-02-25 08:10:58 +01001131 [lzw] Signedness fixes.
1132
1133 * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply.
1134
11352015-02-25 Werner Lemberg <wl@gnu.org>
1136
Werner Lemberg17b62912015-02-25 07:53:09 +01001137 [gxvalid] Signedness fixes.
1138
1139 * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
1140 src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c,
1141 src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
1142 src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c,
1143 src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c,
1144 src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c,
1145 src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply.
1146
11472015-02-25 Werner Lemberg <wl@gnu.org>
1148
Werner Lemberg24e4e962015-02-25 06:57:16 +01001149 [cache] Signedness fixes.
1150
1151 * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c,
1152 src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply.
1153
11542015-02-25 Werner Lemberg <wl@gnu.org>
1155
Werner Lemberg559727d2015-02-25 06:55:00 +01001156 Change dimension fields in `FTC_ImageTypeRec' to unsigned type.
1157
1158 This doesn't break ABI.
1159
1160 * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for
1161 `width' and `height'.
1162
1163 * docs/CHANGES: Document it.
1164
11652015-02-25 Werner Lemberg <wl@gnu.org>
1166
Werner Lemberg4b9234b2015-02-25 06:31:43 +01001167 [cache] Don't use `labs'.
1168
1169 This is the only place in FreeType where this function was used.
1170
1171 * include/config/ftstdlib.h (ft_labs): Remove.
1172
1173 * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with
1174 `FT_ABS'.
1175
Werner Lemberg4d1f7af2015-02-23 07:04:36 +010011762015-02-23 Werner Lemberg <wl@gnu.org>
1177
Werner Lemberg3aaebe32015-02-23 08:20:27 +01001178 [cache] Replace `FT_PtrDist' with `FT_Offset'.
1179
1180 * src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t')
1181 is a better choice for `hash' to hold a pointer than `FT_PtrDist'
1182 (a.k.a. `ptrdiff_t'), especially since the latter is signed,
1183 causing zillions of signedness warnings. [Note that `hash' was of
Werner Lemberg17b62912015-02-25 07:53:09 +01001184 type `FT_UInt32' before the change to `FT_PtrDist'.]
Werner Lemberg3aaebe32015-02-23 08:20:27 +01001185 Update all users.
1186
1187 * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c,
1188 src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated.
1189
11902015-02-23 Werner Lemberg <wl@gnu.org>
1191
Werner Lemberg4d1f7af2015-02-23 07:04:36 +01001192 [smooth, raster] Re-enable standalone compilation.
1193
1194 * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX)
1195 [_STANDALONE_]: Define macros.
1196
1197 * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS,
1198 FT_HYPOT) [_STANDALONE_]: Define macros.
1199
Werner Lemberg03ccfd02015-02-22 08:25:16 +010012002015-02-22 Werner Lemberg <wl@gnu.org>
1201
Werner Lembergcb13e712015-02-23 06:41:52 +01001202 [smooth] Signedness fixes.
1203
1204 * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply.
1205
12062015-02-22 Werner Lemberg <wl@gnu.org>
1207
Werner Lemberga974e9a2015-02-22 21:02:13 +01001208 * src/raster/ftraster.c: Use the file's typedefs everywhere.
1209
12102015-02-22 Werner Lemberg <wl@gnu.org>
1211
Werner Lembergb0ebcdc2015-02-22 20:42:49 +01001212 * src/sfnt/ttpost.c (load_format_20): Fix error tracing message.
1213
1214 Bug introduced 6 commits earlier.
1215
12162015-02-22 Werner Lemberg <wl@gnu.org>
1217
Werner Lemberg22b1d5c2015-02-22 20:41:03 +01001218 [pshinter] Fix thinko.
1219
1220 * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly
1221 check `count'.
1222 Bug introduced two commits earlier.
1223
12242015-02-22 Werner Lemberg <wl@gnu.org>
1225
Werner Lembergca96fe02015-02-22 20:05:04 +01001226 [raster] Signedness fixes.
1227
1228 * src/raster/ftraster.c, src/raster/ftrend1.c: Apply.
1229
12302015-02-22 Werner Lemberg <wl@gnu.org>
1231
Werner Lemberg452066c2015-02-22 15:59:02 +01001232 [pshinter] Signedness fixes.
1233
1234 * src/pshinter/pshalgo.c, src/pshinter/pshglob.c,
1235 src/pshinter/pshrec.c: Apply.
1236
12372015-02-22 Werner Lemberg <wl@gnu.org>
1238
Werner Lemberg41c2ed82015-02-22 15:57:47 +01001239 [pshinter] Use macros for (unsigned) flags, not enumerations.
1240
1241 * src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros.
1242 Updated.
1243 * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros.
1244
12452015-02-22 Werner Lemberg <wl@gnu.org>
1246
Werner Lemberg25c2f882015-02-22 15:54:31 +01001247 * src/pshinter/pshrec.c: Simplify.
1248 (ps_hints_open, ps_hints_stem): Remove switch statement.
1249
12502015-02-22 Werner Lemberg <wl@gnu.org>
1251
Werner Lemberg01f08422015-02-22 12:03:28 +01001252 [sfnt] Signedness fixes.
1253
1254 * src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c,
1255 src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
1256 src/sfnt/ttsbit.c: Apply.
1257 * src/sfnt/sfdriver.c: Apply.
1258 (sfnt_get_ps_name): Simplify.
1259
12602015-02-22 Werner Lemberg <wl@gnu.org>
1261
Werner Lemberg3c374c82015-02-22 09:16:53 +01001262 [bdf] Signedness fixes.
1263
1264 * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h,
1265 src/bdf/bdflib.c: Apply.
1266
12672015-02-22 Werner Lemberg <wl@gnu.org>
1268
Werner Lembergb13945a2015-02-22 09:15:47 +01001269 * src/bdf/bdflib.c (_bdf_atous): New function.
1270 (_bdf_parse_glyphs, _bdf_parse_start): Use it.
1271
12722015-02-22 Werner Lemberg <wl@gnu.org>
1273
Werner Lemberg03ccfd02015-02-22 08:25:16 +01001274 [pcf] Signedness fixes.
1275
1276 * src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply.
1277 * src/pcf/pcfread.c: Apply.
1278 (pcf_get_encodings): Ignore invalid negative encoding offsets.
1279
Werner Lemberg633a7292015-02-21 07:02:01 +010012802015-02-21 Werner Lemberg <wl@gnu.org>
1281
Werner Lemberg3d7e53f2015-02-21 11:30:54 +01001282 * src/winfonts/winfnt.c: Signedness fixes.
1283
12842015-02-21 Werner Lemberg <wl@gnu.org>
1285
Werner Lemberg7b6b4172015-02-21 10:39:34 +01001286 [type42] Signedness fixes.
1287
1288 * src/type42/t42parse.c, src/type42/t42parse.h,
1289 src/type42/t42types.h: Apply.
1290
12912015-02-21 Werner Lemberg <wl@gnu.org>
1292
Werner Lemberg8bfffb42015-02-21 09:52:29 +01001293 [pfr] Signedness fixes.
1294
1295 * src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c,
1296 src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c,
1297 src/pfr/pfrtypes.h: Apply.
1298
12992015-02-21 Werner Lemberg <wl@gnu.org>
1300
Werner Lemberg633a7292015-02-21 07:02:01 +01001301 [cff] Minor signedness fixes related to last commit.
1302
1303 * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply.
1304
Werner Lemberg3a8d0532015-02-20 08:35:32 +010013052015-02-20 Werner Lemberg <wl@gnu.org>
1306
Werner Lembergc00b05f2015-02-20 20:42:55 +01001307 [cff] Thinkos in bias handling.
1308
1309 Only the final result is always positive.
1310
1311 Bug introduced three commits earlier.
1312
1313 * src/cff/cffgload.c, src/cff/cffgload.h: Apply.
1314
13152015-02-20 Werner Lemberg <wl@gnu.org>
1316
Werner Lemberg2bf03eb2015-02-20 20:14:11 +01001317 [cid] Fix signedness issues and emit some better error codes.
1318
1319 * src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c,
1320 src/cid/cidparse.h: Apply.
1321 * src/cid/cidload.c: Apply.
1322 (parse_fd_array): Reject negative values for number of dictionaries.
1323 * src/cid/cidparse.c: Apply.
1324 (cid_parser_new): Reject negative values for hex data length.
1325
13262015-02-20 Werner Lemberg <wl@gnu.org>
1327
Werner Lembergeb05bfb2015-02-20 08:37:35 +01001328 [cff] Signedness fixes for new engine.
1329
1330 * src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c,
1331 src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply.
1332
13332015-02-20 Werner Lemberg <wl@gnu.org>
1334
Werner Lemberg3a8d0532015-02-20 08:35:32 +01001335 [cff] Signedness fixes for basic infrastructure and old engine.
1336
1337 * include/internal/pshints.h, src/cff/cffdrivr.c,
1338 src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c,
1339 src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply.
1340
Werner Lemberg81e5ff52015-02-19 09:46:48 +010013412015-02-19 Werner Lemberg <wl@gnu.org>
1342
Werner Lemberg3a1df3e2015-02-19 15:42:48 +01001343 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'.
1344
1345 This is hard-coded to value 2 in `fvar' version 1.0 (and no newer
1346 version exists), but some fonts set it incorrectly.
1347
1348 Problem reported by Adam Twardoch <adam@fontlab.com>.
1349
13502015-02-19 Werner Lemberg <wl@gnu.org>
1351
Werner Lemberg93a884c2015-02-19 14:11:16 +01001352 [cff] Emit better error code for invalid private dict size.
1353
1354 * src/cff/cffparse.c (cff_parse_private_dict): Reject negative
1355 values for size and offset.
1356
13572015-02-19 Werner Lemberg <wl@gnu.org>
1358
Werner Lembergb57bb112015-02-19 10:44:18 +01001359 [autofit] Fix signedness issues.
1360
1361 * src/autofit/afangles.c, src/autofit/afcjk.c,
1362 src/autofit/afglobal.c, src/autofit/afhints.c,
1363 src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c,
1364 src/autofit/hbshim.c: Apply.
1365
13662015-02-19 Werner Lemberg <wl@gnu.org>
1367
Werner Lemberg81e5ff52015-02-19 09:46:48 +01001368 [autofit] Use macros for (unsigned) flags, not enumerations.
1369
1370 This harmonizes with other code in FreeType (and reduces the number
1371 of necessary casts to avoid compiler warnings).
1372
1373 * src/autofit/afblue.hin: Make flag macros unsigned.
1374 * src/autofit/afblue.h: Regenerated.
1375
1376 * src/autofit/afcjk.h: Replace flag enumeration with macros.
1377 * src/autofit/afcjk.c: Updated.
1378
1379 * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with
1380 macros.
1381 * src/autofit/afhints.c: Updated.
1382
1383 * src/autofit/aflatin.h: Replace flag enumerations with macros.
1384 * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated.
1385
1386 * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros.
1387
Werner Lemberg6a0ded72015-02-18 08:51:22 +010013882015-02-18 Werner Lemberg <wl@gnu.org>
1389
Werner Lemberg3b5f3322015-02-18 11:45:22 +01001390 [type1] Fix signedness issues.
1391
1392 * include/internal/psaux.h, include/internal/t1types.h,
1393 src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c,
1394 src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply.
1395
13962015-02-18 Werner Lemberg <wl@gnu.org>
1397
Werner Lemberg272e3cd2015-02-18 11:38:46 +01001398 [psaux, type1] Fix minor AFM issues.
1399
1400 * include/internal/t1types.h (AFM_KernPairRec): Make indices
1401 unsigned.
1402 Update users.
1403 (AFM_FontInfoRec): Make element counters unsigned.
1404 Update users.
1405 * src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned
1406 int.
1407
1408 * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
1409 Reject negative values for number of kerning elements.
1410
1411 * src/type1/t1afm.c, src/tools/test_afm.c: Updated.
1412
14132015-02-18 Werner Lemberg <wl@gnu.org>
1414
Werner Lemberg6bd7d282015-02-18 09:22:06 +01001415 Don't use `FT_PtrDist' for lengths.
1416
1417 Use FT_UInt instead.
1418
1419 * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec,
1420 T1_DecoderRec): Do it.
1421
1422 * include/internal/t1types.h (T1_FontRec): Ditto.
1423
1424 * src/cid/cidload.c (cid_parse_dict): Updated.
1425 * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto.
1426 * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto.
1427 * src/type1/t1load.c (parse_blend_axis_types, parse_encoding,
1428 parse_chharstrings, parse_dict): Ditto.
1429 * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings,
1430 t42_parse_dict): Ditto.
1431
14322015-02-18 Werner Lemberg <wl@gnu.org>
1433
Werner Lemberg6a0ded72015-02-18 08:51:22 +01001434 * src/type1/t1driver.c (t1_ps_get_font_value): Clean up.
1435 This handles negative values better, avoiding many casts.
1436
Werner Lemberg0a33a392015-02-17 08:03:05 +010014372015-02-17 Werner Lemberg <wl@gnu.org>
1438
Werner Lembergd3240c52015-02-17 20:30:36 +01001439 [base] Fix Savannah bug #44284.
1440
1441 * src/base/ftcalc.c (FT_MulFix): Typos.
1442
14432015-02-17 Werner Lemberg <wl@gnu.org>
1444
Werner Lemberg1f7a4e12015-02-17 10:17:56 +01001445 [truetype] Finish compiler warning fixes for signedness issues.
1446
1447 * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c,
1448 src/truetype/ttsubpix.h: Apply.
1449
14502015-02-17 Werner Lemberg <wl@gnu.org>
1451
Werner Lemberg9daea2c2015-02-17 09:27:56 +01001452 * src/truetype/ttsubpix.c: Adding missing `static' keywords.
1453
14542015-02-17 Werner Lemberg <wl@gnu.org>
1455
Werner Lembergd9c3f152015-02-17 09:21:26 +01001456 [truetype] More signedness fixes.
1457
1458 * include/internal/tttypes.h, src/truetype/ttinterp.h,
1459 src/truetype/ttobjs.h, src/truetype/ttinterp.c,
1460 src/truetype/ttobjs.c: Apply.
1461
14622015-02-17 Werner Lemberg <wl@gnu.org>
1463
Werner Lemberg0a33a392015-02-17 08:03:05 +01001464 [truetype] Various signedness fixes.
1465
1466 * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply.
1467
1468 * src/truetype/ttgload.c: Apply.
1469 (TT_Get_VMetrics): Protect against invalid ascenders and descenders
1470 while constructing advance height.
1471
Werner Lemberg587351b2015-02-16 07:03:22 +010014722015-02-16 Werner Lemberg <wl@gnu.org>
1473
Werner Lemberg76abc752015-02-16 22:00:27 +01001474 [base] Finish compiler warning fixes for signedness issues.
1475
1476 * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c:
1477 Apply.
1478
14792015-02-16 Werner Lemberg <wl@gnu.org>
1480
Werner Lemberg10aa8582015-02-16 20:12:54 +01001481 * include/tttables.h (TT_OS2): `fsType' must be FT_UShort.
1482
14832015-02-16 Werner Lemberg <wl@gnu.org>
1484
Werner Lemberg2e814fc2015-02-16 20:05:08 +01001485 More minor signedness warning fixes.
1486
1487 * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c,
1488 src/base/ftutil.c: Apply.
1489
14902015-02-16 Werner Lemberg <wl@gnu.org>
1491
Werner Lemberg82235d02015-02-16 19:35:16 +01001492 Next round of minor compiler warning fixes.
1493
1494 * include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member
1495 type to `FT_Long'.
1496 (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword.
1497
Werner Lemberg3aaebe32015-02-23 08:20:27 +01001498 * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'.
Werner Lemberg82235d02015-02-16 19:35:16 +01001499
1500 * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c:
1501 Signedess fixes.
1502
15032015-02-16 Werner Lemberg <wl@gnu.org>
1504
Werner Lemberg3cfa4d12015-02-16 17:59:06 +01001505 Various minor signedness fixes.
1506
1507 * include/ftadvanc.h, include/internal/ftobjs.h,
1508 src/base/ftgloadr.c, src/base/ftobjs.c: Apply.
1509
15102015-02-16 Werner Lemberg <wl@gnu.org>
1511
Werner Lemberg6f325c22015-02-16 11:31:32 +01001512 New `TYPEOF' macro.
1513
1514 This helps suppress signedness warnings, avoiding issues with
1515 implicit conversion changes.
1516
1517 * include/config/ftconfig.h, builds/unix/ftconfig.in,
1518 builds/vms/ftconfig.h (TYPEOF): Define.
1519
1520 * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
1521 src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it.
1522
15232015-02-16 Werner Lemberg <wl@gnu.org>
1524
Werner Lemberg1f377f02015-02-16 08:37:09 +01001525 * src/base/ftsystem.c: Use casts in standard C function wrappers.
1526 (ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it.
1527
15282015-02-16 Werner Lemberg <wl@gnu.org>
1529
Werner Lemberg0814b802015-02-16 07:29:53 +01001530 Fix Savannah bug #44261.
1531
1532 * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the
1533 environment also while calling the configure script.
1534
15352015-02-16 Werner Lemberg <wl@gnu.org>
1536
Werner Lemberg587351b2015-02-16 07:03:22 +01001537 * include/internal/ftmemory.h: Add some `FT_Offset' casts.
1538 (FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY,
1539 FT_MEM_MOVE): Do it.
1540
Werner Lemberg6d7d6362015-02-15 12:30:42 +010015412015-02-15 Werner Lemberg <wl@gnu.org>
1542
Werner Lemberg48186b82015-02-16 06:37:36 +01001543 [base] Clean up signedness issues in `ftdbgmem.c'.
1544
1545 Also fix other minor issues.
1546
1547 * src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types
1548 with FT_Long for consistency.
1549 (ft_mem_primes): Change type to `FT_Int'.
1550 (ft_mem_closest_prime, ft_mem_table_set): Updated.
1551
1552 (ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free,
1553 ft_mem_debug_realloc): Use `static' keyword and fix signedness
1554 warnings where necessary.
1555
1556 (ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy,
1557 ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types
1558 and add or remove casts to avoid signedness warnings.
1559
15602015-02-15 Werner Lemberg <wl@gnu.org>
1561
Werner Lemberg6d7d6362015-02-15 12:30:42 +01001562 [base] Clean up signedness in arithmetic functions.
1563
1564 This makes the code more readable and reduces compiler warnings.
1565
1566 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix,
1567 FT_DivFix): Convert input parameters to unsigned, do the
1568 computation, then convert the result back to signed.
1569 (ft_corner_orientation): Fix casts.
1570
Werner Lemberg92359bd2015-02-07 09:47:23 +010015712015-02-07 Werner Lemberg <wl@gnu.org>
1572
1573 [sfnt] Fix Savannah bug #44184.
1574
1575 * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No
1576 longer reject `htmx' and `vmtx' tables with invalid length but
1577 sanitize them.
1578
Jon Anderson416d8792015-02-06 10:16:45 +010015792015-02-06 Jon Anderson <jon@websupergoo.com>
1580
1581 [truetype] Fix regression in the incremental glyph loader.
1582
1583 * src/truetype/ttgload.c (load_truetype_glyph): For incremental
1584 fonts, the glyph index may be greater than the number of glyphs
1585 indicated, so guard the check with a preprocessor conditional.
1586
Werner Lembergb6cb4992015-02-06 08:46:06 +010015872015-02-06 Werner Lemberg <wl@gnu.org>
1588
1589 [autofit] Fix potential memory leak.
1590
1591 While this doesn't show up with FreeType, exactly the same code
1592 leaks with ttfautohint's modified auto-hinter code (which gets used
1593 in a slightly different way).
1594
1595 It certainly doesn't harm since it is similar to already existing
1596 checks in the code for embedded arrays.
1597
1598 * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours'
1599 and `max_points' for all cases.
1600
Werner Lemberg19146a52015-01-31 11:01:33 +010016012015-01-31 Werner Lemberg <wl@gnu.org>
1602
1603 [autofit] Add support for Thai script.
1604
1605 Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue
1606 zone characters!
1607
1608 * src/autofit/afblue.dat: Add blue zone data for Thai.
1609
1610 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1611
1612 * src/autofit/afscript.h: Add Thai standard characters.
1613
1614 * src/autofit/afranges.c: Add Thai data.
1615
1616 * src/autofit/afstyles.h: Add Thai data.
1617
Behdad Esfahbod264b5e42015-01-23 21:23:55 +010016182015-01-23 Behdad Esfahbod <behdad@behdad.org>
1619
1620 [raster] Handle `FT_RASTER_FLAG_AA' correctly.
1621
1622 This fixes a breakage caused by the commit `[raster] Remove
1623 5-level gray AA mode from monochrome rasterizer.'.
1624
Werner Lembergd2c531e2015-01-23 22:37:42 +01001625 Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de>.
Behdad Esfahbod264b5e42015-01-23 21:23:55 +01001626
1627 * src/raster/ftraster.c (ft_black_render): Handle
1628 `FT_RASTER_FLAG_AA'.
1629
1630 * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode
1631 remnants.
1632
Werner Lemberg79a5ac62015-01-18 07:30:04 +010016332015-01-18 Werner Lemberg <wl@gnu.org>
1634
1635 * src/base/ftobjs.c (FT_New_Library): Fix compiler warning.
1636
Chris Liddell942aa5f2015-01-18 07:29:48 +010016372015-01-18 Chris Liddell <chris.liddell@artifex.com>
1638
1639 [raster] Fix Savannah bug #44022.
1640
1641 Add fallback for glyphs with degenerate bounding boxes.
1642
1643 If a glyph has only one very narrow feature, the bbox can end up
1644 with either the width or height of the bbox being 0, in which case
1645 no raster memory is allocated and no attempt is made to render the
1646 glyph. This is less than ideal when the drop-out compensation in
1647 the rendering code would actually result in the glyph being
1648 rendered.
1649
1650 This problem can be observed with the `I' glyph (gid 47) in the
1651 Autodesk RomanS TrueType font.
1652
1653 * src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either
1654 dimension is zero to explicitly round up/down (instead of simply
1655 round).
1656
Werner Lemberg50be00d2015-01-17 20:38:31 +010016572015-01-17 Werner Lemberg <wl@gnu.org>
1658
1659 Add some tools to handle yearly copyright notice updates.
1660
1661 We are now following the GNU guidelines: A new release automatically
1662 means that the copyright year of all affected files gets updated; it
1663 is no longer used to track years of modification changes.
1664
1665 * src/tools/update-copyright-year: New Perl script.
1666 * src/tools/update-copyright: New shell script that calls
1667 `update-copyright-year' on all files.
1668 * src/tools/no-copyright: Exceptions that should not be handled by
1669 `update-copyright'
1670
Werner Lemberg4eff8542015-01-14 20:06:19 +010016712015-01-14 Werner Lemberg <wl@gnu.org>
1672
1673 * docs/CHANGES: Updated, using a description from Behdad.
1674
Behdad Esfahbod3f9b3d82015-01-14 15:48:12 +010016752015-01-14 Behdad Esfahbod <behdad@behdad.org>
1676
Behdad Esfahbod48c86622015-01-14 19:38:36 +01001677 * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.
1678
16792015-01-14 Behdad Esfahbod <behdad@behdad.org>
1680
Behdad Esfahbod56ddafa2015-01-14 19:36:02 +01001681 [autofit] Add embedded array of segments and edges.
1682
1683 Avoids multiple mallocs per typical glyphs.
1684
1685 With this and recent changes to avoid mallocs, the thread-safe
1686 stack-based loader is now as fast as the previous model that had one
1687 cached singleton.
1688
1689 * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED):
1690 New macros.
1691 (AF_AxisHintsRec): Add two arrays for segments and edges.
1692
1693 * src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate
1694 data if number of segments exceeds given threshold value.
1695 (af_axis_hints_new_edge): Only allocate data if number of edges
1696 exceeds given threshold value.
1697 (af_glyph_hints_done): Updated.
1698
16992015-01-14 Behdad Esfahbod <behdad@behdad.org>
1700
Behdad Esfahbod6f16b102015-01-14 19:26:49 +01001701 [autofit] Add embedded arrays for points and contours.
1702
1703 This avoids at least two malloc calls for typical glyphs.
1704
1705 * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED):
1706 New macros.
1707 (AF_GlyphHintsRec): Add two arrays for contours and points.
1708
1709 * src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done):
1710 Updated.
1711 (af_glyph_hints_reload): Only allocate data if number of contours or
1712 points exceeds given threshold values.
1713
17142015-01-14 Behdad Esfahbod <behdad@behdad.org>
1715
Behdad Esfahbodc2733652015-01-14 19:16:12 +01001716 [autofit] Allocate hints object on the stack.
1717
1718 This avoids one malloc per load.
1719
1720 * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to
1721 `AF_GlyphHints'.
1722 Update prototype.
1723
1724 * src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints'
1725 parameter instead of `FT_Memory'.
1726 (af_loader_done): Directly reset `load_hints'.
1727 (af_loader_load_g): Updated.
1728
1729 * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local
1730 `hints' object.
1731
17322015-01-14 Behdad Esfahbod <behdad@behdad.org>
1733
Behdad Esfahboda4117fb2015-01-14 19:07:54 +01001734 [autofit] Reuse slot glyph loader.
1735
1736 No need to create a new glyph loader; we can reuse the one from
1737 `slot->internal->loader'. It's hard to tell why it was written that
1738 way originally, but new code looks sound and correct to me, and
1739 avoids lots of allocations.
1740
1741 * src/autofit/afloader.c (af_loader_init): Change return type to
1742 `void'.
1743 Don't call `FT_GlyphLoader_New'.
1744 (af_loader_reset): Don't call `FT_GlyphLoader_Rewind'.
1745 (af_loader_load_g): Update code to use `internal->loader', which
1746 doesn't need copying of data.
1747
1748 * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member.
1749 Update prototype.
1750
1751 * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated.
1752
17532015-01-14 Behdad Esfahbod <behdad@behdad.org>
1754
Behdad Esfahbodae6699f2015-01-14 18:55:39 +01001755 [autofit] Remove (unused) support for composite glyphs.
1756
1757 We never have to deal with composite glyphs in the autohinter, as
1758 those will be loaded into FORMAT_OUTLINE by the recursed
1759 `FT_Load_Glyph' function.
1760
1761 In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply
1762 FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies
1763 FT_LOAD_NO_HINTING:
1764
1765 /* resolve load flags dependencies */
1766
1767 if ( load_flags & FT_LOAD_NO_RECURSE )
1768 load_flags |= FT_LOAD_NO_SCALE |
1769 FT_LOAD_IGNORE_TRANSFORM;
1770
1771 if ( load_flags & FT_LOAD_NO_SCALE )
1772 {
1773 load_flags |= FT_LOAD_NO_HINTING |
1774 FT_LOAD_NO_BITMAP;
1775
1776 load_flags &= ~FT_LOAD_RENDER;
1777 }
1778
1779 and as such the auto-hinter is never called. Thus, the recursion in
1780 `af_loader_load_g' never actually happens. So remove the depth
1781 counter as well.
1782
1783 * src/autofit/afloader.c (af_loader_load_g): Remove `depth'
1784 parameter.
1785 <FT_GLYPH_FORMAT_COMPOSITE>: Remove associated code.
1786 (af_loader_load_glyph): Updated.
1787
17882015-01-14 Behdad Esfahbod <behdad@behdad.org>
1789
Behdad Esfahbodc242fe42015-01-14 18:48:14 +01001790 [raster] Fix uninitialized memory access.
1791
1792 Apparently `ras.cProfile' might be uninitialized. This will be the
1793 case if `ras.top == ras.cProfile->offset', as can be seen in
1794 `End_Profile'. The overshoot code introduced in a change `Fix B/W
1795 rasterization of subglyphs with different drop-out modes.' (from
1796 2009-06-18) violated this, accessing `ras.cProfile->flags'
1797 unconditionally just before calling `End_Profile' (which then
1798 detected that `cProfile' is uninitialized and didn't touch it).
1799
1800 This was harmless, and was not detected by valgrind before because
1801 the objects were allocated on the `raster_pool', which was always
1802 initialized. With recent change to allocate raster buffers on the
1803 stack, valgrind now reported this invalid access.
1804
1805 * src/raster/ftraster.c (Convert_Glyph): Don't access an
1806 uninitialized `cProfile'.
1807
18082015-01-14 Behdad Esfahbod <behdad@behdad.org>
1809
Behdad Esfahbodb2ba6862015-01-14 18:43:13 +01001810 [smooth] Fix uninitialized memory access.
1811
1812 Looks like `ras.span_y' could always be used without initialization.
1813 This was never detected by valgrind before because the library-wide
1814 `raster_pool' was used for the worker object and `raster_pool' was
1815 originally zero'ed. But subsequent reuses of it were using `span_y'
1816 uninitialized. With the recent change to not use `render_pool' and
1817 allocate worker and buffer on the stack, valgrind now detects this
1818 uninitialized access.
1819
1820 * src/smooth/ftgrays.c (gray_raster_render): Initialize
1821 `ras.span_y'.
1822
18232015-01-14 Behdad Esfahbod <behdad@behdad.org>
1824
Behdad Esfahbod603292d2015-01-14 18:35:56 +01001825 [base] Don't initialize unused `driver->glyph_loader'.
1826
1827 * src/base/ftobjs.c (Destroy_Driver): Don't call
1828 `FT_GlyphLoader_Done'.
1829 (FT_Add_Module): Don't call `FT_GlyphLoader_New'.
1830
18312015-01-14 Behdad Esfahbod <behdad@behdad.org>
1832
Behdad Esfahbod51634252015-01-14 18:30:59 +01001833 [base] Don't allocate `library->raster_pool' anymore.
1834
1835 It's unused after the following commits:
1836
1837 [raster] Allocate render pool for mono rasterizer on the stack.
1838 [raster] Remove 5-level gray AA mode from monochrome rasterizer.
1839
1840 The value of FT_RENDER_POOL_SIZE still serves the purpose it used to
1841 serve, which is, to adjust the pool size. But the pool is now
1842 allocated on the stack on demand.
1843
1844 * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement.
1845
18462015-01-14 Behdad Esfahbod <behdad@behdad.org>
1847
Behdad Esfahbod6dfdaf42015-01-14 18:21:13 +01001848 [base] Do not reorder library->renderers upon use.
1849
1850 Instead of keeping `library->renderers' in a MRU order, just leave
1851 it as-is. The MRU machinery wasn't thread-safe.
1852
1853 With this patch, rasterizing glyphs from different faces from
1854 different threads doesn't fail choosing rasterizer
1855 (FT_Err_Cannot_Render_Glyph).
1856
1857 Easiest to see that crash was to add a `printf' (or otherwise let
1858 thread yield in FT_Throw with debugging enabled).
1859
1860 * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
1861 (FT_Outline_Render): Don't call `FT_Set_Renderer'.
1862
18632015-01-14 Behdad Esfahbod <behdad@behdad.org>
1864
Behdad Esfahboda773c302015-01-14 18:16:20 +01001865 [raster] Allocate render pool for mono rasterizer on the stack.
1866
1867 Instead of using the `render_pool' member of `FT_Library' that is
1868 provided down to the rasterizer, completely ignore that and allocate
1869 needed objects on the stack instead.
1870
1871 With this patch, rasterizing glyphs from different faces from
1872 different threads doesn't crash in the monochrome rasterizer.
1873
1874 * src/raster/ftraster.c (black_TRaster): Remove `buffer',
1875 `buffer_size', and `worker' members.
1876
1877 (ft_black_render): Create `buffer' locally.
1878 (ft_black_reset): Updated.
1879
18802015-01-14 Behdad Esfahbod <behdad@behdad.org>
1881
Behdad Esfahbod8dc86352015-01-14 18:06:22 +01001882 [raster] Remove 5-level gray AA mode from monochrome rasterizer.
1883
1884 It was off by default and couldn't be turned on at runtime. And the
1885 smooth rasterizer superceded it over ten years ago. No point in
1886 keeping. Comments suggested that it was there for compatibility
1887 with FreeType 1.
1888
1889 550 lines down.
1890
1891 * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING,
1892 RASTER_GRAY_LINES): Remove macros and all associated code.
1893
1894 (black_TWorker): Remove `gray_min_x' and `gray_max_x'.
1895 (black_TRaster): Remove `grays' and `gray_width'.
1896
1897 (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop,
1898 ft_black_render): Updated.
1899
1900 * src/raster/ftrend1.c (ft_raster1_render): Simplify code.
1901 (ft_raster5_renderer_class): Removed.
1902
19032015-01-14 Behdad Esfahbod <behdad@behdad.org>
1904
Behdad Esfahbod747ae2c2015-01-14 17:54:26 +01001905 [smooth] Allocate render pool for smooth rasterizer on the stack.
1906
1907 Instead of using the `render_pool' member of `FT_Library' that is
1908 provided down to the rasterizer, completely ignore that and allocate
1909 needed objects on the stack instead.
1910
1911 With this patch, rasterizing glyphs from different faces from
1912 different threads doesn't crash in the smooth rasterizer.
1913
1914 Bugs:
1915
1916 https://bugzilla.redhat.com/show_bug.cgi?id=678397
1917 https://bugzilla.redhat.com/show_bug.cgi?id=1004315
1918 https://bugzilla.redhat.com/show_bug.cgi?id=1165471
1919 https://bugs.freedesktop.org/show_bug.cgi?id=69034
1920
1921 * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer',
1922 `buffer_size', `band_size', and `worker' members.
1923
1924 (gray_raster_render): Create `buffer', `buffer_size', and
1925 `band_size' locally.
1926 (gray_raster_reset): Updated.
1927
19282015-01-14 Behdad Esfahbod <behdad@behdad.org>
1929
Behdad Esfahbod531d4632015-01-14 17:46:55 +01001930 [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver.
1931
1932 Previously the code had stipulation for using a per-TT_Size exec
1933 context if `size->debug' was true. But there was no way that
1934 `size->debug' could *ever* be true. As such, the code was always
1935 using the singleton `TT_ExecContext' that was stored in `TT_Driver'.
1936 This was, clearly, not threadsafe.
1937
1938 With this patch, loading glyphs from different faces from different
1939 threads doesn't crash in the bytecode loader code.
1940
1941 * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member.
1942 (TT_DriverRec): Remove `context' member.
1943
1944 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove
1945 `TT_ExecContext' code related to a global `TT_Driver' object.
1946
1947 (tt_driver_done): Don't remove `TT_ExecContext' object here but ...
1948 (tt_size_done_bytecode): ... here.
1949
1950 (tt_driver_init): Don't create `TT_ExecContext' object here but ...
1951 (tt_size_init_bytecode): ... here, only on demand.
1952
1953 * src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug
1954 code.
1955 (TT_New_Context): Remove `TT_ExecContext' code related to a global
1956 `TT_Driver' object.
1957
1958 * src/truetype/ttinterp.h: Updated.
1959
1960 * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated.
1961
19622015-01-14 Behdad Esfahbod <behdad@behdad.org>
1963
Behdad Esfahbod89bc8d42015-01-14 16:01:19 +01001964 [autofit] Allocate AF_Loader on the stack instead of AF_Module.
1965
1966 Stop sharing a global `AF_Loader'. Allocate one on the stack during
1967 glyph load.
1968
1969 Right now this results in about 25% slowdown, to be fixed in a
1970 following commit.
1971
1972 With this patch loading glyphs from different faces from different
1973 threads doesn't immediately crash in the autohinting loader code.
1974
1975 Bugs:
1976
1977 https://bugzilla.redhat.com/show_bug.cgi?id=1164941
1978
1979 * src/autofit/afloader.c (af_loader_init): Pass
1980 `AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments.
1981 (af_loader_reset, af_loader_load_glyph): Also pass `loader' as
1982 argument.
1983 (af_loader_done): Use `AF_Loader' instead of `AF_Module' as
1984 argument.
1985
1986 * src/autofit/afmodule.c (af_autofitter_init): Don't call
1987 `af_loader_init'.
1988 (af_autofitter_done): Don't call `af_loader_done'.
1989 (af_autofitter_load_glyph): Use a local `AF_Loader' object.
1990
1991 * src/autofit/afloader.h: Include `afmodule.h'.
1992 Update prototypes.
1993 Move typedef for `AF_Module' to...
1994
1995 * src/autofit/afmodule.h: ... this place.
1996 No longer include `afloader.h'.
1997
19982015-01-14 Behdad Esfahbod <behdad@behdad.org>
1999
Behdad Esfahbod3f9b3d82015-01-14 15:48:12 +01002000 * src/type42/t42objs.h (T42_DriverRec): Remove unused member.
2001
Werner Lemberg36d03c92015-01-12 11:26:30 +010020022015-01-12 Werner Lemberg <wl@gnu.org>
2003
2004 Fix Savannah bug #43976.
2005
2006 Assure that FreeType's internal include directories are found before
2007 `CPPFLAGS' (which might be set by the user in the environment), and
2008 `CPPFLAGS' before `CFLAGS'.
2009
2010 * builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'.
2011 (FT_COMPILE): Make this a special variable for compiling only the
2012 files handled in `freetype.mk'.
2013 (.c.$O): Removed, unused.
2014
2015 * src/*/rules.mk (*_COMPILE): Fix order of include directories.
2016
Werner Lembergd03a67a2015-01-11 08:39:14 +010020172015-01-11 Werner Lemberg <wl@gnu.org>
2018
Werner Lemberg95b57052015-01-11 09:50:49 +01002019 [truetype] Prettyfing.
2020
2021 * src/truetype/ttinterp.c (project, dualproj, fast_project,
2022 fast_dualproj): Rename to...
2023 (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this.
2024
20252015-01-11 Werner Lemberg <wl@gnu.org>
2026
Werner Lembergea173c02015-01-11 08:58:54 +01002027 * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify.
2028
2029 Based on a patch from Behdad.
2030
20312015-01-11 Werner Lemberg <wl@gnu.org>
2032
Werner Lemberg628578c2015-01-11 08:53:31 +01002033 * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call.
2034
20352015-01-11 Werner Lemberg <wl@gnu.org>
2036
Werner Lemberg08e79092015-01-11 08:45:50 +01002037 * src/truetype/ttinterp.c (Normalize): Remove unused argument.
2038
20392015-01-11 Werner Lemberg <wl@gnu.org>
2040
Werner Lembergd03a67a2015-01-11 08:39:14 +01002041 [truetype] More macro expansions.
2042
Werner Lemberg4aaadf42015-01-11 08:42:28 +01002043 * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by
2044 expansion.
2045
20462015-01-11 Werner Lemberg <wl@gnu.org>
2047
2048 [truetype] More macro expansions.
2049
Werner Lembergd03a67a2015-01-11 08:39:14 +01002050 * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion,
2051 adjusting funtion calls where necessary.
2052 (FT_UNUSED_ARG): Removed, no longer needed.
2053
Werner Lemberg1b4d68c2015-01-10 19:56:28 +010020542015-01-10 Werner Lemberg <wl@gnu.org>
2055
Werner Lembergeb341362015-01-11 00:23:27 +01002056 [truetype] More macro expansions.
2057
2058 Based on a patch from Behdad.
2059
2060 * src/truetype/ttinterp.c (DO_*): Expand macros into corresponding
2061 `Ins_*' functions.
2062 (TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls.
2063 (ARRAY_BOUND_ERROR): Remove second definition, which is no longer
2064 needed.
2065 (Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with...
2066 (Ins_SxyTCA): New function.
2067
20682015-01-10 Werner Lemberg <wl@gnu.org>
2069
Werner Lemberg01be1302015-01-10 23:05:37 +01002070 [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH.
2071
2072 Behdad suggested this code simplification, and nobody objected...
2073
2074 * include/config/ftoption.h, devel/ftoption.h
2075 (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove.
2076
2077 * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]:
2078 Remove related code.
2079 (ARRAY_BOUND_ERROR): Use do-while loop.
2080
20812015-01-10 Werner Lemberg <wl@gnu.org>
2082
Werner Lembergfae0c812015-01-10 20:23:10 +01002083 [truetype] More macro expansions.
2084
Werner Lemberg6cc1f122015-01-10 21:56:59 +01002085 * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_,
2086 EXEC_ARG): Remove by replacing with expansion.
2087
20882015-01-10 Werner Lemberg <wl@gnu.org>
2089
2090 [truetype] More macro expansions.
2091
Werner Lemberg24681452015-01-10 21:53:48 +01002092 Based on a patch from Behdad.
2093
2094 * src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize,
2095 SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move,
2096 CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem,
2097 CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt,
2098 CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round,
2099 COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing
2100 with expansion.
2101
2102 (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project,
2103 CUR_fast_dualproj): Replace with macros `project', `dualproj',
2104 `fast_project', `fast_dualproj'.
2105
21062015-01-10 Werner Lemberg <wl@gnu.org>
2107
2108 [truetype] More macro expansions.
2109
Werner Lembergfae0c812015-01-10 20:23:10 +01002110 * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing
2111 with expansion.
2112
21132015-01-10 Werner Lemberg <wl@gnu.org>
2114
Werner Lemberg5a752f32015-01-10 20:08:35 +01002115 [truetype] Remove code for static TrueType interpreter.
2116
2117 This is a follow-up patch.
2118
2119 * src/truetype/ttinterp.c, src/truetype/ttinterp.h
2120 [TT_CONFIG_OPTION_STATIC_INTERPRETER,
2121 TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code.
2122
21232015-01-10 Werner Lemberg <wl@gnu.org>
2124
Werner Lemberg1b4d68c2015-01-10 19:56:28 +01002125 * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion.
2126
2127 This starts a series of patches that simplifies the code of the
2128 bytecode interpreter.
2129
Werner Lemberg232bd942014-12-30 21:44:51 +010021302014-12-30 Werner Lemberg <wl@gnu.org>
2131
2132 * Version 2.5.5 released.
2133 =========================
2134
2135
2136 Tag sources with `VER-2-5-5'.
2137
2138 * docs/VERSION.DLL: Update documentation and bump version number to
2139 2.5.5.
2140
2141 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
2142 builds/windows/vc2005/index.html,
2143 builds/windows/vc2008/freetype.vcproj,
2144 builds/windows/vc2008/index.html,
2145 builds/windows/vc2010/freetype.vcxproj,
2146 builds/windows/vc2010/index.html,
2147 builds/windows/visualc/freetype.dsp,
2148 builds/windows/visualc/freetype.vcproj,
2149 builds/windows/visualc/index.html,
2150 builds/windows/visualce/freetype.dsp,
2151 builds/windows/visualce/freetype.vcproj,
2152 builds/windows/visualce/index.html,
2153 builds/wince/vc2005-ce/freetype.vcproj,
2154 builds/wince/vc2005-ce/index.html,
2155 builds/wince/vc2008-ce/freetype.vcproj,
2156 builds/wince/vc2008-ce/index.html: s/2.5.4/2.5.5/, s/254/255/.
2157
2158 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
2159
2160 * builds/unix/configure.raw (version_info): Set to 17:4:11.
2161 * CMakeLists.txt (VERSION_PATCH): Set to 5.
2162 * docs/CHANGES: Updated.
2163
2164 * builds/toplevel.mk (dist): Fix typos.
2165
Alexei Podtelezhnikov70241552014-12-24 12:11:46 -050021662014-12-24 Alexei Podtelezhnikov <apodtele@gmail.com>
2167
2168 [base] Formatting and nanooptimizations.
2169
2170 * src/base/ftcalc.c,
2171 * src/base/fttrigon.c: Revise sign restoration.
2172
Werner Lemberg06842c72014-12-13 07:42:51 +010021732014-12-13 Werner Lemberg <wl@gnu.org>
2174
2175 * src/pcf/pcfread.c (pcf_read_TOC): Improve fix from 2014-12-08.
2176
Werner Lembergb9438112014-12-11 13:33:14 +010021772014-12-11 Werner Lemberg <wl@gnu.org>
2178
Werner Lemberg82119502014-12-11 22:27:06 +01002179 * builds/toplevel.mk (dist): Use older POSIX standard for `tar'.
2180
2181 Apparently, BSD tar isn't capable yet of handling POSIX-1.2001
2182 (contrary to GNU tar), so force the POSIX-1.1988 format.
2183
2184 Problem reported by Stephen Fisher <sfisher@SDF.ORG>.
2185
21862014-12-11 Werner Lemberg <wl@gnu.org>
2187
Werner Lemberg812ed342014-12-11 14:07:29 +01002188 * src/type42/t42parse.c (t42_parse_sfnts): Reject invalid TTF size.
2189
21902014-12-11 Werner Lemberg <wl@gnu.org>
2191
Werner Lembergc9ca6ff2014-12-11 13:39:39 +01002192 * src/base/ftobjs.c (FT_Get_Glyph_Name): Fix off-by-one check.
2193
2194 Problem reported by Dennis Felsing <dennis@felsin9.de>.
2195
21962014-12-11 Werner Lemberg <wl@gnu.org>
2197
Werner Lembergb9438112014-12-11 13:33:14 +01002198 * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size'.
2199
2200 Problem reported by Dennis Felsing <dennis@felsin9.de>.
2201
suzuki toshiya2b592822014-12-10 00:27:41 +090022022014-12-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2203
suzuki toshiya9bd1e552014-12-09 14:51:52 +09002204 [gxvalid] Fix a naming convention conflicting with ftvalid.
2205
2206 See previous changeset for otvalid.
2207
2208 * src/gxvalid/{gxvcommn.h, gxvmort.h, gxvmorx.h}: Replace
2209 `valid' by `gxvalid'.
2210 * src/gxvalid/{gxvbsln.c, gxvcommn.c, gxvfeat.c, gxvjust.c,
2211 gxvkern.c, gxvlcar.c, gxvmort.c, gxvmort0.c, gxvmort1.c,
2212 gxvmort2.c, gxvmort4.c, gxvmort5.c, gxvmorx.c, gxvmorx0.c,
2213 gxvmorx1.c, gxvmorx2.c, gxvmorx4.c, gxvmorx5.c, gxvopbd.c,
2214 gxvprop.c, gxvtrak.c}: Replace `valid' by `gxvalid' if
2215 it is typed as GXV_Validator.
2216
22172014-12-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2218
suzuki toshiya51abdf62014-12-09 00:58:04 +09002219 [otvalid] Fix a naming convention conflicting with ftvalid.
2220
2221 Some prototypes in ftvalid.h use `valid' for the variables
2222 typed as FT_Validator. Their implementations in src/base/
2223 ftobjs.c and utilizations in src/sfnt/ttcmap.c do similar.
2224
2225 Some macros in otvcommn.h assume the exist of the variable
2226 `valid' typed as OTV_Validator in the caller.
2227
2228 Mixing these two conventions cause invalid pointer conversion
2229 and unexpected SEGV in longjmp. To prevent it, all variables
2230 typed as OTV_Validator are renamed to `otvalid'.
2231
2232 * src/otvalid/otvcommn.h: Replace `valid' by `otvalid'.
2233 * src/otvalid/{otvcommn.c, otvbase.c, otvgdef.c, otvgpos.c,
2234 otvgsub.c, otvjstf.c, otvmath.c}: Replace `valid' by `otvalid'
2235 if it is typed as OTV_Validator.
2236
22372014-12-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2238
suzuki toshiya2b592822014-12-10 00:27:41 +09002239 [ftvalid] Introduce FT_THROW() in FT_INVALID_XXX macros.
2240
2241 Original patch is designed by Werner Lemberg. Extra part
2242 for otvalid and gxvalid are added by suzuki toshiya, see
2243 discussion:
2244 http://lists.nongnu.org/archive/html/freetype-devel/2014-12/msg00002.html
2245 http://lists.nongnu.org/archive/html/freetype-devel/2014-12/msg00007.html
2246
2247 * include/internal/ftvalid.h: Introduce FT_THROW() in FT_INVALID_().
2248 * src/gxvalid/gxvcommn.h: Ditto.
2249 * src/otvalid/otvcommn.h: Ditto.
2250
Werner Lemberg74af85c2014-12-08 16:01:50 +010022512014-12-08 Werner Lemberg <wl@gnu.org>
2252
2253 [pcf] Fix Savannah bug #43774.
2254
2255 Work around `features' of X11's `pcfWriteFont' and `pcfReadFont'
2256 functions. Since the PCF format doesn't have an official
2257 specification, we have to exactly follow these functions' behaviour.
2258
2259 The problem was unveiled with a patch from 2014-11-06, fixing issue
2260 #43547.
2261
2262 * src/pcf/pcfread.c (pcf_read_TOC): Don't check table size for last
2263 element. Instead, assign real size.
2264
Werner Lemberg66883b52014-12-07 09:17:06 +010022652014-12-07 Werner Lemberg <wl@gnu.org>
2266
Werner Lemberg553c9672014-12-07 19:29:52 +01002267 Work around a bug in Borland's C++ compiler.
2268
2269 See
2270
2271 http://qc.embarcadero.com/wc/qcmain.aspx?d=118998
2272
2273 for Borland's bug tracker entry.
2274
2275 Reported by Yuliana Zigangirova <zigangirova@inbox.ru>,
2276 http://lists.gnu.org/archive/html/freetype-devel/2014-04/msg00001.html.
2277
2278 * include/internal/ftvalid.h (FT_ValidatorRec), src/smooth/ftgrays.c
2279 (gray_TWorker_): Move `ft_jmp_buf' field to be the first element.
2280
22812014-12-07 Werner Lemberg <wl@gnu.org>
2282
Werner Lemberg9870d6d2014-12-07 09:40:47 +01002283 */*: Decorate hex constants with `U' and `L' where appropriate.
2284
22852014-12-07 Werner Lemberg <wl@gnu.org>
2286
Werner Lemberg66883b52014-12-07 09:17:06 +01002287 [truetype] Prevent memory leak for buggy fonts.
2288
2289 * src/truetype/ttobjs.c (tt_size_done): Unconditionally call
2290 `tt_size_done_bytecode'.
2291
Werner Lemberg94926682014-12-06 07:11:44 +010022922014-12-06 Werner Lemberg <wl@gnu.org>
2293
2294 * Version 2.5.4 released.
2295 =========================
2296
2297
2298 Tag sources with `VER-2-5-4'.
2299
2300 * docs/VERSION.DLL: Update documentation and bump version number to
2301 2.5.4.
2302
2303 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
2304 builds/windows/vc2005/index.html,
2305 builds/windows/vc2008/freetype.vcproj,
2306 builds/windows/vc2008/index.html,
2307 builds/windows/vc2010/freetype.vcxproj,
2308 builds/windows/vc2010/index.html,
2309 builds/windows/visualc/freetype.dsp,
2310 builds/windows/visualc/freetype.vcproj,
2311 builds/windows/visualc/index.html,
2312 builds/windows/visualce/freetype.dsp,
2313 builds/windows/visualce/freetype.vcproj,
2314 builds/windows/visualce/index.html,
2315 builds/wince/vc2005-ce/freetype.vcproj,
2316 builds/wince/vc2005-ce/index.html,
2317 builds/wince/vc2008-ce/freetype.vcproj,
2318 builds/wince/vc2008-ce/index.html: s/2.5.3/2.5.4/, s/253/254/.
2319
2320 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
2321
2322 * builds/unix/configure.raw (version_info): Set to 17:3:11.
2323 * CMakeLists.txt (VERSION_PATCH): Set to 4.
2324 * docs/CHANGES: Updated.
2325
Werner Lemberg934ef382014-12-04 06:38:51 +010023262014-12-04 Werner Lemberg <wl@gnu.org>
2327
2328 docs/CHANGES: Updated, formatted.
2329
Dave Arnold2cdc4562014-12-04 06:10:16 +010023302014-12-04 Dave Arnold <darnold@adobe.com>
2331
Dave Arnoldf89396c2014-12-04 06:17:26 +01002332 [cff] Modify an FT_ASSERT.
2333
2334 * src/cff/cf2hints.c (cf2_hintmap_map): After the fix for Savannah
2335 bug #43661, the test font `...aspartam.otf' still triggers an
2336 FT_ASSERT. Since hintmap still works with count==0, ...
2337 (cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): ... add that term to
2338 suppress the assert.
2339
23402014-12-04 Dave Arnold <darnold@adobe.com>
2341
Dave Arnold2cdc4562014-12-04 06:10:16 +01002342 [cff] Fix Savannah bug #43661.
2343
2344 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
2345 cf2_cmdVSTEM, cf2_cmdHINTMASK>: Don't append to stem arrays after
2346 hintmask is constructed.
2347
2348 * src/cff/cf2hints.c (cf2_hintmap_build): Add defensive code to
2349 avoid reading past end of hintmask.
2350
Werner Lemberg16188eb2014-12-03 10:18:34 +010023512014-12-03 Werner Lemberg <wl@gnu.org>
2352
Werner Lemberg8fa69a82014-12-03 20:07:14 +01002353 docs/CHANGES: Updated.
2354
23552014-12-03 Werner Lemberg <wl@gnu.org>
2356
Werner Lemberga632b5f2014-12-03 19:30:44 +01002357 [autofit] Better fix for conversion specifiers in debug messages.
2358
2359 Using `%ld' for pointer differences causes warnings on 32bit
2360 platforms. The correct type would be (the relatively new) `%td',
2361 however, this is missing on some important platforms.
2362
2363 This patch improves the change from 2014-11-28.
2364
2365 * src/autofit/afhints.c (AF_INDEX_NUM): Use `int' typecast. Our
2366 pointer differences are always sufficiently small.
2367 (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
2368 af_glyph_hints_dump_edge): Revert to `%d' and use `AF_INDEX_NUM'.
2369
23702014-12-03 Werner Lemberg <wl@gnu.org>
2371
Werner Lemberg16188eb2014-12-03 10:18:34 +01002372 FT_Sfnt_Tag: s/ft_sfnt_xxx/FT_SFNT_XXX/ for orthogonality.
2373
2374 All public FreeType enumeration and flag values are uppercase...
2375
2376 * include/tttables.h (FT_Sfnt_Tag): Implement it. For backwards
2377 compatilibity, retain the old values as macros.
2378
2379 * src/base/ftfstype.c (FT_Get_FSType_Flags), src/sfnt/sfdriver.c
2380 (get_sfnt_table): Updated.
2381
Werner Lemberg2af25ac2014-12-02 08:38:57 +010023822014-12-02 Werner Lemberg <wl@gnu.org>
2383
Werner Lembergde43ace2014-12-02 23:06:04 +01002384 * include/*: Improve structure of documentation.
2385
2386 . Add and update many `<Order>' tags.
2387 . Apply various documentation fixes.
2388 . Remove details to deprecated (or never implemented) data.
2389
23902014-12-02 Werner Lemberg <wl@gnu.org>
2391
Werner Lembergca1f5cc2014-12-02 22:49:25 +01002392 [docmaker] Always handle `<Order>' section elements.
2393
2394 Previously, those elements were handled only for sections present in
2395 a `<Sections>' chapter element.
2396
2397 * src/tools/docmaker/content.py (ContentProcessor::finish):
2398 Implement it.
2399
24002014-12-02 Werner Lemberg <wl@gnu.org>
2401
Werner Lembergef6a3522014-12-02 21:16:59 +01002402 [docmaker] Properly handle empty rows in Synopsis.
2403
2404 * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Emit
2405 `&nbsp;' for empty fields.
2406
24072014-12-02 Werner Lemberg <wl@gnu.org>
2408
Werner Lemberg0e96f052014-12-02 11:08:31 +01002409 [docmaker] Thinko.
2410
2411 * src/tools/docmaker/content.py (DocBlock::get_markup_words_all):
2412 Emit `/empty/' string for first element also.
2413
24142014-12-02 Werner Lemberg <wl@gnu.org>
2415
Werner Lemberg102d4a72014-12-02 10:27:40 +01002416 [docmaker] Honour empty lines in `<Order>' section element.
2417
2418 This greatly improves the readability of the `Synopsis' links.
2419
2420 * src/tools/docmaker/content.py (DocBlock::get_markup_words_all):
2421 Insert string `/empty/' between items.
2422
2423 * src/tools/docmaker/formatter.py (Formatter::section_dump): Make it
2424 robust against nonexistent keys.
2425
2426 * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Emit
2427 empty <td> elements for `/empty/'.
2428
24292014-12-02 Werner Lemberg <wl@gnu.org>
2430
Werner Lemberg2af25ac2014-12-02 08:38:57 +01002431 [docmaker] Ensure Python 3 compatibility.
2432
2433 * src/tools/docmaker/content.py (ContentProcessor::set_section,
2434 ContentProcessor::finish): Replace `has_key' function with `in'
2435 keyword.
2436
2437 * src/tools/docmaker/formatter.py (Formatter::__init__): Replace
2438 sorting function with a key generator.
2439 (Formatter::add_identifier): Replace `has_key' function with `in'
2440 keyword.
2441
2442 * src/tools/docmaker/tohtml.py (HtmlFormatter::html_source_quote):
2443 Replace `has_key' function with `in' keyword.
2444 (HtmlFormatter::index_exit, HtmlFormatter::section_enter): Use
2445 integer division.
2446 s/<>/>/.
2447
2448 * src/tools/docmaker/utils.py: Import `itertools'.
2449 (index_sort): Replaced by...
2450 (index_key): ... this new key generator (doing exactly the same).
2451
Werner Lemberg8f795112014-11-29 06:49:15 +010024522014-11-29 Werner Lemberg <wl@gnu.org>
2453
Werner Lemberg80bfeb12014-12-01 10:07:52 +01002454 [docmaker] Don't output a block multiple times.
2455
2456 This bug was hidden by not processing all lines of `<Order>' blocks.
2457
2458 * src/tools/docmaker/formatter.py (Formatter::section_dump): Filter
2459 out field names.
2460
24612014-11-29 Werner Lemberg <wl@gnu.org>
2462
Werner Lemberg0dbad762014-12-01 08:44:48 +01002463 [docmaker] Use field values as HTML link targets where possible.
2464
2465 * src/tools/docmaker/tohtml.py (HtmlFormatter::make_block_url):
2466 Accept second, optional argument to specify a name.
2467 (HtmlFormatter::html_source_quote): Link to field ID if possible.
2468 (HtmlFormatter::print_html_field_list): Emit `id' attribute.
2469
24702014-11-29 Werner Lemberg <wl@gnu.org>
2471
Werner Lemberg785b1d02014-11-30 22:16:34 +01002472 [docmaker] Allow empty lines in `<Order>' blocks.
2473
2474 Before this patch, the suggested order of entries stopped at the
2475 first empty line.
2476
2477 Obviously, nobody noticed that this problem caused a much reduced
2478 set of links in the `Synopsis' sections; in particular, the
2479 `<Order>' blocks contain a lot of entries that wouldn't be listed
2480 otherwise...
2481
2482 * src/tools/docmaker/content.py (DocBlock::get_markup_words_all):
2483 New function to iterate over all items.
2484 (DocSection::process): Use it.
2485
24862014-11-29 Werner Lemberg <wl@gnu.org>
2487
Werner Lemberg16b3e622014-11-30 20:58:27 +01002488 * src/tools/docmaker/sources.py (column) [Format 2]: Fix regexp.
2489
2490 After the single asterisk there must be no other immediately following
2491 asterisk.
2492
24932014-11-29 Werner Lemberg <wl@gnu.org>
2494
Werner Lemberg434bc692014-11-29 23:12:55 +01002495 * src/tools/docmaker/tohtml.py: Improve CSS for vertical spacing.
Werner Lemberg51987ea2014-11-29 22:19:29 +01002496
Werner Lemberg434bc692014-11-29 23:12:55 +010024972014-11-29 Werner Lemberg <wl@gnu.org>
2498
2499 [docmaker] Improve HTML code for table of contents.
2500
2501 * src/tools/docmaker/tohtml.py: Introduce a new table class `toc',
Werner Lemberg51987ea2014-11-29 22:19:29 +01002502 together with proper CSS.
2503
25042014-11-29 Werner Lemberg <wl@gnu.org>
2505
Werner Lembergaa834ce2014-11-29 20:08:29 +01002506 [docmaker] Provide higher-level markup and simplify HTML.
2507
2508 * src/tools/docmaker/tohtml.py: Instead of using extraneous `<div>'
2509 elements, use CSS descendants (of class `section') to format the
2510 data.
2511
2512 Also remove reduntant <p> and <br> elements, replacing them with
2513 proper CSS.
2514
2515 Globally reduce page width to 75%.
2516
2517 (block_header): Rename <div> class to `section'.
2518
25192014-11-29 Werner Lemberg <wl@gnu.org>
2520
Werner Lemberg3bb97022014-11-29 16:12:37 +01002521 [docmaker] Add `top' links after blocks.
2522
2523 * src/tools/docmaker/tohtml.py (block_footer_middle): Implement it.
2524
25252014-11-29 Werner Lemberg <wl@gnu.org>
2526
Werner Lemberga31f9712014-11-29 07:18:44 +01002527 * src/tools/docmaker/tohtml.py: Improve CSS for fields.
2528
Werner Lemberg3bb97022014-11-29 16:12:37 +01002529 Make fields align horizontally relative to full line width.
Werner Lemberga31f9712014-11-29 07:18:44 +01002530
25312014-11-29 Werner Lemberg <wl@gnu.org>
2532
Werner Lemberg8f795112014-11-29 06:49:15 +01002533 * src/tools/docmaker/tohtml.py: Fix index and TOC templates.
2534
2535 This thinko was introduced 2014-11-27.
2536
Werner Lembergba1ba0c2014-11-28 22:04:14 +010025372014-11-28 Werner Lemberg <wl@gnu.org>
2538
2539 [docmaker] Format field lists with CSS.
2540
2541 This also simplifies the inserted HTML code.
2542
2543 * src/tools/docmaker/tohtml.py
2544 (HtmlFormatter::print_html_field_list): Do it.
2545
suzuki toshiya348fffa2014-11-28 16:05:59 +090025462014-11-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2547
2548 Fix compiler warning to the comparison between signed and
2549 unsigned variable.
2550
2551 * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Fix the comparison
2552 between `ypos + ysize' and FT_INT_{MAX,MIN}.
2553
Werner Lembergba1ba0c2014-11-28 22:04:14 +010025542014-11-28 Werner Lemberg <wl@gnu.org>
Werner Lemberg984e0712014-11-28 05:33:58 +01002555
Werner Lembergba1ba0c2014-11-28 22:04:14 +01002556 [docmaker] Replace empty `<td>' with CSS.
Werner Lemberg46d4dc82014-11-28 05:49:56 +01002557
2558 * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Do
2559 it.
2560
Werner Lembergba1ba0c2014-11-28 22:04:14 +010025612014-11-28 Werner Lemberg <wl@gnu.org>
Werner Lemberg46d4dc82014-11-28 05:49:56 +01002562
Werner Lemberg984e0712014-11-28 05:33:58 +01002563 [docmaker] Replace some `<table>' tags with `<h4>' and `<div>'.
2564
2565 * src/tools/docmaker/tohtml.py (marker_*): Use `<h4>'.
2566 (source_*): Use `<div>'.
2567 (HtmlFormatter::block_enter): s/<h4>/<h3>/.
2568
suzuki toshiya9ee6a0a2014-11-28 11:14:18 +090025692014-11-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2570
2571 Fix compiler warning to conversion specifiers in debug messages.
2572
2573 * src/autofit/afhints.c (af_glyph_hints_dump_points): Add length
Werner Lemberga632b5f2014-12-03 19:30:44 +01002574 modifier to dump long integers.
2575 (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Ditto.
suzuki toshiya9ee6a0a2014-11-28 11:14:18 +09002576
Werner Lemberg26d699e2014-11-27 19:22:52 +010025772014-11-27 Werner Lemberg <wl@gnu.org>
2578
Werner Lemberg984e0712014-11-28 05:33:58 +01002579 * src/tools/docmaker/tohtml.py: Use more CSS for index.
Werner Lemberg7ea36342014-11-27 19:38:31 +01002580
25812014-11-27 Werner Lemberg <wl@gnu.org>
2582
Werner Lembergedcf8172014-11-27 19:28:48 +01002583 [docmaker] Replace `name' attribute of `<a>' with `id'.
2584
2585 * src/tools/docmaker/tohtml.py (HtmlFormatter::block_enter): Do it.
2586
25872014-11-27 Werner Lemberg <wl@gnu.org>
2588
Werner Lemberg26d699e2014-11-27 19:22:52 +01002589 * src/tools/docmaker/tohtml.py: Remove remaining `width' attributes.
2590
2591 For `Index' and `TOC' links, we now simply use the `text-align' CSS
2592 property of `<td>' to enforce flush-left and flush-right,
2593 eliminating the hack with an empty, full-width `<td>' element
2594 inbetween.
2595
2596 The change also enforces the same (smaller) size for all index and
2597 TOC links.
2598
suzuki toshiya2676e072014-11-28 00:58:25 +090025992014-11-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2600
suzuki toshiya1b12f5d2014-11-28 01:22:26 +09002601 * src/cff/cf2font.c: Include `ftcalc.h' to use FT_MSB(),
2602 cf2font.c could not find it under `make multi' build.
2603
26042014-11-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2605
suzuki toshiya2676e072014-11-28 00:58:25 +09002606 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove
2607 unrequired negative value check for `width' and `height'.
2608
Werner Lemberg8585cf52014-11-27 10:49:05 +010026092014-11-27 Werner Lemberg <wl@gnu.org>
2610
Werner Lembergdd3fee02014-11-27 13:20:52 +01002611 * src/tools/docmaker/tohtml.py: More HTML table refactoring.
2612
2613 Replace some `<table>' tags with `<div>' to simplify structure.
2614
2615 Move `bgcolor' attribute to CSS.
2616
2617 Replace most `width' attributes with CSS. The remaining instances
2618 (providing a similar effect as LaTeX's `\hfill' command) are removed
2619 in a later patch.
2620
26212014-11-27 Werner Lemberg <wl@gnu.org>
2622
Werner Lemberga5ad26a2014-11-27 10:52:24 +01002623 * src/tools/docmaker/tohtml.py: Replace <font> with CSS.
2624
26252014-11-27 Werner Lemberg <wl@gnu.org>
2626
Werner Lembergba67c612014-11-27 10:51:49 +01002627 * src/tools/docmaker/tohtml.py: Center <table> with CSS.
2628
26292014-11-27 Werner Lemberg <wl@gnu.org>
2630
Werner Lemberg5594fa52014-11-27 10:50:50 +01002631 * src/tools/docmaker/tohtml.py: Replace `<center>' with `<div>'.
2632
26332014-11-27 Werner Lemberg <wl@gnu.org>
2634
Werner Lemberg8585cf52014-11-27 10:49:05 +01002635 * src/tools/docmaker/tohtml.py: Remove redundant `<center>' tags.
2636
2637 This starts a series of commits into the direction of generating
2638 valid HTML 5 code, especially using much more CSS.
2639
suzuki toshiya1b057042014-11-27 17:53:20 +090026402014-11-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2641
2642 Prevent too negative values (< FT_INT_MIN) in bitmap metrics,
2643 suggested by Alexei.
2644
2645 * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Prevent too
2646 negative values in `xpos' and `ypos + ysize'.
2647 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Prevent
2648 too negative values in `x_left' and `y_top'. Either negative
2649 values in `width' and `height' are checked.
2650
Werner Lemberg3d167cb2014-11-27 05:19:41 +010026512014-11-27 Werner Lemberg <wl@gnu.org>
2652
Werner Lembergc52882a2014-11-27 08:01:25 +01002653 [docmaker] Produce better HTML code.
2654
2655 * src/tools/docmaker/tohtml.py: Always use double quotes for
2656 attribute values.
2657 (source_footer): Close `td' and `tr' groups.
2658
26592014-11-27 Werner Lemberg <wl@gnu.org>
2660
Werner Lembergdbb93152014-11-27 07:20:48 +01002661 Use better way to disable creation of .pyc files for `make refdoc'.
2662
2663 Python 2.6 was released in 2008...
2664
2665 * builds/freetype.mk (refdoc): Use python's `-B' option.
2666
2667 * builds/detect.mk (std_setup, dos_setup): Mention required python
2668 version for `refdoc' target.
2669
26702014-11-27 Werner Lemberg <wl@gnu.org>
2671
Werner Lemberge8a5c332014-11-27 06:48:37 +01002672 * src/tools/docmaker/sources.py (re_bold, re_italic): Use
2673 non-grouping parentheses.
2674 * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word):
2675 Updated.
2676
26772014-11-27 Werner Lemberg <wl@gnu.org>
2678
Werner Lemberg3d167cb2014-11-27 05:19:41 +01002679 * src/base/ftobjs.c (FT_Get_Glyph_Name): Fix compiler warning.
2680
2681 Introdruced in previous change. Reported by Alexei.
2682
Werner Lemberga593a042014-11-26 18:42:48 +010026832014-11-26 Werner Lemberg <wl@gnu.org>
2684
Werner Lembergf34f1922014-11-26 21:59:21 +01002685 * src/*: Add checks for parameters of API functions where missing.
2686
2687 `API functions' are functions tagged with `FT_EXPORT_DEF'.
2688
2689 Besides trivial fixes, the following changes are included, too.
2690
2691 * src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Set
2692 error code if no service is available.
2693
2694 * src/base/ftinit.c (FT_Done_FreeType): Change return value for
2695 invalid `library' parameter to `Invalid_Library_Handle'.
2696
2697 * src/base/ftobjs.c (FT_New_Size): Change return value for invalid
2698 `asize' parameter to `Invalid_Argument'.
2699
2700 * src/base/ftoutln.c (FT_Outline_Copy): Change return value for
2701 invalid `source' and `target' parameters to `Invalid_Outline'.
2702 (FT_Outline_Done_Internal): Change return value for invalid
2703 `outline' parameter to `Invalid_Outline'.
2704
27052014-11-26 Werner Lemberg <wl@gnu.org>
2706
Werner Lemberga593a042014-11-26 18:42:48 +01002707 * src/cache/ftcbasic.c: Use single calls to `FT_TRACE'.
2708
suzuki toshiya5aff8532014-11-26 14:36:12 +090027092014-11-26 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2710
suzuki toshiyacd4a5a22014-11-27 00:20:48 +09002711 * src/base/ftobj.c (Mac_Read_POST_Resource): Additional
2712 overflow check in the summation of POST fragment lengths,
2713 suggested by Mateusz Jurczyk <mjurczyk@google.com>.
2714
27152014-11-26 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2716
suzuki toshiya1720e812014-11-26 16:39:00 +09002717 * src/base/ftobjs.c (Mac_Read_POST_Resource): Insert comments
2718 and fold too long tracing messages.
2719
27202014-11-26 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2721
suzuki toshiya18a8f0d2014-11-26 16:11:38 +09002722 Fix Savannah bug #43540.
2723
2724 * src/base/ftmac.c (parse_fond): Prevent a buffer overrun
2725 caused by a font including too many (> 63) strings to store
2726 names[] table.
2727
27282014-11-26 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2729
suzuki toshiya45331672014-11-26 16:02:17 +09002730 * src/base/ftobjs.c (Mac_Read_POST_Resource): Use unsigned long
2731 variables to read the lengths in POST fragments. Suggested by
2732 Mateusz Jurczyk <mjurczyk@google.com>.
2733
27342014-11-26 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2735
suzuki toshiya35252ae2014-11-26 15:52:23 +09002736 Fix Savannah bug #43539.
2737
2738 * src/base/ftobjs.c (Mac_Read_POST_Resource): Fix integer overflow
2739 by a broken POST table in resource-fork.
2740
27412014-11-26 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2742
suzuki toshiya240c94a2014-11-26 15:43:29 +09002743 Fix Savannah bug #43538.
2744
2745 * src/base/ftobjs.c (Mac_Read_POST_Resource): Fix integer overflow
2746 by a broken POST table in resource-fork.
2747
27482014-11-26 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2749
suzuki toshiya5aff8532014-11-26 14:36:12 +09002750 * src/base/ftobjs.c (Mac_Read_POST_Resource): Avoid memory leak
2751 by a broken POST table in resource-fork. Return after freeing
2752 the buffered POST table when it is found to be broken.
2753
Werner Lemberg04edbbd2014-11-25 10:21:13 +010027542014-11-25 Werner Lemberg <wl@gnu.org>
2755
Werner Lemberg02b8e7e2014-11-25 11:31:51 +01002756 */*: s/Invalid_Argument/Invalid_Size_Handle/ where appropriate.
2757
27582014-11-25 Werner Lemberg <wl@gnu.org>
2759
Werner Lemberg0d4aa232014-11-25 11:26:14 +01002760 */*: s/Invalid_Argument/Invalid_Stream_Handle/ where appropriate.
2761
27622014-11-25 Werner Lemberg <wl@gnu.org>
2763
Werner Lembergf4f9e682014-11-25 11:11:55 +01002764 */*: s/Invalid_Argument/Invalid_Library_Handle/ where appropriate.
2765
27662014-11-25 Werner Lemberg <wl@gnu.org>
2767
Werner Lemberg04c2aa12014-11-25 10:22:12 +01002768 */*: s/Invalid_Argument/Invalid_Outline/ where appropriate.
2769
27702014-11-25 Werner Lemberg <wl@gnu.org>
2771
Werner Lemberg04edbbd2014-11-25 10:21:13 +01002772 */*: s/Invalid_Argument/Invalid_Face_Handle/ where appropriate.
2773
Werner Lembergeca0f062014-11-24 10:22:08 +010027742014-11-24 Werner Lemberg <wl@gnu.org>
2775
Werner Lemberg3e867112014-11-25 09:01:07 +01002776 [Savannah bug #43682] Adjust some renderer callbacks.
2777
2778 * src/raster/ftraster.c (ft_black_set_mode): Change return type to
2779 `int' to stay in sync with `FT_Renderer_SetModeFunc' prototype.
2780
2781 * src/smooth/ftgrays.c (gray_raster_set_mode): New dummy function
2782 for orthogonality.
2783 (ft_grays_raster): Use it.
2784
Werner Lemberg04edbbd2014-11-25 10:21:13 +010027852014-11-25 Werner Lemberg <wl@gnu.org>
Werner Lemberg3e867112014-11-25 09:01:07 +01002786
Werner Lemberg6689a002014-11-25 08:53:09 +01002787 [Savannah bug #43682] Properly handle missing return errors.
2788
2789 The functions in this patch *do* return non-trivial errors that must
2790 be taken care of.
2791
2792 * src/autofit/afloader.c (af_loader_load_g), src/base/ftobjs.c
2793 (FT_Render_Glyph_Internal), src/base/ftoutln.c (FT_Outline_Render),
2794 src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_endchar>,
2795 src/psaux/psobjs.c (ps_parser_load_field_table), src/psaux/t1decode
2796 (t1_decoder_parse_charstrings) <op_endchar>, src/truetype/ttgload.c
2797 (load_truetype_glyph <subglyph loop>, tt_loader_init,
2798 TT_Load_Glyph), src/truetype/ttgxvar.c (TT_Set_MM_Blend),
2799 src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Do it.
2800
Werner Lemberg04edbbd2014-11-25 10:21:13 +010028012014-11-25 Werner Lemberg <wl@gnu.org>
Werner Lemberg6689a002014-11-25 08:53:09 +01002802
Werner Lembergb24e8ba2014-11-25 08:30:49 +01002803 [Savannah bug #43682] Add/remove `void' casts to some functions.
2804
2805 We use a cast to indicate that we intentionally ignore a function's
2806 return value. However, this doesn't apply to API functions where
2807 errors can only happen for trivially invalid input.
2808
2809 * src/base/ftstroke.c (FT_Glyph_Stroke, FT_Glyph_StrokeBorder),
2810 src/base/ftsynth.c (FT_GlyphSlot_Embolden), src/cff/cffgload.c
2811 (cff_slot_load), src/pfr/pfrdrivr.c (pfr_get_kerning),
2812 src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
2813 (t42_parse_encoding): Do it.
2814
Werner Lemberg04edbbd2014-11-25 10:21:13 +010028152014-11-25 Werner Lemberg <wl@gnu.org>
Werner Lembergb24e8ba2014-11-25 08:30:49 +01002816
Werner Lembergef439fd2014-11-25 08:14:15 +01002817 [Savannah bug #43682] Change some signatures to `void' return type.
2818
2819 * include/internal/pshints.h (PSH_Globals_SetScaleFunc),
2820 include/internal/sfnt.h (TT_Get_Metrics_Func),
2821 src/pshinter/pshglob.c (psh_globals_set_scale),
2822 src/pshinter/pshrec.c (ps_hints_init), src/sfnt/ttmtx.c
2823 (tt_face_get_metrics), src/truetype/ttinterp.c (TT_Goto_CodeRange,
2824 TT_Set_CodeRange, TT_Clear_CodeRange, TT_Done_Context,
2825 TT_Save_Context): Do it.
2826
2827 * src/pshinter/pshglob.h, src/pshinter/pshrec.h, src/sfnt/ttmtx.h,
2828 src/truetype/ttgload.c (TT_Hint_Glyph), src/truetype/ttinterp.c
2829 (TT_Run_Context), src/truetype/ttinterp.h, src/truetype/ttobjs.c
2830 (tt_size_run_fpgm, tt_size_run_prep): Updated.
2831
28322014-11-24 Werner Lemberg <wl@gnu.org>
2833
Werner Lemberg6889f7b2014-11-24 17:16:08 +01002834 Remove all code related to FT_MAX_CHARMAP_CACHEABLE.
2835
2836 This is no longer used.
2837
2838 * src/base/ftobjs.c, src/cache/ftccmap.c, src/cff/cffobjs.c,
2839 src/sfnt/ttcmap.c: Do it.
2840
28412014-11-24 Werner Lemberg <wl@gnu.org>
2842
Werner Lembergf0292bb2014-11-24 10:51:21 +01002843 [sfnt] Fix Savannah bug #43680.
2844
2845 This adds an additional constraint to make the fix from 2013-01-25
2846 really work.
2847
2848 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_image) <index_format==4>:
2849 Check `p' before `num_glyphs'.
2850
28512014-11-24 Werner Lemberg <wl@gnu.org>
2852
Werner Lembergeca0f062014-11-24 10:22:08 +01002853 [truetype] Fix Savannah bug #43679.
2854
2855 * src/truetype/ttpload.c (tt_face_load_hdmx): Check minimum size of
2856 `record_size'.
2857
Jarkko Pöyry96341dc2014-11-24 09:53:07 +010028582014-11-24 Jarkko Pöyry <jarkko.poyry@gmail.com>
2859
2860 [cff, pfr, psaux, winfonts] Fix Savannah bug #43676.
2861
Werner Lemberged6a9df2014-12-06 23:28:58 +01002862 Don't cast cmap init function pointers to an incompatible type.
Jarkko Pöyry96341dc2014-11-24 09:53:07 +01002863
2864 Without this patch, the number of parameters between declaration and
2865 the real signature differs. Calling such a function results in
2866 undefined behavior.
2867
2868 ISO/IEC 9899:TC3 (Committee Draft September 7, 2007)
2869 6.5.2.2 Function calls
2870 9 If the function is defined with a type that is not
2871 compatible with the type (of the expression) pointed to by
2872 the expression that denotes the called function, the
2873 behavior is undefined.
2874
2875 On certain platforms (c -> js with emscripten) this causes
2876 termination of execution or invalid calls because in the emscripten
2877 implementation, function pointers of different types are stored in
2878 different pointer arrays. Incorrect pointer type here results in
2879 indexing of an incorrect array.
2880
2881 * src/cff/cffcmap.c (cff_cmap_encoding_init, cff_cmap_unicode_init),
2882 src/pfr/pfrcmap.c (pfr_cmap_init), src/psaux/t1cmap.c
2883 t1_cmap_standard_init, t1_cmap_expert_init, t1_cmap_custom_init,
2884 t1_cmap_unicode_init), src/winfonts/winfnt.c (fnt_cmap_init): Fix
2885 signature.
2886
Werner Lemberga7a42072014-11-24 06:44:45 +010028872014-11-24 Werner Lemberg <wl@gnu.org>
2888
Werner Lembergf70d9342014-11-24 09:31:32 +01002889 [sfnt] Fix Savannah bug #43672.
2890
2891 * src/sfnt/ttkern.c (tt_face_load_kern): Use correct value for
2892 minimum table length test.
2893
28942014-11-24 Werner Lemberg <wl@gnu.org>
2895
Werner Lemberg73be9f92014-11-24 07:30:05 +01002896 [type1, type42] Another fix for Savannah bug #43655.
2897
2898 * src/type1/t1load.c (parse_charstrings), src/type42/t42parse.c
2899 (t42_parse_charstrings): Add another boundary testing.
2900
29012014-11-24 Werner Lemberg <wl@gnu.org>
2902
Werner Lemberga7a42072014-11-24 06:44:45 +01002903 [docmaker] Formatting, copyright, improved documentation.
2904
2905 * src/tools/docmaker/*: No code changes besides trivial
2906 modifications.
2907
Werner Lemberg9bd20b72014-11-22 06:24:45 +010029082014-11-22 Werner Lemberg <wl@gnu.org>
2909
Werner Lembergaf834612014-11-22 13:29:10 +01002910 [bdf] Fix Savannah bug #43660.
2911
2912 * src/bdf/bdflib.c (_bdf_parse_glyphs) <"ENDFONT">: Check
2913 `_BDF_GLYPH_BITS'.
2914
29152014-11-22 Werner Lemberg <wl@gnu.org>
2916
Werner Lemberg42fcd662014-11-22 12:44:33 +01002917 [type42] Allow only embedded TrueType fonts.
2918
2919 This is a follow-up to Savannah bug #43659.
2920
2921 * src/type42/t42objs.c (T42_Face_Init): Exclusively use the
2922 `truetype' font driver for loading the font contained in the `sfnts'
2923 array.
2924
29252014-11-22 Werner Lemberg <wl@gnu.org>
2926
Werner Lemberg37881872014-11-22 10:46:47 +01002927 [type42] Fix Savannah bug #43659.
2928
2929 * src/type42/t42objs.c (T42_Open_Face): Initialize `face->ttf_size'.
2930
2931 * src/type42/t42parse.c (t42_parse_sfnts): Always set
2932 `face->ttf_size' directly. This ensures a correct stream size in
2933 the call to `FT_Open_Face', which follows after parsing, even for
2934 buggy input data.
2935 Fix error messages.
2936
29372014-11-22 Werner Lemberg <wl@gnu.org>
2938
Werner Lemberg5f201ab2014-11-22 09:16:39 +01002939 [cff] Fix Savannah bug #43658.
2940
2941 * src/cff/cf2ft.c (cf2_builder_lineTo, cf2_builder_cubeTo): Handle
2942 return values of point allocation routines.
2943
29442014-11-22 Werner Lemberg <wl@gnu.org>
2945
Werner Lemberg9bd20b72014-11-22 06:24:45 +01002946 [sfnt] Fix Savannah bug #43656.
2947
2948 * src/sfnt/ttcmap.c (tt_cmap4_validate): Fix order of validity
2949 tests.
2950
Werner Lemberg6de76172014-11-21 06:05:49 +010029512014-11-21 Werner Lemberg <wl@gnu.org>
2952
Werner Lembergdd897102014-11-21 22:19:28 +01002953 [type1, type42] Fix Savannah bug #43655.
2954
2955 * src/type1/t1load.c (parse_charstrings), src/type42/t42parse.c
2956 (t42_parse_charstrings): Fix boundary testing.
2957
29582014-11-21 Werner Lemberg <wl@gnu.org>
2959
Werner Lembergb1fc00d2014-11-21 12:06:40 +01002960 * src/pcf/pcfread.c (pcf_get_metrics): Sanitize invalid metrics.
2961
29622014-11-21 Werner Lemberg <wl@gnu.org>
2963
Werner Lemberg9154dab2014-11-21 08:03:51 +01002964 [ftlcdfil] Obey flow direction.
2965
2966 * src/base/ftlcdfil.c (_ft_lcd_filter_fir, _ft_lcd_filter_legacy):
2967 Handle `up' flow.
2968
29692014-11-21 Werner Lemberg <wl@gnu.org>
2970
Werner Lemberg644d6fa2014-11-21 07:28:50 +01002971 * src/base/ftbitmap.c (FT_Bitmap_Convert): Improve.
2972
2973 This commit completes argument checks and adds support for different
2974 flow directions.
2975
29762014-11-21 Werner Lemberg <wl@gnu.org>
2977
Werner Lemberg6de76172014-11-21 06:05:49 +01002978 * src/base/ftbitmap.c (FT_Bitmap_Copy): Improve.
2979
2980 This commit adds argument checks and support for different flow
2981 directions.
2982
Werner Lemberg1e6e1b82014-11-20 21:07:56 +010029832014-11-20 Werner Lemberg <wl@gnu.org>
2984
2985 * src/base/ftbitmap.c (FT_Bitmap_New): Check argument.
2986
Werner Lembergd6061212014-11-19 21:13:23 +010029872014-11-19 Werner Lemberg <wl@gnu.org>
2988
Werner Lembergb3500af2014-11-19 21:28:21 +01002989 Change some fields in `FT_Bitmap' to unsigned type.
2990
2991 This doesn't break ABI.
2992
2993 * include/ftimage.h (FT_Bitmap): Make `rows', `width', `num_grays',
2994 `pixel_mode', and `palette_mode' unsigned types.
2995
2996 * src/base/ftbitmap.c: Updated.
2997 (FT_Bitmap_Copy): Fix casts.
2998
2999 * src/cache/ftcsbits.c, src/raster/ftraster.c, src/sfnt/pngshim.c:
3000 Updated.
3001
30022014-11-19 Werner Lemberg <wl@gnu.org>
3003
Werner Lembergdf485772014-11-19 21:21:23 +01003004 Make `FT_Bitmap_Convert' correctly handle negative `pitch' values.
3005
3006 * src/base/ftbitmap.c (FT_Bitmap_Convert): Always use positive value
3007 for the pitch while copying data.
3008 Correctly set pitch sign in target bitmap.
3009
30102014-11-19 Werner Lemberg <wl@gnu.org>
3011
Werner Lembergd6061212014-11-19 21:13:23 +01003012 Minor code improvement in `FT_Bitmap_Embolden'.
3013
3014 * src/base/ftbitmap.c (FT_Bitmap_Embolden) <FT_PIXEL_MODE_GRAY[24]>:
3015 Fix thinko.
3016
Alexei Podtelezhnikovf841ad32014-11-19 21:19:06 -050030172014-11-19 Alexei Podtelezhnikov <apodtele@gmail.com>
3018
3019 * src/base/fttrigon.c: Use dedicated `FT_Angle' for arctan table.
3020
Werner Lemberga67c43e2014-11-19 06:46:23 +010030212014-11-19 Behdad Esfahbod <behdad@behdad.org>
3022
3023 Avoid compiler warnings on x86-64 for `FT_MulFix'.
3024
3025 `FT_MulFix' takes `FT_Long' parameters as defined in `freetype.h',
3026 but several inline implementations of it in `ftcalc.h' take
3027 `FT_Int32' arguments. This is causing compiler warnings on x86-64:
3028 If parameters of type `FT_Fixed' (= `FT_Long') are passed to the
3029 inline implementation of this function, integer values are truncated
3030 from 64bit to 32bit.
3031
3032 * include/internal/ftcalc.h (FT_MulFix) [FT_MULFIX_ASSEMBLER]: Add
3033 casts.
3034
Werner Lemberg54abd222014-11-15 09:05:22 +010030352014-11-15 Werner Lemberg <wl@gnu.org>
3036
3037 [sfnt] Fix Savannah bug #43597.
3038
3039 * src/sfnt/pngshim.c (Load_SBit_Png): Protect against too large
3040 bitmaps.
3041
Werner Lemberg602040b2014-11-12 20:51:20 +010030422014-11-12 Werner Lemberg <wl@gnu.org>
3043
Werner Lemberg257c2702014-11-12 21:42:13 +01003044 [sfnt] Fix Savannah bug #43591.
3045
3046 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Protect against addition
3047 and multiplication overflow.
3048
30492014-11-12 Werner Lemberg <wl@gnu.org>
3050
Werner Lemberg677ddf42014-11-12 21:26:44 +01003051 [sfnt] Fix Savannah bug #43590.
3052
3053 * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir):
3054 Protect against addition overflow.
3055
30562014-11-12 Werner Lemberg <wl@gnu.org>
3057
Werner Lembergf46add12014-11-12 21:06:08 +01003058 [sfnt] Fix Savannah bug #43589.
3059
3060 * src/sfnt/sfobjs.c (woff_open_font): Protect against addition
3061 overflow.
3062
30632014-11-12 Werner Lemberg <wl@gnu.org>
3064
Werner Lemberg602040b2014-11-12 20:51:20 +01003065 [sfnt] Fix Savannah bug #43588.
3066
3067 * src/sfnt/ttcmap.c (tt_cmap8_validate, tt_cmap10_validate,
3068 tt_cmap12_validate, tt_cmap13_validate, tt_cmap14_validate): Protect
3069 against overflow in additions and multiplications.
3070
Alexei Podtelezhnikov2e73a1b2014-11-09 23:22:43 -050030712014-11-10 Alexei Podtelezhnikov <apodtele@gmail.com>
3072
3073 [base] CORDIC improvements.
3074
3075 The scaling between the hypotenuse and its CORDIC approximation is
3076 based on regression analysis. The smaller padding for `theta' is
3077 justifed by its maximum error of less than 6.
3078
3079 * src/base/fttrigon.c (ft_trig_downscale): Borrow code from
3080 ./ftcalc.c (ft_multo64), change linear intercept.
3081 (ft_trig_pseudo_polarize): Decrease `theta' padding.
3082
Werner Lemberg0e73d212014-11-09 01:27:38 +010030832014-11-09 Werner Lemberg <wl@gnu.org>
3084
3085 * src/base/ftstroke.c (ft_stroker_inside): Fix border intersections.
3086
3087 One more place to check whether `radius' is zero.
3088
3089 Problem reported by Marco Wertz <marco.wertz@gmx.de>.
3090
Werner Lemberg2c4832d2014-11-07 07:42:33 +010030912014-11-07 Werner Lemberg <wl@gnu.org>
3092
Werner Lemberg602040b2014-11-12 20:51:20 +01003093 [bdf] Fix Savannah bug #43535.
Werner Lemberg2c4832d2014-11-07 07:42:33 +01003094
3095 * src/bdf/bdflib.c (_bdf_strncmp): New macro that checks one
3096 character more than `strncmp'.
3097 s/ft_strncmp/_bdf_strncmp/ everywhere.
3098
Werner Lembergf49a1002014-11-06 13:30:28 +010030992014-11-06 Werner Lemberg <wl@gnu.org>
3100
Werner Lemberg602040b2014-11-12 20:51:20 +01003101 [pcf] Fix Savannah bug #43548.
Werner Lembergef1eba72014-11-06 23:25:05 +01003102
Werner Lemberg2c4832d2014-11-07 07:42:33 +01003103 * src/pcf/pcfread.c (pcf_get_encodings): Add sanity checks for row
3104 and column values.
Werner Lembergef1eba72014-11-06 23:25:05 +01003105
31062014-11-06 Werner Lemberg <wl@gnu.org>
3107
Werner Lemberg602040b2014-11-12 20:51:20 +01003108 [pcf] Fix Savannah bug #43547.
Werner Lemberg0e2f5d52014-11-06 22:32:46 +01003109
3110 * src/pcf/pcfread.c (pcf_read_TOC): Check `size' and `offset'
3111 values.
3112
31132014-11-06 Werner Lemberg <wl@gnu.org>
3114
Werner Lembergf49a1002014-11-06 13:30:28 +01003115 * src/pcf/pcfread.c (pcf_read_TOC): Avoid memory leak.
3116
Infinalityfacfc792014-11-03 07:24:59 +010031172014-11-03 Infinality <infinality@infinality.net>
3118
3119 * src/truetype/ttsubpix.c (COMPATIBILITY_MODE_Rules): Updated.
3120
3121 The previous commit deteriorates rendering of DejaVu and similar
3122 fonts; this gets compensated with this rule.
3123
Werner Lemberg706f7522014-11-03 07:20:57 +010031242014-11-03 Werner Lemberg <wl@gnu.org>
3125
3126 * src/truetype/ttinterp.c (Ins_DELTAP): Fix subpixel hinting.
3127
3128 Before this patch, it was impossible to ever call DELTAP[123] in
3129 subpixel hinting mode as described in the ClearType whitepaper; it
3130 only worked if in `compatibility mode'. However, compatibility mode
3131 essentially disables SHPIX, completely ruining hinting of
3132 ttfautohint output, for example.
3133
3134 We now follow the whitepaper more closely so that DELTAP[123]
3135 instructions for touched points in the non-subpixel direction are
3136 executed.
3137
Alexei Podtelezhnikove1efe0a2014-10-31 00:07:14 -040031382014-10-31 Alexei Podtelezhnikov <apodtele@gmail.com>
3139
Alexei Podtelezhnikov525d4872014-10-31 22:12:37 -04003140 [smooth] Improve code readability.
3141
3142 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Rearrange code.
3143
31442014-10-31 Alexei Podtelezhnikov <apodtele@gmail.com>
3145
Alexei Podtelezhnikove1efe0a2014-10-31 00:07:14 -04003146 [smooth] Reduce outline translations during rendering.
3147
3148 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Translate origin
3149 virtually by modifying cbox, actually translate outline if cumulative
3150 shift is not zero.
3151
Alexei Podtelezhnikovc7fd9352014-10-30 22:43:01 -040031522014-10-30 Alexei Podtelezhnikov <apodtele@gmail.com>
3153
3154 [smooth] Fix Savannah bug #35604 (cont'd).
3155
3156 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove checks and
3157 casts that became unnecessary after the variable type upgrades.
3158
Alexei Podtelezhnikov74916992014-10-29 22:24:24 -040031592014-10-29 Alexei Podtelezhnikov <apodtele@gmail.com>
3160
Alexei Podtelezhnikov465ab992014-10-29 23:45:23 -04003161 [smooth] Improve code readability.
3162
3163 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Rearrange code.
3164
31652014-10-29 Alexei Podtelezhnikov <apodtele@gmail.com>
3166
Alexei Podtelezhnikov74916992014-10-29 22:24:24 -04003167 Unify hypotenuse approximations.
3168
3169 * include/internal/ftcalc.h (FT_HYPOT): Move macro from here...
3170 * include/internal/ftobjs.h: ... to here, next to required `FT_ABS'.
3171 * src/smooth/ftgrays.c (gray_render_cubic): Use it here.
3172
Werner Lembergfe151522014-10-25 05:56:59 +020031732014-10-25 Werner Lemberg <wl@gnu.org>
3174
3175 [cff] Test valid darkening parameter macros in `ftoption.h'.
3176
3177 We no longer need an otherwise unused typedef that can cause a gcc
3178 warning.
3179 Problem reported by Alexei.
3180
3181 * src/cff/cffobjs.c (cff_driver_init): Use
3182 `CFF_CONFIG_OPTION_DARKENING_PARAMETER_XXX' macros directly.
3183 (SET_DARKENING_PARAMETERS): Removed.
3184 Compile time tests are now ...
3185
3186 * devel/ftoption.h, include/config/ftoption.h: ... here.
3187
Alexei Podtelezhnikovaba0f492014-10-24 23:50:57 -040031882014-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
3189
3190 Improve flat corner definition.
3191
3192 * include/internal/ftcalc.h (FT_HYPOT): Macro to approximate Euclidean
3193 distance with the alpha max plus beta min algorithm.
3194 * src/base/ftcalc.c (ft_corner_is_flat): Use it instead of Taxicab
3195 metric.
3196
David Weißdd8de1a2014-10-23 20:01:48 +020031972014-10-23 David Weiß <David.Weiss@ptvgroup.com>
3198
3199 [build] Improve property file for vc2010.
3200
3201 User-defined properties should be empty by default to prevent linker
3202 failures.
3203
3204 * builds/windows/vc2010/freetype.user.props,
3205 builds/windows/vc2010/freetype.vcxproj:
3206 s/OptionsDirectory/UserOptionDirectory/.
3207 Comment out all user options.
3208
Werner Lembergdd570e92014-10-23 19:57:37 +020032092014-10-23 Werner Lemberg <wl@gnu.org>
3210
3211 [cff] Work around bug in preprocessor of MSVC 2010.
3212
3213 We have been hit by
3214
3215 https://connect.microsoft.com/VisualStudio/feedback/details/718976/msvc-pr
3216
3217 * devel/ftoption.h, include/config/ftoption.h: Replace
3218 `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' with eight macros
3219 `CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}'.
3220
3221 * src/cff/cffobjs.c (SET_DARKENING_PARAMETERS): Removed. We no
3222 longer need double expansion.
3223 (SET_DARKENING_PARAMETERS_0): Renamed to ...
3224 (SET_DARKENING_PARAMETERS): ... this.
3225 Update call.
3226
Werner Lembergcc7bb802014-10-20 08:35:50 +020032272014-10-20 Werner Lemberg <wl@gnu.org>
3228
3229 [sbit] Minor fixes.
3230
3231 * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
3232 Accept overlay format also, but emit warning message in that case.
3233 (tt_sbit_decoder_load_metrics): Add missing newline to error
3234 message.
3235 (tt_sbit_load_sbix_image): Add `rgbl' graphic type (as used on iOS
3236 7.1) to the list of unsupported formats.
3237
Alexei Podtelezhnikov118e6512014-10-19 23:31:08 -040032382014-10-19 Alexei Podtelezhnikov <apodtele@gmail.com>
3239
3240 [truetype] Clean up bytecode rounding.
3241
3242 Zero distance does not have to be treated specially if you follow
3243 specifications and check the sign as the very last step of rounding.
3244
3245 * src/truetype/ttinterp.c (Round_None, Round_To_Grid,
3246 Round_Down_To_Grid, Round_Up_To_Grid, Round_To_Double_Grid): Use
3247 macros when available, do not check for non-zero distance.
3248 (Round_To_Half_Grid, Round_Super, Round_Super_45): Ditto, return phase
3249 if sign changed.
3250
Alexei Podtelezhnikovd4aabda2014-10-18 10:10:04 -040032512014-10-18 Alexei Podtelezhnikov <apodtele@gmail.com>
3252
3253 [truetype] Unwrap engine compensation settings.
3254
3255 * src/truetype/ttobjs.c (tt_size_init_bytecode): Updated.
3256
David Weißfede19e2014-10-18 14:59:20 +020032572014-10-18 David Weiß <David.Weiss@ptvgroup.com>
3258
3259 [build] Add property file to vc2010 project.
3260
3261 This simplifies custom build configurations, especially for
3262 automated build environments.
3263
3264 * builds/windows/vc2010/freetype.user.props: New configuration file.
3265
3266 * builds/windows/vc2010/freetype.vcxproj: Include
3267 `freetype.user.props' and use its data fields.
3268
3269 * builds/windows/vc2010/index.html: Updated.
3270
Werner Lembergc9c33f22014-10-18 11:01:14 +020032712014-10-18 Werner Lemberg <wl@gnu.org>
3272
3273 [autofit] Add blue-zone support for Telugu.
3274
3275 This essentially moves the Telugu script from the `Indic' hinter to
3276 the `Latin' hinter.
3277
3278 Note that this is a first shot and quite certainly needs
3279 refinements.
3280
3281 * src/autofit/afblue.dat: Add blue zone data for Telugu.
3282
3283 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3284
3285 * src/autofit/afscript.h: Add Telugu standard characters and move
3286 data out of AF_CONFIG_OPTION_INDIC block.
3287
3288 * src/autofit/afranges.c: Move Telugu data out of
3289 AF_CONFIG_OPTION_INDIC block.
3290
3291 * src/autofit/afstyles.h: Update Telugu data; in particular, use
3292 AF_WRITING_SYSTEM_LATIN.
3293
Werner Lemberg54306f52014-10-18 10:42:28 +020032942014-10-18 David Wimsey <david@wimsey.us>
3295
3296 [cmake] Add iOS build support.
Werner Lemberg1050aa92014-10-18 10:45:09 +02003297 From Savannah patch #8497.
Werner Lemberg54306f52014-10-18 10:42:28 +02003298
3299 * builds/cmake/iOS.cmake: New file. Universal binaries are built
3300 with both 32 and 64 bit arm architectures.
3301
3302 * CMakeLists.txt (IOS_PLATFORM): New variable for running the iOS
3303 toolchain. Possible values are `OS' to build on iOS, or
3304 `SIMULATOR' to build on APPLE.
3305
Werner Lemberg1a1750f2014-10-16 22:54:01 +020033062014-10-16 Behdad Esfahbod <behdad@behdad.org>
3307 Werner Lemberg <wl@gnu.org>
3308
3309 [cff] Add `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' config macro.
3310
3311 * devel/ftoption.h, include/config/ftoption.h
3312 (CFF_CONFIG_OPTION_DARKENING_PARAMETERS): New macro.
3313
3314 * src/cff/cffobjs.c (SET_DARKENING_PARAMETERS,
3315 SET_DARKENING_PARAMETERS_0): New macros.
3316 (cff_driver_init): Use new macros.
3317
Alexei Podtelezhnikov7e83f062014-10-14 23:03:56 -040033182014-10-14 Alexei Podtelezhnikov <apodtele@gmail.com>
3319
3320 [truetype] Limit delta shift range.
3321
Werner Lembergdf3d67e2014-10-16 07:24:44 +02003322 The valid range for delta shift is zero through six. Negative values
3323 are invalid according to
3324
Alexei Podtelezhnikov7e83f062014-10-14 23:03:56 -04003325 https://developer.apple.com/fonts/TrueType-Reference-Manual/RM04/Chap4.html#delta%20shift
3326
3327 * src/truetype/ttobjs.h (delta_shift, delta_base): Make unsigned.
Werner Lembergdf3d67e2014-10-16 07:24:44 +02003328 * src/truetype/ttinterp.h (DO_SDS): Throw an error if `delta_shift'
3329 is out of range.
3330 (Ins_DELTAP, Ins_DELTAC): Optimize for valid `delta_shift'.
Alexei Podtelezhnikov7e83f062014-10-14 23:03:56 -04003331
Werner Lemberg03987bf2014-10-16 07:19:46 +020033322014-10-16 Werner Lemberg <wl@gnu.org>
3333
3334 A better fix for Savannah bug #43392.
3335 Suggested by Doug Felt <dougfelt@gmail.com>.
3336
Werner Lembergdf3d67e2014-10-16 07:24:44 +02003337 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics): Set
Werner Lemberg03987bf2014-10-16 07:19:46 +02003338 `vertAdvance' to zero...
3339
3340 * src/truetype/ttgload.c (TT_Load_Glyph): ... and set here a default
3341 value for `vertAdvance' based on `linearVertAdvance' in case
3342 `vertAdvance' is zero. Note that the previous computed ad-hoc value
3343 for `linearVertAdvance' was apparently not tested in a real-life
3344 situation.
3345
David Weiß3889cb22014-10-14 11:35:16 +020033462014-10-14 David Weiß <David.Weiss@ptvgroup.com>
3347
3348 [build] Better optimization settings for vc2010 solution file.
3349
3350 * builds/windows/vc2010/freetype.sln,
3351 builds/windows/vc2010/freetype.vcxproj: Updated.
3352
Werner Lemberg8f178092014-10-14 08:28:09 +020033532014-10-14 Werner Lemberg <wl@gnu.org>
3354
3355 [autofit] Adjust Devenagari character range.
3356
3357 * src/autofit/afranges.c (af_deva_uniranges): Omit characters that
3358 are common to all other Indic scripts.
3359
Werner Lemberg1ca5fa12014-10-12 08:31:32 +020033602014-10-12 Werner Lemberg <wl@gnu.org>
3361
3362 [sfnt] Fix Savannah bug #43392.
3363
3364 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics): Don't let
3365 vertical metrics uninitialized.
3366
Alexei Podtelezhnikov673a28e2014-10-11 14:40:51 -040033672014-10-11 Alexei Podtelezhnikov <apodtele@gmail.com>
3368
3369 [base] Small bbox correction.
3370
3371 * src/base/ftbbox.c (FT_Outline_Get_BBox): Start from nonsense bbox
Werner Lembergdf3d67e2014-10-16 07:24:44 +02003372 instead of initial point that could be `off' in conic outlines.
Alexei Podtelezhnikov673a28e2014-10-11 14:40:51 -04003373
Alexei Podtelezhnikov2ffcf172014-10-08 22:01:08 -040033742014-10-08 Alexei Podtelezhnikov <apodtele@gmail.com>
3375
Alexei Podtelezhnikov40dac112014-10-09 00:58:14 -04003376 [base] Fix Savannah bug #43356.
3377
3378 * src/base/ftbbox.c (BBox_Move_To, BBox_Conic_To): Update bbox in case
Werner Lembergdf3d67e2014-10-16 07:24:44 +02003379 of implicit `to'.
Alexei Podtelezhnikov40dac112014-10-09 00:58:14 -04003380 (BBox_Line_To): New emitter that does not update bbox.
3381
33822014-10-08 Alexei Podtelezhnikov <apodtele@gmail.com>
3383
Alexei Podtelezhnikov2ffcf172014-10-08 22:01:08 -04003384 [base] Introduce and use new macro `FT_UPDATE_BBOX'
3385
3386 * src/base/ftbbox.c (FT_UPDATE_BBOX): New macro.
3387 (FT_Outline_Get_BBox): Use it here.
3388
Alexei Podtelezhnikov7abdb8c2014-10-02 23:13:33 -040033892014-10-02 Alexei Podtelezhnikov <apodtele@gmail.com>
3390
3391 [base] Significant optimization of `ft_div64by32'
3392
3393 We shift as many bits as we can into the high register, perform
3394 32-bit division with modulo there, then work through the remaining
3395 bits with long division. This optimization is especially noticeable
3396 for smaller dividends that barely use the high register.
3397
3398 * src/base/ftcalc.c (ft_div64by32): Updated.
3399
Dave Arnold537c55d2014-10-02 06:32:32 +020034002014-10-02 Dave Arnold <darnold@adobe.com>
3401
3402 [cff] Fix Savannah bug #43271.
3403
3404 * src/cff/cf2font.c (cf2_computeDarkening): Change overflow
3405 detection to use logarithms and clamp `scaledStem'.
3406
Alexei Podtelezhnikov418e18f2014-10-01 22:36:40 -040034072014-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
3408
Alexei Podtelezhnikov74d0aad2014-10-01 23:27:15 -04003409 * src/base/ftcalc.c: Remove miscellaneous type casts.
3410
34112014-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
3412
Alexei Podtelezhnikov418e18f2014-10-01 22:36:40 -04003413 [base] Use more common `FT_MSB' implementation with masks.
3414
3415 * src/base/ftcalc.c (FT_MSB): Updated.
3416
Alexei Podtelezhnikov955aff12014-09-30 23:09:39 -040034172014-09-30 Alexei Podtelezhnikov <apodtele@gmail.com>
3418
3419 [base] Clean up.
3420
3421 * src/base/ftcalc.c (FT_MOVE_SIGN): New macro for frequently used
3422 code.
3423
Alexei Podtelezhnikov7f491112014-09-25 22:54:38 -040034242014-09-25 Alexei Podtelezhnikov <apodtele@gmail.com>
3425
3426 [base] Avoid unnecessary long division.
3427
3428 This applies to `FT_MulDiv' but not to `FT_DivFix', where overflows or
3429 lack thereof are predicted accurately.
3430
3431 * src/base/ftcalc.c (ft_div64by32): Improve readability.
3432 (FT_MulDiv, FT_MulDiv_No_Round) [!FT_LONG64]: Use straight division
3433 when multiplication stayed within 32 bits.
3434
Werner Lemberg5b68e4f2014-09-24 19:06:13 +020034352014-09-24 Werner Lemberg <wl@gnu.org>
3436
3437 [autofit] Minor clean-ups.
3438
3439 * src/autofit/afhints.c (AF_FLAGS): Remove obsolete values.
3440
3441 * src/autofit/afhints.c (af_glyph_hints_dump_points,
3442 af_glyph_hints_align_strong_points): Updated.
3443
3444 * src/autofit/aflatin.c (af_latin_hints_link_segments,
3445 af_latin_hints_compute_segments), src/autofit/afcjk.c
3446 (af_cjk_hints_link_segments), src/autofit/aflatin2.c
3447 (af_latin2_hints_link_segments, af_latin2_hints_compute_segments):
3448 There are no longer fake segments since more than 10 years...
3449
Werner Lemberg387a9fe2014-09-22 06:42:24 +020034502014-09-22 Werner Lemberg <wl@gnu.org>
3451
3452 [autofit] Minor code streamlining.
3453
3454 * src/autofit/afhints.c (af_axis_hints_new_edge): Remove redundant
3455 initialization.
3456
Alexei Podtelezhnikov5c894842014-09-19 22:03:15 -040034572014-09-19 Alexei Podtelezhnikov <apodtele@gmail.com>
3458
3459 * src/base/ftcalc.c: Harmonize code.
3460
34612014-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikovbc12d9e2014-09-08 21:27:43 -04003462
Alexei Podtelezhnikovef070d42014-09-15 22:06:19 -04003463 [base] Tighten the overflow check in `FT_MulDiv'.
3464
3465 * src/base/ftcalc.c (FT_MulDiv) [!FT_LONG64]: Updated.
3466
34672014-09-08 Alexei Podtelezhnikov <apodtele@gmail.com>
3468
Alexei Podtelezhnikovbc12d9e2014-09-08 21:27:43 -04003469 Fix Savannah bug #43153.
3470
3471 * src/psaux/psconv.c (PS_Conv_ToFixed): Add protection against
Alexei Podtelezhnikov7abdb8c2014-10-02 23:13:33 -04003472 overflow in `divider'.
Alexei Podtelezhnikovbc12d9e2014-09-08 21:27:43 -04003473
Alexei Podtelezhnikov32128522014-09-03 21:57:42 -040034742014-09-03 Alexei Podtelezhnikov <apodtele@gmail.com>
3475
Alexei Podtelezhnikov336735d2014-09-03 22:55:26 -04003476 [base] Tighten the overflow check in `FT_DivFix'.
3477
3478 This fixes a 13-year old bug. The original overflow check should have
3479 been updated when rounding was introduced into this function
3480 (c2cd00443b).
3481
3482 * src/base/ftcalc.c (FT_DivFix) [!FT_LONG64]: Updated.
3483 * include/freetype.h (FT_DivFix): Updated documentation.
3484
34852014-09-03 Alexei Podtelezhnikov <apodtele@gmail.com>
3486
Alexei Podtelezhnikov32128522014-09-03 21:57:42 -04003487 [base] Tighten the overflow check in `FT_MulFix'.
3488
3489 * src/base/ftcalc.c (FT_MulFix) [!FT_LONG64]: Updated.
3490
Alexei Podtelezhnikov125c3ca2014-09-02 22:38:59 -040034912014-09-02 Alexei Podtelezhnikov <apodtele@gmail.com>
3492
3493 [truetype] Shortcut ppem calculations for square pixels.
3494
3495 * src/truetype/ttinterp.h (TT_ExecContextRec): New field
3496 `cur_ppem_func' with a function pointer.
3497 * src/truetype/ttinterp.c (TT_RunIns): Initialize `cur_ppem_func'
3498 depending on the pixel geometry to either...
3499 (Current_Ppem_Stretched): ... this for stretched pixels.
3500 (Current_Ppem): ... or this for square pixels.
3501 (DO_MPPEM, DO_MPS, Ins_DELTAP, Ins_DELTAC): Use `cur_ppem_func'.
3502
Behdad Esfahbod1ec98b22014-08-31 08:47:11 +020035032014-08-31 Behdad Esfahbod <behdad@behdad.org>
3504
3505 Don't use `register' keyword. Fixes compiler warnings.
3506
3507 * src/base/ftcalc.c (FT_Add64) [!FT_LONG64]: Do it.
3508 * src/gzip/inftrees.c (huft_build): Ditto.
3509 * src/truetype/ttinterp.c (TT_MulFix14_arm): Ditto.
3510
Alexei Podtelezhnikova8bc49e2014-08-24 22:14:01 -040035112014-08-24 Alexei Podtelezhnikov <apodtele@gmail.com>
3512
Alexei Podtelezhnikov125c3ca2014-09-02 22:38:59 -04003513 [truetype] Optimize DELTAP and DELTAC.
Alexei Podtelezhnikova8bc49e2014-08-24 22:14:01 -04003514
3515 * src/truetype/ttinterp.c (Ins_DELTAP, Ins_DELTAC): Move ppem
3516 calculations outside of the loop.
3517
Alexei Podtelezhnikov98688592014-08-21 23:28:52 -040035182014-08-21 Alexei Podtelezhnikov <apodtele@gmail.com>
3519
3520 Fix Savannah bug #43033.
3521
3522 * include/config/ftconfig.h, builds/unix/ftconfig.in,
3523 builds/vms/ftconfig.h [FT_LONG64]: Do not disable the macro when
3524 64-bit type is `long'.
3525
Alexei Podtelezhnikov8fd87d42014-08-20 00:57:22 -040035262014-08-20 Alexei Podtelezhnikov <apodtele@gmail.com>
3527
3528 [base] Small optimization of `FT_MulFix'.
3529
3530 * src/base/ftcalc.c (FT_MulFix): Loosen up the condition for direct
3531 32-bit calculations.
3532
Alexei Podtelezhnikovf09326a2014-08-20 00:08:38 -040035332014-08-19 Alexei Podtelezhnikov <apodtele@gmail.com>
3534
3535 [base] Use unsigned calculation in `FT_MulDiv'.
3536
3537 * src/base/ftcalc.c (FT_MulDiv): Updated to expand 32-bit range.
3538
Alexei Podtelezhnikov382f3152014-08-18 23:16:15 -040035392014-08-18 Alexei Podtelezhnikov <apodtele@gmail.com>
3540
3541 [base] Remove truncation in `FT_DivFix'.
3542
3543 * src/base/ftcalc.c (FT_DivFix): Updated.
3544
Alexei Podtelezhnikov5ef20232014-08-14 23:21:46 -040035452014-08-14 Alexei Podtelezhnikov <apodtele@gmail.com>
3546
3547 Minor refactoring.
3548
3549 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round): Updated.
3550
35512014-08-14 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikovc7022462014-08-14 23:01:01 -04003552
3553 Turn FT_MSB into a macro when using gcc builtins.
3554
3555 * src/base/ftcalc.c, include/internal/ftcalc.h: Updated.
3556
Alexei Podtelezhnikovf8efbcf2014-08-12 23:22:17 -040035572014-08-12 Alexei Podtelezhnikov <apodtele@gmail.com>
3558
3559 [base] Avoid undefined FT_MSB in `BBox_Cubic_Check'.
3560
3561 * src/base/ftbbox.c (BBox_Cubic_Check): Update.
3562 (update_cubic_max): Repalce with...
3563 (cubic_peak): ... this, which now handles upscaling.
3564
Alexei Podtelezhnikov47289932014-08-11 23:39:34 -040035652014-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
3566
Alexei Podtelezhnikov28018d42014-08-12 00:26:16 -04003567 [base] Handle collapsed outlines to avoid undefined FT_MSB.
3568
3569 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Update.
3570
35712014-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
3572
Alexei Podtelezhnikov47289932014-08-11 23:39:34 -04003573 [base] Restore FT_MulFix inlining.
3574
3575 * include/freetype.h (FT_MulFix): Unconditionally defined.
3576
3577 * src/base/ftcalc.c [FT_MULFIX_ASSEMBLER]: Move code from here...
3578
3579 * include/internal/ftcalc.h [FT_MULFIX_ASSEMBLER]: ... to here,
3580 which conditionally replaces the function with an inline version
3581 through the macro.
3582
Alexei Podtelezhnikov90be4b62014-08-08 22:27:10 -040035832014-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
3584
3585 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Refactor.
3586
Werner Lembergd17cabf2014-07-26 09:53:50 +090035872014-07-26 Werner Lemberg <wl@gnu.org>
3588
3589 [cff] Fix typo.
3590
3591 * src/cff/cf2hints.c (cf2_glyphpath_computeOffset): Use correct
3592 offsets in third quadrant.
3593
3594 Reported by maks <maksqwe1@ukr.net>.
3595
Werner Lemberg4e754132014-07-17 17:34:49 +090035962014-07-17 Werner Lemberg <wl@gnu.org>
3597
3598 Fix Savannah bug #42788.
3599
3600 * src/pfr/pfrobjs.c: Include `ftcalc.h'.
3601
Alexei Podtelezhnikovc0a6f202014-07-16 22:05:56 -040036022014-07-16 Alexei Podtelezhnikov <apodtele@gmail.com>
3603
3604 Replace `ft_highpow2' function.
3605
3606 * src/pfr/pfrobjs.c (pfr_face_get_kerning): Use `FT_MSB' instead of
3607 `ft_highpow2'.
3608
3609 * src/base/ftutil.c, include/internal/ftobjs.h (ft_highpow2): Remove
3610 it.
3611
Alexei Podtelezhnikov71330ce2014-07-15 23:30:45 -040036122014-07-15 Alexei Podtelezhnikov <apodtele@gmail.com>
3613
Werner Lembergcbbf26b2014-07-17 17:27:12 +09003614 * src/base/ftcalc.c (FT_MSB): Utilize gcc builtins.
Alexei Podtelezhnikov177982e2014-07-15 23:54:34 -04003615
36162014-07-15 Alexei Podtelezhnikov <apodtele@gmail.com>
3617
Alexei Podtelezhnikov71330ce2014-07-15 23:30:45 -04003618 [base] Move assembler code back in the source file.
3619
3620 FT_MulFix assembler used to reside in ftcalc.c before f47d263f1b.
3621
3622 * include/config/ftconfig.h, builds/unix/ftconfig.in,
3623 builds/vms/ftconfig.h [FT_MULFIX_ASSEMBLER]: Move code from here...
3624
3625 * src/base/ftcalc.c [FT_MULFIX_ASSEMBLER]: ... to here.
3626
36272014-07-14 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov1183cd42014-07-14 22:30:55 -04003628
3629 [base] Further clean up color bitmap conversion.
3630
3631 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Stop
3632 using FT_MulFix and FT_DivFix since all calculations fit into 32 bits.
3633
Werner Lemberg441b3f32014-07-13 02:28:14 +090036342014-07-13 Werner Lemberg <wl@gnu.org>
3635
3636 [truetype] Improve handling of buggy `prep' tables.
3637
3638 In case of an error in the `prep' table, no longer try to execute it
3639 again and again. This makes FreeType handle endless loops in buggy
3640 fonts much faster.
3641
3642 * src/truetype/ttobjs.h (TT_SizeRec): The fields `bytecode_ready'
3643 and `cvt_ready' are now negative if not initialized yet, otherwise
3644 they indicate the error code of the last run.
3645
3646 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep,
3647 tt_size_done_bytecode, tt_size_init_bytecode,
3648 tt_size_ready_bytecode, tt_size_init, tt_size_done, tt_size_reset):
3649 Updated.
3650
3651 * src/truetype/ttgload.c (tt_loader_init): Updated.
3652 * src/truetype/ttinterp.c (TT_RunIns): Force reexecution of `fpgm'
3653 and `prep' only if we are in the `glyf' table.
3654
Werner Lemberge98e2bc2014-07-12 16:37:39 +090036552014-07-12 Werner Lemberg <wl@gnu.org>
3656
3657 * builds/vms/ftconfig.h: Synchronize.
3658 Problem reported by Alexei.
3659
Alexei Podtelezhnikov35576bf2014-07-11 22:40:34 -040036602014-07-11 Alexei Podtelezhnikov <apodtele@gmail.com>
3661
3662 [base] Clean up bitmap conversion.
3663
3664 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
3665 appropriate FT_DivFix and remove superfluous upscaling.
3666
Alexei Podtelezhnikovceab95a2014-07-04 23:01:32 -040036672014-07-04 Alexei Podtelezhnikov <apodtele@gmail.com>
3668
3669 [base] Small optimization of the ancient code.
3670
3671 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round): Loosen up the
3672 condition for direct 32-bit calculations.
3673
Werner Lemberg38975562014-06-27 06:55:56 +020036742014-06-27 Werner Lemberg <wl@gnu.org>
3675
3676 Fix Apple standard glyph names.
3677
3678 * src/sfnt/ttpost.c (tt_post_default_names): Synchronize with
3679 `tools/glnames.py'
3680
3681 Problem reported by Adam Twardoch <adam@fontlab.com>.
3682
Werner Lembergcf2347c2014-06-17 09:01:04 +020036832014-06-17 Werner Lemberg <wl@gnu.org>
3684
Werner Lemberg231171f2014-06-17 09:14:32 +02003685 Partially revert commit from 2014-06-13.
3686
3687 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Move
3688 declaration of `p_first' and `p_last' out of the loop.
3689
36902014-06-17 Werner Lemberg <wl@gnu.org>
3691
Werner Lembergcf2347c2014-06-17 09:01:04 +02003692 * builds/unix/freetype2.m4: s/AC_PATH_PROG/AC_PATH_TOOL/.
3693
3694 This simplifies cross-compiling.
3695
Werner Lemberg6497b9c2014-06-13 09:28:00 +020036962014-06-13 Werner Lemberg <wl@gnu.org>
3697
Werner Lemberge5c0fff2014-06-13 14:01:20 +02003698 Fix more compiler warnings.
3699 Reported by Wojciech Mamrak <wmamrak@gmail.com>.
3700
3701 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
3702 Make integer constant unsigned.
3703
3704 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
3705 <TT_SBIT_TABLE_TYPE_SBIX>: Fix types.
3706 (tt_sbit_decoder_load_compound, tt_face_load_sbix_image): Add proper
3707 casts.
3708
37092014-06-13 Werner Lemberg <wl@gnu.org>
3710
Werner Lemberg6497b9c2014-06-13 09:28:00 +02003711 Fix compiler warnings.
3712 Reported by Wojciech Mamrak <wmamrak@gmail.com>.
3713
3714 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage),
Werner Lembergcbbf26b2014-07-17 17:27:12 +09003715 src/autofit/afmodule.c (af_property_set): Fix `signed' vs.
Werner Lemberg6497b9c2014-06-13 09:28:00 +02003716 `unsigned' issues.
3717
3718 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Make compiler
3719 happy.
3720
3721 * src/base/ftlcdfil.c (_ft_lcd_filter_fir): Use only four elements
3722 for `fir'.
3723 Fix `signed' vs. `unsigned' issues.
3724
3725 * src/sfnt/sfobjs.c (WRITE_BYTE): Removed, unused.
3726 (WRITE_USHORT, WRITE_ULONG): Add proper casts.
3727
3728 * src/truetype/ttgload.c (TT_Get_VMetrics): Add proper casts.
3729
3730 * src/truetype/ttinterp.c (Ins_DELTAP): Add proper casts for `B1'
3731 and `B2'.
3732
Alexey Petruchik02f21702014-05-16 08:09:43 +020037332014-05-16 Alexey Petruchik <alexey.petruchik@gmail.com>
3734
3735 [cmake] Add option to build OS X framework.
3736
3737 * CMakeLists.txt: Update accordingly.
3738
3739 * builds/mac/freetype-Info.plist: New file.
3740
Pavel Koshevoy15da66a2014-05-13 07:33:48 +020037412014-05-13 Pavel Koshevoy <pkoshevoy@gmail.com>
3742
3743 * CMakeLists.txt (BASE_SRCS): Add missing `ftbdf.c'.
3744
Werner Lemberg07e7b8a2014-05-11 08:00:25 +020037452014-05-11 Werner Lemberg <wl@gnu.org>
3746
Werner Lembergfaa21472014-05-11 12:44:00 +02003747 [autofit] Fix variable initializations.
3748
3749 * src/autofit/afhints.c (af_glyph_hints_reload): Assign default
3750 values to `in_dir' and `out_dir' for all points.
3751
37522014-05-11 Werner Lemberg <wl@gnu.org>
3753
Werner Lemberg07e7b8a2014-05-11 08:00:25 +02003754 [autofit] Fix crash with font `CabinSketch-Bold.ttf'.
3755
3756 Problem reported by Ralf S. Engelschall <rse@engelschall.com>.
3757
3758 * src/autofit/afhints.c (af_glyph_hints_reload): Fix threshold for
3759 finding first non-near point.
3760 Properly initialize non-near point deltas.
3761
Werner Lemberg63bef9a2014-05-01 07:16:05 +020037622014-05-01 Werner Lemberg <wl@gnu.org>
3763
Werner Lembergc576bb02014-05-01 17:24:19 +02003764 [autofit] Add blue-zone support for Devanagari.
3765
3766 This essentially moves the Devanagari script from the `Indic' hinter
3767 to the `Latin' hinter. Thanks to Girish Dalvi
3768 <girish.dalvi@gmail.com> for guidance with blue zone characters!
3769
3770 * src/autofit/afblue.dat: Add blue zone data for Devanagari.
3771
3772 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3773
3774 * src/autofit/afscript.h: Add Devanagari standard characters and
3775 move data out of AF_CONFIG_OPTION_INDIC block.
3776
3777 * src/autofit/afranges.c: Move Devanagari data out of
3778 AF_CONFIG_OPTION_INDIC block.
3779 Move U+20B9, (new) Rupee sign, from Latin to Devanagari.
3780
3781 * src/autofit/afstyles.h: Update Devanagari data; in particular, use
3782 AF_WRITING_SYSTEM_LATIN.
3783
37842014-05-01 Werner Lemberg <wl@gnu.org>
3785
Werner Lemberg63bef9a2014-05-01 07:16:05 +02003786 [autofit] Fix handling of neutral blue zones in stems.
3787
3788 * src/autofit/afhints.h (AF_Edge_Flags): New value
3789 `AF_EDGE_NEUTRAL'.
3790
3791 * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Trace
3792 neutral blue zones with AF_EDGE_NEUTRAL.
3793 (af_latin_hint_edges): Skip neutral blue zones if necessary.
3794
Werner Lembergccfc4b42014-04-28 21:13:14 +020037952014-04-28 Werner Lemberg <wl@gnu.org>
3796
3797 [autofit] Introduce neutral blue zones to the latin module.
3798
3799 Such blue zones match either the top or the bottom of a contour. We
3800 need them for scripts where accent-like elements directly touch the
3801 base character (for example, some vowel signs in Devanagari, cf.
3802 U+0913 or U+0914).
3803
3804 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_NEUTRAL): New
3805 property.
3806
3807 * src/autofit/afblue.h: Regenerated.
3808
3809 * src/autofit/aflatin.h (AF_LATIN_IS_NEUTRAL_BLUE): New macro.
3810 (AF_LATIN_BLUE_NEUTRAL): New enumeration value.
3811
3812 * src/autofit/aflatin.c (af_latin_metrics_init_blues,
3813 af_latin_hints_compute_blue_edges): Handle neutral blue zones.
3814
Werner Lembergabb3fca2014-04-25 22:13:32 +020038152014-04-25 Werner Lemberg <wl@gnu.org>
3816
3817 * src/autofit/hbshim.c: Partially revert commit from 2014-04-17.
3818
3819 Using input glyph coverage data is simply wrong.
3820
3821 Problem reported by Nikolaus Waxweiler <madigens@gmail.com> and
3822 Mantas MikulÄ—nas <grawity@gmail.com>.
3823
Werner Lembergf1936372014-04-23 08:22:33 +020038242014-04-23 Werner Lemberg <wl@gnu.org>
3825
3826 * src/raster/ftraster.c (Vertical_Sweep_Span): Use drop-out mode.
3827
3828 This spot has been missed while introducing support for various
3829 drop-out modes years ago (including no drop-out mode, which this
3830 commit fixes).
3831
3832 Problem reported by Patrick Thomas <pthomas505@gmail.com>.
3833
Werner Lembergd9b44702014-04-22 07:33:07 +020038342014-04-22 Werner Lemberg <wl@gnu.org>
3835
3836 * src/sfnt/pngshim.c (error_callback): s/longjmp/ft_longjmp/.
3837
Werner Lemberg98e510e2014-04-20 22:11:27 +020038382014-04-20 Werner Lemberg <wl@gnu.org>
3839
3840 [autofit] Fix Savannah bug #42148.
3841
3842 The adaptation of the cjk auto-hinter module to blue stringsets in
3843 2013-08-25 had three severe bugs. Mea culpa.
3844
3845 1. Contrary to the latin auto-hinter, characters for reference and
3846 overshoot values of a blue zone are specified separately. Due to
3847 the screwed-up change it didn't work at all.
3848
3849 2. A boolean comparison was erroneously replaced with a cast,
3850 causing invalid results with the `^' operator later on. The
3851 visual artifact caused by this problem is the topic of the bug
3852 report.
3853
3854 3. Two flag values were inverted, causing incorrect assignment of
3855 reference and overshoot values.
3856
3857 * src/autofit/afblue.dat: Fix CJK bluestrings, introducing a new
3858 syntax to have both reference and overshoot characters in a single
3859 string. This is error #1.
3860 Add extensive comments.
3861
3862 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_CJK_FILL): Removed, no
3863 longer used.
Werner Lembergccfc4b42014-04-28 21:13:14 +02003864 (AF_BLUE_PROPERTY_CJK_TOP, AF_BLUE_PROPERTY_CJK_HORIZ): Fix values.
Werner Lemberg98e510e2014-04-20 22:11:27 +02003865 This is error #3.
3866
3867 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3868
3869 * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Correct error #1.
3870 Use character `|' to separate characters for reference and overshoot
3871 values.
3872 Improve tracing messages, synchronizing them with the latin
3873 auto-hinter.
Werner Lembergccfc4b42014-04-28 21:13:14 +02003874 (af_cjk_hints_compute_blue_edges): Fix value of `is_top_right_blue'.
Werner Lemberg98e510e2014-04-20 22:11:27 +02003875 This is error #2.
3876 (af_cjk_align_linked_edge): Add tracing message.
3877
3878 * src/autofit/afcjk.h (AF_CJK_IS_FILLED_BLUE): Removed, no longer
3879 used.
3880
Werner Lembergbbd83132014-04-17 01:24:36 +020038812014-04-17 Werner Lemberg <wl@gnu.org>
3882
Werner Lemberg8c7fb782014-04-17 15:53:25 +02003883 [autofit] More coverage fixes for complex scripts.
3884
3885 * src/autofit/hbshim.c (af_get_coverage): Merge input glyph coverage
3886 of GSUB lookups into output coverage. Otherwise, ligatures are not
3887 handled properly.
3888 Don't check blue zone characters for default coverage.
3889
38902014-04-17 Werner Lemberg <wl@gnu.org>
3891
Werner Lembergbbd83132014-04-17 01:24:36 +02003892 Make `FT_Get_SubGlyph_Info' actually work.
3893
3894 * src/base/ftobjs.c (FT_Get_SubGlyph_Info): Return FT_Err_Ok
3895 if there is no error.
3896
Werner Lemberg181fd072014-04-15 16:47:05 +020038972014-04-15 Werner Lemberg <wl@gnu.org>
3898
3899 [afblue.pl]: Minor improvements.
3900
3901 * src/tools/afblue.pl: Allow whitespace before comments.
3902 Ignore whitespace in strings.
3903
Werner Lemberg8b1f2a62014-04-14 07:58:19 +020039042014-04-14 Werner Lemberg <wl@gnu.org>
3905
3906 [autofit] Improve coverage handling.
3907
3908 * src/autofit/hbshim.c (af_get_coverage): Don't exclude glyphs
3909 appearing in the GPOS table if we are processing the default
3910 coverage.
3911
David Weber76307872014-04-13 15:41:13 +020039122014-04-13 David Weber <weber.aulendorf@googlemail.com>
3913
3914 [smooth] Fix stand-alone compilation.
3915
3916 * src/smooth/ftgrays.c (FT_BEGIN_STMNT, FT_END_STMNT): Define.
3917
Werner Lemberg8a94b1e2014-04-12 20:44:33 +020039182014-04-12 Werner Lemberg <wl@gnu.org>
3919
3920 [autofit] Redesign the recognition algorithm of strong points.
3921
3922 In particular, local extrema without horizontal or vertical segments
3923 are better recognized:
3924
3925 + A + D
3926 \ /
3927 \ /
3928 \ /
3929 \ /
3930 \ + C
3931 \ /
3932 B +/
3933
3934 If the distances AB and CD are large, point B wasn't previously
3935 detected as an extremum since the `ft_corner_is_flat' function
3936 `swallowed' BC regardless of its direction, tagging point B as weak.
3937 The next iteration started at B and made `ft_corner_is_flat' swallow
3938 point C, tagging it as weak also, et voilà.
3939
3940 To improve that, another pass gets now performed before calling
3941 `ft_corner_is_flat' to improve the `topology' of an outline: A
3942 sequence of non-horizontal or non-vertical vectors that point into
3943 the same quadrant are handled as a single, large vector.
3944
3945 Additionally, distances of near points are now accumulated, which
3946 makes the auto-hinter handle them as if they were prepended to the
3947 next non-near vector.
3948
3949 This generally improves the auto-hinter's rendering results.
3950
3951 * src/autofit/afhints.c (af_glyph_hints_reload): Implement it.
3952
3953 * src/autofit/afhints.h (AF_FLAGS): Remove no longer used flag
3954 `AF_FLAG_NEAR'.
3955
Werner Lemberg71f53e12014-04-05 16:27:19 +020039562014-04-05 Werner Lemberg <wl@gnu.org>
3957
3958 [autofit] Improve scoring algorithm for identifying stems.
3959
3960 Problem reported by Karsten Lücke <karsten.luecke@kltf.de>.
3961
3962 The new algorithm takes care of the width of stems: If the distance
3963 between two segments is larger than the largest stem width, the
3964 demerits quickly increase for larger distances. This improves
3965 hinting of slanted fonts (especially if the inner parts of serifs
3966 have non-horizontal `shoulders'), avoiding false stem links.
3967
3968 * src/autofit/aflatin.c (af_latin_hints_link_segments): Use largest
3969 stem width (if available) to compute better demerits for distances
3970 between stems.
3971 (af_latin_hints_detect_features): Pass stem width array and array
3972 size.
3973 (af_latin_metrics_init_widths): Updated to use original algorithm.
3974 (af_latin_hints_apply): Updated to use new algorithm.
3975
3976 * src/autofit/aflatin.h: Updated.
3977 * src/autofit/afcjk.c: Updated.
3978
Werner Lembergf8555b52014-04-03 05:45:38 +020039792014-04-03 Werner Lemberg <wl@gnu.org>
3980
3981 Don't require `gzip' module for `sfnt'.
3982
3983 Reported by Preet <prismatic.project@gmail.com>.
3984
3985 * src/sfnt/sfobjs.c (woff_open_font): Guard use of
3986 FT_Gzip_Uncompress with FT_CONFIG_OPTION_USE_ZLIB.
3987
Werner Lembergf41070f2014-03-27 17:38:23 +010039882014-03-27 Werner Lemberg <wl@gnu.org>
3989
3990 Fix Savannah bug #38235.
3991
3992 Work around a bug in pkg-config version 0.28 and earlier: If a
3993 variable value gets surrounded by doublequotes (in particular values
3994 for the `prefix' variable), the prefix override mechanism fails.
3995
3996 * builds/unix/freetype2.in: Don't use doublequotes.
3997 * builds/unix/unix-def.in (freetype.pc): Escape spaces in directory
3998 names with backslashes.
3999
Werner Lembergab76d972014-03-24 19:45:03 +010040002014-03-24 Werner Lemberg <wl@gnu.org>
4001
4002 Fix Savannah bug #41946.
4003
4004 Based on a patch from Marek Kašík <mkasik@redhat.com>.
4005
4006 * builds/unix/configure.raw (LIBS_CONFIG): Remove.
4007 * builds/unix/freetype-config.in (libs): Hard-code value.
4008 * builds/unix/unix-def.in: Updated.
4009
Werner Lembergd5159922014-03-22 06:20:54 +010040102014-03-22 Werner Lemberg <wl@gnu.org>
4011
4012 Another revert for the change from 2014-03-18.
4013
4014 Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.
4015
4016 * src/base/ftcalc.c (FT_MulFix): Ensure that an `FT_MulFix' symbol
4017 gets always exported.
4018
Werner Lembergf0c471a2014-03-20 07:13:12 +010040192014-03-20 Werner Lemberg <wl@gnu.org>
4020
4021 CMakeLists.txt: Another fix for include directories.
4022
4023 Problem reported by Taylor Holberton <taylorcholberton@gmail.com>.
4024
Werner Lembergcc7cf2c2014-03-19 07:35:35 +010040252014-03-19 Werner Lemberg <wl@gnu.org>
4026
Werner Lemberg606c74f2014-03-19 23:46:42 +01004027 CMakeLists.txt: Fix include directories.
4028
4029 Problem reported by Taylor Holberton <taylorcholberton@gmail.com>.
4030
40312014-03-19 Werner Lemberg <wl@gnu.org>
4032
Werner Lembergcc7cf2c2014-03-19 07:35:35 +01004033 Partially revert last commit.
4034
4035 Found by Alexei.
4036
4037 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Initializing
4038 those variables is plain wrong, since we are in a loop.
4039
Sean McBride87628722014-03-18 08:39:35 +010040402014-03-18 Sean McBride <sean@rogue-research.com>
4041 Werner Lemberg <wl@gnu.org>
4042
4043 Fix clang warnings.
4044
4045 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Initialize
4046 some variables.
4047
4048 * src/base/ftcalc.c (FT_MulFix): Only use code if
4049 `FT_MULFIX_INLINED' is not defined.
4050
4051 * src/bdf/bdfdrivr.c (bdf_cmap_class), src/cache/ftcbasic.c
4052 (ftc_basic_image_family_class, ftc_basic_image_cache_class,
4053 ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class),
4054 src/cache/ftccmap.c (ftc_cmap_cache_class), src/cache/ftcmanag.c
4055 (ftc_size_list_class, ftc_face_list_class), src/pcf/pcfdrivr.c
4056 (pcf_cmap_class), src/pfr/pfrdrivr.c (pfr_metrics_service_rec): Make
4057 function static.
4058
4059 * src/type1/t1driver.c (t1_ps_get_font_value): Remove redundant
4060 code.
4061
Werner Lemberg23367ff2014-03-17 07:33:14 +010040622014-03-17 Werner Lemberg <wl@gnu.org>
4063
4064 Fix Savannah bug #41869.
4065
4066 This works around a problem with HarfBuzz (<= 0.9.26), which doesn't
4067 validate glyph indices returned by
4068 `hb_ot_layout_lookup_collect_glyphs'.
4069
4070 * src/autofit/hbshim.c (af_get_coverage): Guard `idx'.
4071
4072 * docs/CHANGES: Updated.
4073
Werner Lemberg03181682014-03-14 08:06:06 +010040742014-03-14 Werner Lemberg <wl@gnu.org>
4075
4076 * builds/unix/configure.raw: Don't show error messages of `which'.
4077
Alan Coopersmithed372b72014-03-09 06:14:12 +010040782014-03-09 Alan Coopersmith <alan.coopersmith@oracle.com>
4079
4080 Fix cppcheck 1.64 warning.
4081
4082 * src/autofit/afglobal.c (af_face_globals_new): Catch NULL pointer
4083 dereference in case of error.
4084
Werner Lemberg1a69dc72014-03-09 06:06:58 +010040852014-03-09 Sean McBride <sean@rogue-research.com>
4086
4087 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove clang warning.
4088
Werner Lemberg05565362014-03-06 18:56:58 +010040892014-03-06 Werner Lemberg <wl@gnu.org>
4090
Werner Lembergec8853c2014-03-06 19:13:45 +01004091 * Version 2.5.3 released.
4092 =========================
4093
4094
4095 Tag sources with `VER-2-5-3'.
4096
4097 * docs/VERSION.DLL: Update documentation and bump version number to
4098 2.5.3.
4099
4100 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
4101 builds/windows/vc2005/index.html,
4102 builds/windows/vc2008/freetype.vcproj,
4103 builds/windows/vc2008/index.html,
4104 builds/windows/vc2010/freetype.vcxproj,
4105 builds/windows/vc2010/index.html,
4106 builds/windows/visualc/freetype.dsp,
4107 builds/windows/visualc/freetype.vcproj,
4108 builds/windows/visualc/index.html,
4109 builds/windows/visualce/freetype.dsp,
4110 builds/windows/visualce/freetype.vcproj,
4111 builds/windows/visualce/index.html,
4112 builds/wince/vc2005-ce/freetype.vcproj,
4113 builds/wince/vc2005-ce/index.html,
4114 builds/wince/vc2008-ce/freetype.vcproj,
4115 builds/wince/vc2008-ce/index.html: s/2.5.2/2.5.3/, s/252/253/.
4116
4117 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
4118
4119 * builds/unix/configure.raw (version_info): Set to 17:2:11.
4120 * CMakeLists.txt (VERSION_PATCH): Set to 3.
4121 * docs/CHANGES: Updated.
4122
41232014-03-06 Werner Lemberg <wl@gnu.org>
4124
Werner Lemberg05565362014-03-06 18:56:58 +01004125 Fixes for compilation with C++.
4126
4127 * src/autofit/hbshim.c (scripts): Change type to `hb_script_t'.
4128 (af_get_coverage): Updated.
4129 (COVERAGE): Add cast.
4130
Sean McBrideb24e8d32014-03-06 14:54:22 +010041312014-03-06 Sean McBride <sean@rogue-research.com>
4132
4133 Remove more clang analyzer warnings.
4134
4135 * src/bdf/bdflib.c (_bdf_readstream), src/truetype/ttgload.c
4136 (TT_Load_Glyph): Remove dead stores.
4137
Werner Lemberga32758f2014-03-05 08:02:46 +010041382014-03-05 Werner Lemberg <wl@gnu.org>
4139
4140 * builds/unix/configure.raw: Simplify.
4141
suzuki toshiya382f3ef2014-03-05 10:19:15 +090041422014-03-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4143
4144 Fix a bug in configure in library dependency setting
Werner Lemberga32758f2014-03-05 08:02:46 +01004145 Reported in https://bugs.freedesktop.org/show_bug.cgi?id=75652.
suzuki toshiya382f3ef2014-03-05 10:19:15 +09004146
4147 * builds/unix/configure.raw: Use `x"${xxx}" != xno' style.
4148
Werner Lembergf48f7dc2014-03-04 04:40:07 +010041492014-03-04 Werner Lemberg <wl@gnu.org>
4150
4151 Minor fix for `make devel'.
4152
4153 * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Don't use
4154 pkg-config for bzip2 since not all GNU/Linux distributions have
4155 `bzip2.pc' (and the header file `bzlib.h' is located in /usr/include
4156 normally).
4157
Werner Lemberg7ac76b52014-03-04 04:29:17 +010041582014-03-04 Sean McBride <sean@rogue-research.com>
4159
4160 Fix several clang static analyzer dead store warnings.
4161
4162 * src/autofit/afhints.c (af_glyph_hints_reload,
4163 af_glyph_hints_align_weak_points): Remove unnecessary assignments.
4164
4165 * src/bdf/bdflib.c (bdf_font_load): Ditto.
4166
4167 * src/pshinter/pshalgo.c (psh_glyph_compute_extrema,
4168 psh_glyph_interpolate_other_points): Ditto.
4169
4170 * src/type1/t1load.c (T1_Set_MM_Blend): Ditto.
4171
Werner Lemberg93ebcbd2014-03-03 07:13:45 +010041722014-03-03 Werner Lemberg <wl@gnu.org>
4173
4174 Rewrite library option handling in `configure'.
4175
4176 o Introduce `auto' value for `--with-XXX' library options; this is
4177 now the default.
4178
4179 o First use `pkg-config' for library detection, then fall back to
4180 other tests.
4181
4182 * builds/unix/configure.raw (--with-zlib, --with-bzip2, --with-png,
4183 --with-harfbuzz): Rewrite.
4184 Use new `xxx_reqpriv', `xxx_libpriv', and `xxx_libstaticconf'
4185 variables to collect data for `freetype2.pc' and `freetype-config'.
4186 (FT2_EXTRA_LIBS): Renamed to ...
4187 (ft2_extra_libs): This since it gets no longer substituted.
4188 (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBS_CONFIG, LIBSSTATIC_CONFIG):
4189 New output variables, replacing `XXX_PKG' and `LIBXXX'.
4190 Add notice at the end of `configure' showing the library
4191 configuration.
4192
4193 * builds/unix/freetype-config.in (--static): New command line
4194 option.
4195 (libs): Updated.
4196 (staticlibs): New variable, to be used if `--static' is given.
Werner Lemberg8fa69a82014-12-03 20:07:14 +01004197 * docs/freetype-config.1: Document `--static'.
Werner Lemberg93ebcbd2014-03-03 07:13:45 +01004198
4199 * builds/unix/freetype2.in, builds/unix/unix-def.in: Updated.
4200
Werner Lemberg86026a42014-03-01 06:57:19 +010042012014-03-01 Werner Lemberg <wl@gnu.org>
4202
Werner Lemberge962a912014-03-01 21:00:02 +01004203 Avoid `long long' warnings with older gcc compilers.
4204 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
4205
4206 * builds/unix/configure.raw: Don't use gcc's `-pedantic' flag for
4207 versions < 4.6. This is especially needed for Max OS X since this
4208 OS runs a gcc variant (or emulation) based on version 4.2.1.
4209
42102014-03-01 Werner Lemberg <wl@gnu.org>
4211
Werner Lemberg6030a9f2014-03-01 14:01:12 +01004212 * docs/INSTALL.CROSS: Revised and updated.
4213
42142014-03-01 Werner Lemberg <wl@gnu.org>
4215
Werner Lemberg646db052014-03-01 12:48:07 +01004216 Make `make clean' remove `freetype2.pc'.
4217
4218 This is a generated file at build time, not configure time.
4219
4220 * builds/unix/unix-def.in (DISTCLEAN): Move `freetype2.pc' to ...
4221 (CLEAN): This variable.
4222
42232014-03-01 Werner Lemberg <wl@gnu.org>
4224
Werner Lemberg00c79ed2014-03-01 12:32:20 +01004225 Use pkg-config for detecting libpng and libbz2 also.
4226
4227 * builds/unix/configure.raw (HAVE_PKG): New variable.
4228 Search for libbz2 using `pkg-config'; s/BZ2/BZIP2/.
4229 Search for libpng using `pkg-config'.
4230 Fix definition of `LIBHARFBUZZ' variable.
4231 * builds/unix/freetype-config.in ($libs): Updated.
4232 * builds/unix/freetype2.in: Add `URL' field.
4233 Update `Requires.private' and `Libs.private'.
4234 * builds/unix/unix-def.in: Updated.
4235
42362014-03-01 Werner Lemberg <wl@gnu.org>
4237
Werner Lemberg86026a42014-03-01 06:57:19 +01004238 Add configure support for HarfBuzz.
4239
4240 * builds/unix/pkg.m4: New file.
4241 * builds/unix/configure.raw: Search for libharfbuzz using
4242 `pkg-config'.
4243 Add `--without-harfbuzz' option.
4244 * builds/unix/freetype-config.in, builds/unix/freetype2.in,
4245 builds/unix/unix-def.in (freetype-config, freetype2.pc): Handle
4246 HarfBuzz.
4247
4248 * docs/INSTALL.UNIX: Document interdependency of Freetype with
4249 HarfBuzz.
4250
Alexei Podtelezhnikov6adda682014-02-28 09:24:26 +010042512014-02-28 Alexei Podtelezhnikov <apodtele@gmail.com>
4252
4253 [cff] Math simplifications.
4254
4255 * src/cf2blues.c (cf2_blues_init): Use `FT_MulDiv'.
4256 * src/cf2ft.c (cf2_getScaleAndHintFlag): Use simple division.
4257
Dave Arnold0eae6eb2014-02-28 07:40:01 +010042582014-02-28 Dave Arnold <darnold@adobe.com>
4259
Dave Arnold135c3fa2014-02-28 07:42:42 +01004260 [cff] Fix Savannah bug #41697, part 2.
4261
4262 * src/cff/cf2ft.c (cf2_initLocalRegionBuffer,
4263 cf2_initGlobalRegionBuffer): It is possible for a charstring to call
4264 a subroutine if no subroutines exist. This is an error but should
4265 not trigger an assert. Split the assert to account for this.
4266
42672014-02-28 Dave Arnold <darnold@adobe.com>
4268
Dave Arnold0eae6eb2014-02-28 07:40:01 +01004269 [cff] Fix Savannah bug #41697, part 1.
4270
4271 * src/cff/cf2hints.c (cf2_hintmap_build): Return when `hintMask' is
4272 invalid. In this case, it is not safe to use the length of
4273 `hStemHintArray'; the exception has already been recorded in
4274 `hintMask'.
4275
Werner Lembergeee4ff82014-02-26 18:12:36 +010042762014-02-26 Werner Lemberg <wl@gnu.org>
4277
Werner Lemberga2b5f662014-02-26 19:50:18 +01004278 [sfnt] Fix Savannah bug #41696.
4279
4280 * src/sfnt/ttcmap.c (tt_cmap0_validate, tt_cmap2_validate,
4281 tt_cmap4_validate, tt_cmap14_validate): Fix limit tests.
4282
42832014-02-26 Werner Lemberg <wl@gnu.org>
4284
Werner Lembergeee4ff82014-02-26 18:12:36 +01004285 [winfnt] Fix Savannah bug #41694.
4286
4287 * src/winfonts/winfnt.c (FNT_Load_Glyph): Check glyph offset.
4288
42892014-02-26 Werner Lemberg <wl@gnu.org>
Werner Lemberg9a567642014-02-26 13:08:07 +01004290
Werner Lemberg08c628d2014-02-26 14:18:03 +01004291 [cff] Fix Savannah bug #41693.
4292
4293 * src/cff/cffload.c (CFF_Load_FD_Select): Reject empty array.
4294
Werner Lembergeee4ff82014-02-26 18:12:36 +010042952014-02-26 Werner Lemberg <wl@gnu.org>
Werner Lemberg08c628d2014-02-26 14:18:03 +01004296
Werner Lemberg9a567642014-02-26 13:08:07 +01004297 [bdf] Fix Savannah bug #41692.
4298
4299 bdflib puts data from the input stream into a buffer in chunks of
4300 1024 bytes. The data itself gets then parsed line by line, simply
4301 increasing the current pointer into the buffer; if the search for
4302 the final newline character exceeds the buffer size, more data gets
4303 read.
4304
4305 However, in case the current line's end is very near to the buffer
4306 end, and the keyword to compare with is longer than the current
4307 line's length, an out-of-bounds read might happen since `memcmp'
4308 doesn't stop properly at the string end.
4309
4310 * src/bdf/bdflib.c: s/ft_memcmp/ft_strncmp/ to make comparisons
4311 stop at string ends.
4312
suzuki toshiya91c7a972014-02-17 16:38:31 +090043132014-02-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4314
4315 [autofit] Fix `make multi' compilation.
4316
suzuki toshiyacc9a0c22014-02-17 16:43:54 +09004317 * src/autofit/hbshim.c: Include `afglobal.h' and `aftypes.h'.
suzuki toshiya91c7a972014-02-17 16:38:31 +09004318
Werner Lemberg6b290fd2014-02-19 09:26:54 +010043192014-02-19 Werner Lemberg <wl@gnu.org>
4320 Simon Bünzli <zeniko@gmail.com>
4321
4322 Fix Savannah bug #32902.
4323
4324 Patch taken from
4325
4326 https://code.google.com/p/sumatrapdf/source/browse/trunk/ext/_patches/freetype2.patch?spec=svn8620&r=8620#87
4327
4328 with slight modifications.
4329
4330 * src/type1/t1parse.c (T1_Get_Private_Dict): Add heuristic test to
4331 handle fonts that incorrectly use \r at the beginning of an eexec
4332 block.
4333
Simon Bünzlidf14e6c2014-02-19 08:42:52 +010043342014-02-19 Simon Bünzli <zeniko@gmail.com>
4335
4336 Fix Savannah bug #41590.
4337
4338 * src/type1/t1load.c (parse_encoding): Protect against invalid
4339 number.
4340
Dave Arnold89a94d42014-02-12 23:45:47 +010043412014-02-12 Dave Arnold <darnold@adobe.com>
4342
4343 [cff] Optimize by using `FT_MulDiv'.
4344 Suggested by Alexei.
4345
4346 * src/cff/cf2font.c (cf2_computeDarkening): Do it.
4347
Werner Lemberg85ee27a2014-02-12 23:27:41 +010043482014-02-12 Werner Lemberg <wl@gnu.org>
4349
4350 Fix Savannah bug #41465.
4351
4352 * builds/unix/unix-def.in (CLEAN): Add `freetype-config'.
4353 (DISTCLEAN): Remove `freetype-config'.
4354
Sean McBride7be2a942014-02-08 13:55:38 +010043552014-02-08 Sean McBride <sean@rogue-research.com>
4356
4357 Fix clang static analyzer and compiler warnings.
4358
4359 * src/autofit/afhints.c (af_glyph_hints_align_weak_points),
4360 src/autofit/afloader (af_loader_load_g) <FT_GLYPH_FORMAT_COMPOSITE>,
4361 src/base/ftcalc.c (FT_MSB), src/base/ftoutln.c
4362 (FT_Outline_Decompose), src/bdf/bdfdrivr.c (bdf_interpret_style),
4363 src/cff/cffparse.c (cff_parse_integer), src/cid/cidparse.c
4364 (cid_parser_new), src/pfr/pfrload.c (pfr_phy_font_load),
4365 src/raster/ftraster.c (Decompose_Curve), src/sfnt/sfdriver.c
4366 (sfnt_get_ps_name), src/sfnt/ttcmap.c (tt_cmap12_next,
4367 tt_cmap13_next), src/smooth/ftgrays.c (gray_hline): Remove dead
4368 code.
4369
4370 * src/autofit/afmodule.c (af_property_get_face_globals,
4371 af_property_set, af_property_get), src/base/ftbitmap.c
4372 (ft_gray_for_premultiplied_srgb_bgra): Make functions static.
4373
4374 * src/base/ftobjs.c (ft_remove_renderer): Protect against
4375 library == NULL.
4376 (ft_property_do): Make function static.
4377
4378 * src/base/ftrfork.c: Include `ftbase.h'.
4379
4380 * src/sfnt/ttsbit.c (tt_face_load_sbix_image)
4381 [!FT_CONFIG_OPTION_USE_PNG], src/type1/t1gload.c
4382 (T1_Compute_Max_Advance): Avoid compiler warning.
4383
4384 * src/truetype/ttinterp.c (TT_New_Context): Reduce scope of
4385 variable.
4386
Werner Lembergab98c5e2014-02-08 11:34:33 +010043872014-02-08 Werner Lemberg <wl@gnu.org>
4388
4389 Fix Windows build directories.
4390
4391 The build target is now `windows' instead of `win32'.
4392
4393 Problem reported by Nickolas George <darknova.clan@gmail.com>.
4394
4395 * builds/modules.mk: Don't use `win32' and `win16' (!) but
4396 `windows'.
4397
4398 * builds/windows/detect.mk, builds/windows/win32-def.mk:
4399 s/win32/windows/.
4400
Eugen Sawina8ceae42014-02-08 06:30:06 +010044012014-02-08 Eugen Sawin <esawin@mozilla.com>
4402
4403 Fix Savannah bug #41507.
4404
4405 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap)
4406 [!FT_CONFIG_OPTION_USE_PNG] <17, 17, 19>: Fix error handling.
4407
Dave Arnold355b3592014-02-08 06:23:04 +010044082014-02-08 Dave Arnold <darnold@adobe.com>
4409
4410 [cff] Fix minor performance bug.
4411
4412 * src/cff/cf2font.c (cf2_font_setup): Darkening amount and blue zone
4413 calculations are now cached and not recomputed on each glyph.
4414
Werner Lemberg6dce1362014-02-05 15:40:47 +010044152014-02-05 Werner Lemberg <wl@gnu.org>
4416
4417 Fix problems with perl 5.8.8 as distributed with current MinGW.
4418
4419 * src/tools/afblue.pl: Work-around for Perl bug #63402.
4420 (string_re): Avoid `possessive quantifiers', which have been
4421 introduced in Perl version 5.10.
4422
Werner Lemberga8772912014-02-04 11:36:08 +010044232014-02-04 Werner Lemberg <wl@gnu.org>
4424
Werner Lembergd87f9a62014-02-04 16:14:09 +01004425 Fix compilation with MinGW.
4426
4427 Right now, compilation out of the box with latest MinGW is broken
4428 due to bugs in header files of mingwrt 4.0.3 in strict ANSI mode,
4429 cf.
4430
4431 https://sourceforge.net/p/mingw/bugs/2024/
4432 https://sourceforge.net/p/mingw/bugs/2046/
4433
4434 * builds/unix/configure.raw: Don't set `-ansi' flag for MinGW.
4435
44362014-02-04 Werner Lemberg <wl@gnu.org>
4437
Werner Lemberga8772912014-02-04 11:36:08 +01004438 [autofit] Minor fix.
4439
4440 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
4441 src/autofit/aflatin.c (af_latin_metrics_init_widths): Fix handling
4442 of alternative standard characters.
4443 This also fixes a compilation warning in non-debug mode.
4444
Werner Lembergee3778d2014-02-03 11:16:47 +010044452014-02-03 Werner Lemberg <wl@gnu.org>
4446
4447 [cff] Fix Savannah bug #41363.
4448
4449 * src/cff/cf2ft.c (cf2_checkTransform): Convert assertion into
4450 parameter check.
4451 (cf2_decoder_parse_charstrings): Call `cf2_checkTransform' only if
4452 we are scaling the outline.
4453 (cf2_getPpemY): Remove problematic assertion.
4454
Werner Lemberga3364002014-01-26 09:45:23 +010044552014-01-26 Werner Lemberg <wl@gnu.org>
4456
4457 [autofit] Introduce two more slots for standard characters.
4458
4459 This is useful for OpenType features like `c2sc' (caps to small
4460 caps) that don't have lowercase letters by definition, or other
4461 features that mainly operate on numerals.
4462
4463 * src/autofit/afscript.h: Add more standard characters.
4464
4465 * src/autofit/aftypes.h: Update use of `SCRIPT' macro.
4466 (AF_ScriptClassRec): Add members to hold two more standard
4467 characters.
4468 (AF_DEFINE_SCRIPT_CLASS): Updated.
4469
4470 * src/autofit/afglobal.c, src/autofit/afglobal.h,
4471 * src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/hbshim.c:
4472 Update use of `SCRIPT' macro.
4473
4474 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
4475 src/autofit/aflatin.c (af_latin_metrics_init_widths): Scan two more
4476 standard characters.
4477
Werner Lembergeb7691c2014-01-24 19:04:22 +010044782014-01-24 Werner Lemberg <wl@gnu.org>
4479
4480 Fix Savannah bug #41320.
4481
4482 * src/autofit/aflatin.c (af_latin_metrics_init_blues)
4483 <AF_LATIN_IS_LONG_BLUE>: Avoid negative index of `last'.
4484
Werner Lemberg8b281f82014-01-23 08:14:53 +010044852014-01-23 Werner Lemberg <wl@gnu.org>
4486
Werner Lemberg752f3912014-01-23 09:14:25 +01004487 Fix Savannah bug #41310.
4488
4489 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) <glyph_format==5>:
4490 Don't check metrics, which this format doesn't have.
4491 This is another correction to the commit from 2013-11-21.
4492
44932014-01-23 Werner Lemberg <wl@gnu.org>
4494
Werner Lemberg8b281f82014-01-23 08:14:53 +01004495 Fix Savannah bug #41309.
4496
4497 * src/type1/t1load.c (t1_parse_font_matrix): Properly handle result
4498 of `T1_ToFixedArray'.
4499
4500 * src/cid/cidload.c (cid_parse_font_matrix): Synchronize with
4501 `t1_parse_font_matrix'.
4502
4503 * src/type42/t42parse.c (t42_parse_font_matrix): Synchronize with
4504 `t1_parse_font_matrix'.
4505 (t42_parse_encoding): Synchronize with `t1_parse_encoding'.
4506
4507 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_BBOX>,
4508 <T1_FIELD_TYPE_MMOX>: Properly handle result of `ps_tofixedarray'.
4509
Werner Lembergff8dc312014-01-22 09:19:57 +010045102014-01-22 Werner Lemberg <wl@gnu.org>
4511
4512 * src/autofit/hbshim.c (af_get_coverage): Fix memory leaks.
4513
Werner Lemberg6a700782014-01-16 08:55:40 +010045142014-01-16 Werner Lemberg <wl@gnu.org>
4515
4516 [autofit] Improve tracing of style coverages.
4517
4518 * include/internal/fttrace.h: Add `afglobal' for tracing style
4519 coverages.
4520
4521 * src/autofit/afglobal.c: Include FT_INTERNAL_DEBUG_H.
4522 (FT_COMPONENT): Define.
4523 (af_face_globals_compute_style_coverage): Trace `gstyles' array
4524 data.
4525
Werner Lemberg7cbfdff2014-01-09 07:26:06 +010045262014-01-09 Werner Lemberg <wl@gnu.org>
4527
4528 Fix Savannah bug #41158.
4529
4530 * builds/unix/install.mk (install): Create man page directory.
4531
Chongyu Zhu94c66942014-01-08 08:52:59 +010045322014-01-08 Chongyu Zhu <lembacon@gmail.com>
4533
4534 [arm] Fix Savannah bug #41138, part 2.
4535
4536 * builds/unix/ftconfig.in (FT_MulFix_arm), include/config/ftconfig.h
4537 (FT_MulFix_arm), src/truetype/ttinterp.c (TT_MulFix14_arm): Fix
4538 preprocessor conditionals for `add.w'.
4539
Werner Lembergc46fa862014-01-08 08:45:40 +010045402014-01-08 Werner Lemberg <wl@gnu.org>
4541
4542 [autofit] Fix Savannah bug #41138, part 1.
4543
4544 * src/tools/afblue.pl <Handling #endif>: Produce correct auxiliary
4545 enumeration names for generated `#else'.
4546
4547 * src/autofit/afblue.h: Regenerated.
4548
Werner Lemberg3e5a3742014-01-06 07:53:10 +010045492014-01-06 Werner Lemberg <wl@gnu.org>
4550
4551 Add manual page for `freetype-config'.
4552 Contributed by Nis Martensen <nis.martensen@web.de>.
4553
4554 * docs/freetype-config.1: New file.
4555
4556 * builds/unix/unix-def.in (mandir): Define.
4557 * builds/unix/install.mk (install, uninstall): Handle manpage.
4558
Werner Lemberg991cbcc2014-01-05 13:24:56 +010045592014-01-05 Werner Lemberg <wl@gnu.org>
4560
4561 [autofit] Minor fixes for `afblue.pl'.
4562
4563 * src/tools/afblue.pl (aux_name): Don't use `reverse'.
4564 <Handling #endif>: Use proper indentation for generated `#else'.
4565
4566 * src/autofit/afblue.h: Regenerated.
4567
Werner Lemberg0d977442014-01-04 11:46:34 +010045682014-01-04 Werner Lemberg <wl@gnu.org>
4569
4570 [autofit] Fix Indic scripts.
4571
4572 Split the single, incorrect Indic entry into separate scripts so
4573 that the covered ranges are the same: Bengali, Devanagari, Gujarati,
4574 Gurmukhi, Kannada, Limbu, Malayalam, Oriya, Sinhala, Sundanese,
4575 Syloti Nagri, Tamil, Telugu, and Tibetan. At the same time, remove
4576 entries for Meetai Mayak and Sharada – the Unicode ranges were
4577 incorrect (and nobody has complained about that), fonts are scarce
4578 for those scripts, and the Indic auto-hinter support is rudimentary
4579 anyways.
4580
4581 * src/autofit/afscript.h: Updated, using AF_CONFIG_OPTION_INDIC and
4582 AF_CONFIG_OPTION_CJK.
4583
4584 * src/autofit/afstyles.h (STYLE_DEFAULT_INDIC): New auxiliary macro.
4585 Use it, together with AF_CONFIG_OPTION_INDIC and
4586 AF_CONFIG_OPTION_CJK, to update.
4587
4588 * src/autofit/afranges.c [AF_CONFIG_OPTION_INDIC]: Updated.
4589 [!AF_CONFIG_OPTION_INDIC, !AF_CONFIG_OPTION_CJK]: Removed.
4590 Sort entries by tags.
4591
Werner Lemberg5c7f5502014-01-03 10:48:26 +010045922014-01-03 Werner Lemberg <wl@gnu.org>
4593
Werner Lembergecdb0e32014-01-03 20:49:31 +01004594 [autofit] Thinko.
4595
4596 * src/autofit/hbshim.c (af_get_char_index): Similar to
4597 `af_get_coverage', reject glyphs which are not substituted.
4598
45992014-01-03 Werner Lemberg <wl@gnu.org>
4600
Werner Lemberga42f9182014-01-03 18:29:41 +01004601 [autofit] Fix handling of default coverages.
4602
Werner Lemberg1b5bc892014-01-03 18:33:24 +01004603 With this commit, the implementation of coverage handling is
4604 completed.
4605
4606 * src/autofit/hbshim.c (af_get_coverage): Exit early if nothing to
4607 do.
4608 Reject coverages which don't contain appropriate glyphs for blue
4609 zones.
4610
46112014-01-03 Werner Lemberg <wl@gnu.org>
4612
4613 [autofit] Fix handling of default coverages.
4614
Werner Lemberga42f9182014-01-03 18:29:41 +01004615 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
4616 First handle non-default coverages, then the default coverage of the
4617 default script, and finally the other default coverages.
4618
46192014-01-03 Werner Lemberg <wl@gnu.org>
4620
Werner Lembergf45749b2014-01-03 18:09:36 +01004621 [autofit] Fix scaling of HarfBuzz shaping.
4622
4623 * src/autofit/hbshim.c (af_get_char_index): Scale to units per EM.
4624
46252014-01-03 Werner Lemberg <wl@gnu.org>
4626
Werner Lemberg5c7f5502014-01-03 10:48:26 +01004627 [autofit] Better ftgrid support.
4628
4629 * src/autofit/afhints.c (af_glyph_hints_get_segment_offset): Add
4630 parameters `is_blue' and `blue_offset'.
4631
Werner Lemberg73cc8332014-01-01 07:10:36 +010046322014-01-01 Werner Lemberg <wl@gnu.org>
4633
Werner Lemberg55cd7e02014-01-02 13:07:48 +01004634 [autofit] Remove some styles.
4635
4636 * src/autofit/afcover.h: Remove coverages for alternative fractions,
4637 denominators, numerators, and fractions.
4638
4639 * src/autofit/afstyles.h (META_STYLE_LATIN): Updated.
4640
46412014-01-01 Werner Lemberg <wl@gnu.org>
4642
Werner Lembergc973e672014-01-01 16:34:42 +01004643 [autofit] Add more styles.
4644
4645 * src/autofit/afstyles.h (STYLE_LATIN, META_STYLE_LATIN): New
4646 auxiliary macros; use them to define styles for Cyrillic, Greek, and
4647 Latin.
4648
4649 * src/autofit/afcover.h: Remove coverage for oldstyle figures.
4650 Since those digits are used in combination with ordinary letters, it
4651 makes no sense to handle them separately.
4652
4653 * src/autofit/afglobal.c (af_face_globals_get_metrics): Don't limit
4654 `options' parameter to 4 bits.
4655
46562014-01-01 Werner Lemberg <wl@gnu.org>
4657
Werner Lembergabb2f732014-01-01 08:00:16 +01004658 [autofit] Fix style assignments to glyphs.
4659
4660 * src/autofit/hbshim.c (af_get_coverage)
4661 [FT_CONFIG_OPTION_USE_HARFBUZZ]: Scan GPOS coverage of features also
4662 so that we can skip glyphs that have both GSUB and GPOS data.
4663
46642014-01-01 Werner Lemberg <wl@gnu.org>
4665
Werner Lemberg0950f3a2014-01-01 07:48:20 +01004666 * src/autofit/hbshim.c: s/{lookups,glyphs}/gsub_{lookups,glyphs}/.
4667
46682014-01-01 Werner Lemberg <wl@gnu.org>
4669
Werner Lemberg73cc8332014-01-01 07:10:36 +01004670 [autofit] Implement and use `af_get_char_index' with HarfBuzz.
4671
4672 * src/autofit/hbshim.c (COVERAGE) [FT_CONFIG_OPTION_USE_HARFBUZZ]:
4673 Redefine to construct HarfBuzz features.
4674 (af_get_char_index) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Rewritten.
4675
4676 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Use
4677 `y_offset' to adjust `best_y'.
4678
Werner Lembergc9d99472013-12-31 08:16:57 +010046792013-12-31 Werner Lemberg <wl@gnu.org>
4680
Werner Lemberg785f3852013-12-31 09:45:10 +01004681 [autofit] s/AF_STYLE_...._DEFAULT/AF_STYLE_...._DFLT/i.
4682
46832013-12-31 Werner Lemberg <wl@gnu.org>
4684
Werner Lembergc9d99472013-12-31 08:16:57 +01004685 [autofit] Fix interface of `af_get_char_index'.
4686
4687 * src/autofit/hbshim.c (af_get_char_index): Return error value.
4688 Add argument for y offset (to be used in a yet-to-come patch).
4689
4690 * src/autofit/hbshim.h, src/autofit/afcjk.c,
4691 src/autofit/aflatin.c: Updated.
4692
Werner Lemberg44aa7e02013-12-30 07:41:22 +010046932013-12-30 Werner Lemberg <wl@gnu.org>
4694
4695 [autofit] Don't combine multiple features into one set.
4696
4697 Combining them, as originally envisioned, would lead to much more
4698 complicated code, as investigations have shown meanwhile. The major
4699 drawback is that we run out of available style slots much earlier.
4700 However, this is only a theoretical issue since we don't support a
4701 large number of scripts currently.
4702
4703 * src/autofit/afcover.h: Replace `COVERAGE_{1,2,3}' macros with
4704 a single-element `COVERAGE' macro, sort the elements by the feature
4705 tags, and add entry for `ruby'.
4706
4707 * src/autofit/aftypes.h: Updated.
4708 * src/autofit/hbshim.c: Updated.
4709
Werner Lemberg6af01a02013-12-28 08:55:24 +010047102013-12-28 Werner Lemberg <wl@gnu.org>
4711
Werner Lemberg072dc452013-12-28 12:26:21 +01004712 [autofit] Code shuffling to reduce use of cpp macros.
4713
4714 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
4715 Call `af_get_coverage' unconditionally.
4716
4717 * src/autofit/autofit.c: Include `hbshim.c' unconditionally.
4718
4719 * src/autofit/hbshim.c (af_get_coverage)
4720 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Provide dummy function.
4721
4722 * src/autofit/hbshim.h: Provide function declarations
4723 unconditionally.
4724
47252013-12-28 Werner Lemberg <wl@gnu.org>
4726
Werner Lemberg17af5862013-12-28 10:33:01 +01004727 [autofit] Add wrapper function for `FT_Get_Char_Index'.
4728
4729 Yet-to-come changes will provide HarfBuzz functionality for the new
4730 function.
4731
4732 * src/autofit/hbshim.c (af_get_char_index): New function.
4733 * src/autofit/hbshim.h: Updated.
4734
4735 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
4736 af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
4737
4738 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
4739 af_latin_metrics_init_blues, af_latin_metrics_check_digits):
4740 Updated.
4741
47422013-12-28 Werner Lemberg <wl@gnu.org>
4743
Werner Lemberg6af01a02013-12-28 08:55:24 +01004744 [autofit] Use `global' HarfBuzz font object.
4745
4746 We now use `hb_font' instead of `hb_face' since yet-to-come changes
4747 need this.
4748
4749 * src/autofit/afglobal.h: Include `hbshim.h'.
4750 (AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member
4751 `hb_font'.
4752
4753 * src/autofit/afglobal.c (af_face_globals_new)
4754 [FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'.
4755 (af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy
4756 `hb_font'.
4757
4758 * src/autofit/hbshim.h: Include HarfBuzz headers.
4759
4760 * src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz
4761 headers.
4762 (af_get_coverage): Updated.
4763
Werner Lembergd32a7d32013-12-27 19:26:04 +010047642013-12-27 Werner Lemberg <wl@gnu.org>
4765
4766 [autofit] Handle `DFLT' OpenType script for coverages.
4767
4768 * include/ftautoh.h: Document new `default-script' property.
4769
4770 * src/autofit/hbshim.c (af_get_coverage): Use `AF_FaceGlobals' for
4771 type of first parameter.
4772 (script_tags): Add one more element.
4773 (af_get_coverage): Adjust `script_tags' to handle `DFLT' script tag.
4774
4775 * src/autofit/hbshim.h: Updated.
4776
4777 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
4778 Updated.
4779
4780 * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT): New macro.
4781
4782 * src/autofit/afmodule.h (AF_ModuleRec): New `default_script'
4783 member.
4784
4785 * src/autofit/afmodule.c (af_property_set, af_property_get): Handle
4786 `default-script' property.
4787 (af_autofitter_init): Updated.
4788
suzuki toshiyae2d2b152013-12-27 16:44:24 +090047892013-12-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4790
4791 [ftrfork] Fix the face order difference between POSIX and Carbon.
4792
4793 The fragmented resources in Suitcase and .dfont should be reordered
Werner Lemberg00a7b512013-12-27 19:18:49 +01004794 when `POST' resource for Type1 is being restored, but reordering of
suzuki toshiyae2d2b152013-12-27 16:44:24 +09004795 sfnt resources induces the different face order. Now the ordering
Werner Lemberg00a7b512013-12-27 19:18:49 +01004796 is restricted to `POST' resource only, to prevent the different
4797 order issue (e.g. the face index in the fontconfig cache generated
4798 with Carbon framework is incompatible with that by FreeType 2
4799 without Carbon framework.) Found by Khaled Hosny and Hin-Tak Leung.
4800
suzuki toshiyae2d2b152013-12-27 16:44:24 +09004801 http://lists.gnu.org/archive/html/freetype-devel/2013-02/msg00035.html
4802 http://lists.gnu.org/archive/html/freetype-devel/2013-12/msg00027.html
4803
4804 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Add a switch
Werner Lemberg44aa7e02013-12-30 07:41:22 +01004805 `sort_by_res_id' to control the fragmented resource ordering.
Werner Lemberg00a7b512013-12-27 19:18:49 +01004806 * include/internal/ftrfork.h: Declare new switch.
4807 * src/base/ftobjs.c (IsMacResource): Enable the sorting for `POST'
4808 resource, and disable the sorting for `sfnt' resource.
suzuki toshiyae2d2b152013-12-27 16:44:24 +09004809
Werner Lemberg5f577462013-12-25 08:50:50 +010048102013-12-25 Werner Lemberg <wl@gnu.org>
4811
4812 Fix Savannah bug #40997.
4813
4814 * src/bdf/bdfdrivr.c (BDF_Face_Init): Only use OR operator to
4815 adjust face flags since FT_FACE_FLAG_EXTERNAL_STREAM might already
4816 be set.
4817 * src/cff/cffobjs.c (cff_face_init): Ditto.
4818 * src/cid/cidobjs.c (cid_face_init): Ditto.
4819 * src/pcf/pcfread.c (pcf_load_font): Ditto.
4820 * src/pfr/pfrobjs.c (pfr_face_init): Ditto.
4821 * src/type1/t1objs.c (T1_Face_Init): Ditto.
4822 * src/type42/t42objs.c (T42_Face_Init): Ditto.
4823 * src/winfonts/winfnt.c (FNT_Face_Init): Ditto.
4824
Werner Lembergc4e968e2013-12-21 07:23:08 +010048252013-12-21 Werner Lemberg <wl@gnu.org>
4826
Werner Lemberg19241342013-12-21 21:31:38 +01004827 [autofit] Introduce `coverages'.
4828
4829 Coverages are the interface to the HarfBuzz library to acces
4830 OpenType features for handling glyphs not addressable by the cmap.
4831
4832 Right now, compilation of HarfBuzz is only added to the development
4833 build. A solution for standard build mode will be delayed until
4834 HarfBuzz gets split into two libraries to avoid mutual dependencies
4835 between FreeType and HarfBuzz.
4836
4837 Note that this is only a first step in handling coverages, basically
4838 providing the framework only. Code for handling selected OpenType
4839 features (this is, actually using the data in `afcover.h') will
4840 follow.
4841
4842 * devel/ftoption.h, include/config/ftoption.h
4843 (FT_CONFIG_OPTION_USE_HARFBUZZ): New macro.
4844
4845 * src/autofit/hbshim.c, src/autofit/hbshim.h, src/autofit/afcover.h:
4846 New files.
4847
4848 * src/autofit/afscript.h: Add HarfBuzz script name tags.
4849
4850 * src/autofit/afstyles.h: Add default coverage enumeration values.
4851
4852 * src/autofit/aftypes.h: Update use of `SCRIPT' and `STYLE' macros.
4853 (AF_Coverage): New enumeration (generated by `afcover.h').
4854 (AF_StyleClassRec): New member `coverage'.
4855 (AF_DEFINE_STYLE_CLASS): Updated.
4856
4857 * include/internal/fttrace.h: Add `afharfbuzz' for tracing coverage
4858 data.
4859
4860 * src/autofit/afglobal.h: Update use of `SCRIPT' and `STYLE' macros.
4861 (AF_SCRIPT_FALLBACK): Renamed to ...
4862 (AF_STYLE_FALLBACK): ... this.
4863
4864 * src/autofit/afglobal.c: Include `hbshim.c'.
4865 Update use of `SCRIPT' and `STYLE' macros.
4866 (af_face_globals_compute_style_coverage)
4867 [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call `af_get_coverage'.
4868 Update.
4869
4870 * src/autofit/afmodule.h (AF_ModuleRec):
4871 s/fallback_script/fallback_style/.
4872
4873 * src/autofit/afmodule.c (af_property_set): Adapt handling of
4874 `fallback-script' property to set a fallback style.
4875 (af_property_get, af_autofitter_init): Updated.
4876
4877 * src/autofit/afpic.c: Update use of `SCRIPT' and `STYLE' macros.
4878
4879 * src/autofit/afranges.h: Update use of `SCRIPT' macro.
4880
4881 * src/autofit/autofit.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include
4882 `hbshim.c'.
4883
4884 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `hbshim.c'.
4885 (AUTOF_DRV_H): Add `afcover.h'.
4886
4887 * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Use pkg-config for
4888 all libraries needed by FreeType.
4889
48902013-12-21 Werner Lemberg <wl@gnu.org>
4891
Werner Lembergb337fa22013-12-21 19:33:15 +01004892 Fix Savannah bug #40975 (sort of).
4893
4894 * src/truetype/ttinterp.c (Ins_IP): Fix sign typo to make FreeType
4895 behave the same as the Windows TrueType engine for the invalid case.
4896
48972013-12-21 Werner Lemberg <wl@gnu.org>
4898
Werner Lemberg3bf60952013-12-21 08:49:11 +01004899 [autofit] Make PIC mode work actually.
4900
4901 * src/autofit/afpic.h (AFModulePIC): Fix array sizes to fit the
4902 enumeration values automatically generated by including `afscript.h'
4903 and friends.
4904
4905 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
4906
49072013-12-21 Werner Lemberg <wl@gnu.org>
4908
Werner Lembergbd413862013-12-21 08:14:25 +01004909 Fix PIC linking.
4910
4911 * include/internal/ftrfork.h (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Fix
4912 generated function name.
4913
4914 * src/base/basepic.c (FT_Init_Table_raccess_guess_table): Rename
4915 to ...
4916 (FT_Init_Table_ft_raccess_guess_table): ... this so that the
4917 function name correctly corresponds to what the macro framework
4918 expects.
4919
4920 * src/psnames/rules.mk (PSNAMES_DRV_SRC_S): Use correct file name so
4921 that PIC functions are compiled also.
4922
49232013-12-21 Werner Lemberg <wl@gnu.org>
4924
Werner Lembergc4e968e2013-12-21 07:23:08 +01004925 [base] Add missing dependencies to Makefile.
4926
4927 * src/base/rules.mk (BASE_SRC): Add `basepic.c' and `ftpic.c'.
4928 (BASE_H): Add `basepic.h'.
4929
Werner Lemberg974b1932013-12-20 17:26:26 +010049302013-12-20 Werner Lemberg <wl@gnu.org>
4931
Werner Lemberg8a8f3752013-12-20 18:35:35 +01004932 [autofit] Fix PIC compilation.
4933
4934 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
4935 src/autofit/aflatin.c (af_latin_metrics_init_widths)
4936 [FT_CONFIG_OPTION_PIC]: Declare `globals'.
4937
4938 * src/autofit/afglobal.c: Always call AF_DEFINE_SCRIPT_CLASS, and
4939 AF_DEFINE_STYLE_CLASS.
4940
4941 * src/autofit/afpic.c: Include `afglobal.h'.
4942 (autofit_module_class_pic_init): Typo.
4943
4944 * src/autofit/aftypes.h (AF_DEFINE_SCRIPT_CLASS,
4945 AF_DEFINE_STYLE_CLASS): Don't use the same identifier for macro
4946 parameter and structure member.
4947
49482013-12-20 Werner Lemberg <wl@gnu.org>
4949
Werner Lemberg974b1932013-12-20 17:26:26 +01004950 [autofit] Introduce `styles'.
4951
4952 This is the new top-level structure for handling glyph input data;
4953 scripts are now defined separately.
4954
4955 * src/autofit/aftypes.h (SCRIPT): Updated.
4956 (AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
4957 members to ...
4958 (AF_Style_ClassRec): ... this new structure.
4959 (AF_Style): New enumeration.
4960 (AF_StyleMetricsRec): Replace `script' enumeration with
4961 `style_class' pointer.
4962 (AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
4963 (AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
4964
4965 * src/autofit/afstyles.h: New file, using data from `afscript.h'.
4966 * src/autofit/afscript.h: Updated.
4967
4968 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
4969 af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
4970
4971 * src/autofit/afglobal.c (SCRIPT): Updated.
4972 (STYLE): Redefine macro to load `afstyles.h'.
4973 (af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
4974 (af_style_names): ... this array.
4975 (af_face_globals_compute_script_coverage): Renamed to...
4976 (af_face_globals_compute_style_coverage): ... this.
4977 Updated.
4978 (af_face_globals_new, af_face_globals_free,
4979 af_face_globals_get_metrics): Updated.
4980
4981 * src/autofit/afglobal.h (SCRIPT): Updated.
4982 (STYLE): Redefine macro to load `afstyles.h'.
4983 (AF_SCRIPT_FALLBACK): Update definition. This will get more
4984 refinements with later on.
4985 (AF_SCRIPT_UNASSIGNED): Replace with...
4986 (AF_STYLE_UNASSIGNED): ... this macro.
4987 (AF_FaceGlobalsRec): Updated.
4988
4989 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
4990 af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
4991 af_latin_hint_edges): Updated.
4992
4993 * src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
4994 (af_ltn2_uniranges): Removed.
4995
4996 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
4997 Updated.
4998
4999 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
5000 * src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
5001 (AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
5002 members.
5003
5004 * src/autofit/afranges.h: Updated.
5005
5006 * src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
5007
Werner Lembergd8324572013-12-19 15:45:24 +010050082013-12-19 Werner Lemberg <wl@gnu.org>
5009
5010 [autofit] Factor scripts and uniranges out of writing system files.
5011
5012 * src/autofit/afranges.c, src/autofit/afranges.h: New files.
5013
5014 * src/autofit/afscript.h: Extend `SCRIPT' macro with more
5015 parameters, taking data from the writing system files.
5016
5017 * src/autofit/aftypes.h: Updated.
5018
5019 * src/autofit/afglobal.c: Include `afranges.h'.
5020 Load `afscript.h' to call AF_DEFINE_SCRIPT_CLASS.
5021 * src/autofit/afglobal.c: Include `afranges.h'.
5022 Load `afscript.h' to call AF_DECLARE_SCRIPT_CLASS.
5023
5024 * src/autofit/afcjk.c, src/autofit/afcjk.h: Updated.
5025 * src/autofit/afdummy.c, src/autofit/afdummy.h: Updated.
5026 * src/autofit/afindic.c, src/autofit/afindic.h: Updated.
5027 * src/autofit/aflatin.c, src/autofit/aflatin.h: Updated.
5028 * src/autofit/aflatn2.c, src/autofit/aflatn2.h: Updated.
5029
5030 * src/autofit/afpic.c: Updated.
5031
5032 * src/autofir/autofit.c: Include `afranges.c'.
5033 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afranges.c'.
5034
Werner Lemberg9a354552013-12-18 10:36:06 +010050352013-12-18 Werner Lemberg <wl@gnu.org>
5036
Werner Lemberg73f31982013-12-19 15:24:17 +01005037 [autofit] More code orthogonality.
5038
5039 * src/autofit/aftypes.h (AF_StyleMetrics): Replace `script_class'
5040 pointer to an `AF_ScriptClass' structure with `script' index of type
5041 `AF_Script'.
5042 Move some code around.
5043
5044 * src/autofit/afcjk.c: Include `afpic.h'.
5045 (af_cjk_metrics_init_widths, af_cjk_metrics_init_blues,
5046 af_cjk_hint_edges): Updated.
5047
5048 * src/autofit/aflatin.c: Include `afpic.h'.
5049 (af_latin_metrics_init_widths, af_latin_metrics_init_blues,
5050 af_latin_metrics_scale_dim, af_latin_hint_edges): Updated.
5051
5052 * src/autofit/afglobal.c (af_face_globals_get_metrics): Updated.
5053
5054 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
5055 Updated.
5056
50572013-12-18 Werner Lemberg <wl@gnu.org>
5058
Werner Lemberg3f91cb32013-12-18 12:59:35 +01005059 [autofit] s/ScriptMetrics/StyleMetrics/.
5060
50612013-12-18 Werner Lemberg <wl@gnu.org>
5062
Werner Lemberg4fccc212013-12-18 12:53:01 +01005063 [autofit] s/script_{metrics,hints}/style_{metrics,hints}/
5064
50652013-12-18 Werner Lemberg <wl@gnu.org>
5066
Werner Lembergf4df4072013-12-18 10:39:30 +01005067 [autofit] s/gscripts/gstyles/.
5068
50692013-12-18 Werner Lemberg <wl@gnu.org>
5070
Werner Lemberg9a354552013-12-18 10:36:06 +01005071 [autofit] s/glyph_scripts/glyph_styles/.
5072
5073 This is the first commit of a series to create a new top-level
5074 structure (a `style') for handling scripts, writing_systems, and
5075 soon-to-be-added coverages.
5076
Werner Lemberg7a5fc2f2013-12-17 13:29:53 +010050772013-12-17 Werner Lemberg <wl@gnu.org>
5078
5079 [autofit] s/AF_Script_/AF_WritingSystem_/ where appropriate.
5080
Infinality8bb09b02013-12-11 09:01:13 +010050812013-12-11 Infinality <infinality@infinality.net>
5082
5083 [truetype] Simplify logic of rendering modes.
5084
5085 This patch unifies the subpixel and non-subpixel cases.
5086
5087 * src/truetype/ttinterp.h (TT_ExecContextRec): Remove
5088 `grayscale_hinting'; all code should refer to `grayscale' instead.
5089 Remove unused `native_hinting' member.
5090 Rename `subpixel_hinting' member to `subpixel.
5091
5092 * src/truetype/ttgload.c (TT_LOADER_SET_PP): Updated.
5093 (tt_loader_init): Updated.
5094
5095 * src/truetype/ttinterp.c (Ins_GETINFO): Simplify.
5096 Updated.
5097
Werner Lemberge9d95aa2013-12-11 07:48:51 +010050982013-12-11 Werner Lemberg <wl@gnu.org>
5099
5100 [documentation] Add section how to include FreeType header files.
5101 Problem reported by David Kastrup <dak@gnu.org>.
5102
5103 Surprisingly, a description how to do that was completely missing in
5104 the API reference.
5105
5106 * include/freetype.h, include/ftchapters.h: New documentation
5107 section `header_inclusion'.
5108
Werner Lemberg05c786d2013-12-10 08:38:57 +010051092013-12-10 Werner Lemberg <wl@gnu.org>
5110
Werner Lemberg91932592013-12-10 13:24:07 +01005111 [autofit] s/DFLT/NONE/, s/dflt/none/.
5112
51132013-12-10 Werner Lemberg <wl@gnu.org>
5114
Werner Lemberg45244f82013-12-10 13:18:11 +01005115 [autofit] s/AF_SCRIPT_NONE/AF_SCRIPT_UNASSIGNED/.
5116
51172013-12-10 Werner Lemberg <wl@gnu.org>
5118
Werner Lemberg69d1a362013-12-10 10:12:27 +01005119 [truetype] Fix scaling of vertical phantom points.
5120
5121 * src/truetype/ttgload.c (load_truetype_glyph): Scale pp3.x and
5122 pp4.x also.
5123
51242013-12-10 Werner Lemberg <wl@gnu.org>
5125
Werner Lemberg05c786d2013-12-10 08:38:57 +01005126 [truetype] Fix positioning of composite glyphs.
5127 Problem reported by Nigel Tao <nigeltao@golang.org>.
5128
5129 * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts
5130 the glyph (component) by a fractional value computed from the LSB
5131 phantom point. This is wrong, since the horizontal phantom points
5132 get rounded horizontally later on.
5133
Werner Lembergdd8050a2013-12-08 23:14:46 +010051342013-12-08 Werner Lemberg <wl@gnu.org>
5135
5136 * Version 2.5.2 released.
5137 =========================
5138
5139
5140 Tag sources with `VER-2-5-2'.
5141
5142 * docs/VERSION.DLL: Update documentation and bump version number to
5143 2.5.2.
5144
5145 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
5146 builds/windows/vc2005/index.html,
5147 builds/windows/vc2008/freetype.vcproj,
5148 builds/windows/vc2008/index.html,
5149 builds/windows/vc2010/freetype.vcxproj,
5150 builds/windows/vc2010/index.html,
5151 builds/windows/visualc/freetype.dsp,
5152 builds/windows/visualc/freetype.vcproj,
5153 builds/windows/visualc/index.html,
5154 builds/windows/visualce/freetype.dsp,
5155 builds/windows/visualce/freetype.vcproj,
5156 builds/windows/visualce/index.html,
5157 builds/wince/vc2005-ce/freetype.vcproj,
5158 builds/wince/vc2005-ce/index.html,
5159 builds/wince/vc2008-ce/freetype.vcproj,
5160 builds/wince/vc2008-ce/index.html: s/2.5.1/2.5.2/, s/251/252/.
5161
Werner Lembergec8853c2014-03-06 19:13:45 +01005162 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
Werner Lembergdd8050a2013-12-08 23:14:46 +01005163
5164 * builds/unix/configure.raw (version_info): Set to 17:1:11.
Werner Lembergec8853c2014-03-06 19:13:45 +01005165 * CMakeLists.txt (VERSION_PATCH): Set to 2.
Werner Lembergdd8050a2013-12-08 23:14:46 +01005166 * docs/CHANGES: Updated.
5167
Werner Lemberg98d185c2013-12-07 09:26:55 +010051682013-12-07 Werner Lemberg <wl@gnu.org>
5169
5170 [truetype] Next round in phantom point handling.
5171
5172 Greg Hitchcock provided very interesting insights into the
5173 complicated history of the horizontal positions of the TSB and BSB
5174 phantom points.
5175
5176 * src/truetype/ttgload.c (TT_LOADER_SET_PP)
5177 [TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Use `subpixel_hinting' and
5178 `grayscale_hinting' flags as conditionals for the x position of TSB
5179 and BSB.
5180
Werner Lembergfcdb7842013-12-05 15:53:27 +010051812013-12-05 Werner Lemberg <wl@gnu.org>
5182
5183 * builds/freetype.mk (FT_CC): Removed. Unused.
5184
Werner Lemberg64b395c2013-12-04 06:18:56 +010051852013-12-04 Werner Lemberg <wl@gnu.org>
5186
5187 [sfnt] Fix handling of embedded bitmap strikes.
5188
5189 This corrects the commit from 2013-11-21. Problem reported by
5190 Andrey Panov <panov@canopus.iacp.dvo.ru>.
5191
5192 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to
5193 detect excessive bytes for bit-aligned bitmaps.
5194
Werner Lembergbdd5e752013-12-03 06:57:02 +010051952013-12-03 Werner Lemberg <wl@gnu.org>
5196
Werner Lembergc2b47532013-12-03 07:01:57 +01005197 [truetype] Remove dead code.
5198
5199 Reported by Nigel Tao <nigeltao@golang.org>.
5200
5201 * include/internal/tttypes.h (TT_LoaderRec): Remove unused
5202 `preserve_pps' field.
5203 * src/truetype/ttgload.c (TT_Hint_Glyph): Updated.
5204
52052013-12-03 Werner Lemberg <wl@gnu.org>
5206
Werner Lembergbdd5e752013-12-03 06:57:02 +01005207 [truetype] Fix phantom point handling.
5208
5209 This is a further improvement to the changes from 2013-11-06.
5210
5211 * src/truetype/ttgload.c (TT_Hint_Glyph): Horizontal phantom points
5212 are rounded horizontally, vertical ones are rounded vertically.
5213 (TT_LOADER_SET_PP): The horizontal position of vertical phantom
5214 points in pre-ClearType mode is zero, as shown in the OpenType
5215 specification.
5216
Werner Lemberg64872a52013-12-02 07:51:17 +010052172013-12-02 Werner Lemberg <wl@gnu.org>
5218
5219 [truetype] Fix change from 2013-11-20.
5220
5221 Problem reported by Akira Kakuto <kakuto@fuk.kindai.ac.jp>.
5222
5223 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Protect call to
5224 `Update_Max' with both a TT_USE_BYTECODE_INTERPRETER guard and a
5225 `IS_HINTED' clause.
5226 Also remove redundant check using `maxSizeOfInstructions' – in
5227 simple glyphs, the bytecode data comes before the outline data, and
5228 a validity test for this is already present.
5229
Werner Lemberg52166ab2013-11-27 10:10:16 +010052302013-11-27 Werner Lemberg <wl@gnu.org>
5231
5232 [autofit] Fix use of dumping functions in `ftgrid' demo program.
5233
5234 * src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro.
5235 (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
5236 af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to
5237 handle output to stdout.
5238 Use AF_DUMP.
5239 (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
5240 af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed.
5241
Werner Lemberg3aee4292013-11-25 00:28:11 +010052422013-11-25 Werner Lemberg <wl@gnu.org>
5243
5244 * Version 2.5.1 released.
5245 =========================
5246
5247
5248 Tag sources with `VER-2-5-1'.
5249
5250 * docs/VERSION.DLL: Update documentation and bump version number to
5251 2.5.1.
5252
5253 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
5254 builds/windows/vc2005/index.html,
5255 builds/windows/vc2008/freetype.vcproj,
5256 builds/windows/vc2008/index.html,
5257 builds/windows/vc2010/freetype.vcxproj,
5258 builds/windows/vc2010/index.html,
5259 builds/windows/visualc/freetype.dsp,
5260 builds/windows/visualc/freetype.vcproj,
5261 builds/windows/visualc/index.html,
5262 builds/windows/visualce/freetype.dsp,
5263 builds/windows/visualce/freetype.vcproj,
5264 builds/windows/visualce/index.html,
5265 builds/wince/vc2005-ce/freetype.vcproj,
5266 builds/wince/vc2005-ce/index.html,
5267 builds/wince/vc2008-ce/freetype.vcproj,
5268 builds/wince/vc2008-ce/index.html: s/2.5.0/2.5.1/, s/250/251/.
5269
5270 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
5271
5272 * builds/unix/configure.raw (version_info): Set to 17:0:11.
Werner Lembergec8853c2014-03-06 19:13:45 +01005273 * CMakeLists.txt (VERSION_PATCH): Set to 1.
Werner Lemberg3aee4292013-11-25 00:28:11 +01005274 * docs/CHANGES, docs/release: Updated.
5275
Werner Lemberg9326caf2013-11-23 23:59:25 +010052762013-11-23 Werner Lemberg <wl@gnu.org>
5277
Werner Lemberg063ee6b2013-11-24 00:19:17 +01005278 [truetype]: Add tricky font names `hkscsiic.ttf' and `iicore.ttf'.
5279
5280 * src/truetype/ttobjs.c (TRICK_NAMES_MAX_CHARACTERS,
5281 TRICK_NAMES_COUNT): Updated.
5282 (trick_names): Add family name for the two fonts.
5283
52842013-11-23 Werner Lemberg <wl@gnu.org>
5285
Werner Lemberg9326caf2013-11-23 23:59:25 +01005286 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo.
5287
Werner Lemberg427b1762013-11-21 13:10:56 +010052882013-11-21 Werner Lemberg <wl@gnu.org>
5289
Werner Lemberg9326caf2013-11-23 23:59:25 +01005290 [sfnt] Typo.
Werner Lemberg8af2a1c2013-11-21 13:13:12 +01005291
5292 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
5293
5294 * src/sfnt/sfobjs.c (sfnt_load_face): Return correct `bsize->width'
5295 value if the font lacks an `OS/2' table.
5296
52972013-11-21 Werner Lemberg <wl@gnu.org>
5298
Werner Lemberg64b395c2013-12-04 06:18:56 +01005299 [sfnt] Improve handling of buggy embedded bitmap strikes.
Werner Lemberg427b1762013-11-21 13:10:56 +01005300
5301 We are now able to successfully load `AppleMyoungJo.ttf'.
5302 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
5303
5304 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph
5305 format.
5306
Werner Lemberg28626862013-11-20 21:06:18 +010053072013-11-20 Werner Lemberg <wl@gnu.org>
5308
5309 [truetype] Don't trust `maxp's `maxSizeOfInstructions'.
5310
5311 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>; see
5312
5313 http://lists.nongnu.org/archive/html/freetype-devel/2013-08/msg00005.html
5314
5315 for details.
5316
5317 * src/base/ftobjs.c (FT_Load_Glyph): Check size of `fpgm' and `prep'
5318 tables also for setting `autohint'.
5319
5320 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use code from
5321 `TT_Process_Composite_Glyph' for handling unreliable values of
5322 `maxSizeOfInstructions'.
5323
Werner Lembergbc25de62013-11-16 07:52:20 +010053242013-11-16 Werner Lemberg <wl@gnu.org>
5325
5326 [sfnt] Fix `OS/2' table version 5 support.
5327
5328 We now follow the `official' announcement from Microsoft (on the
5329 OpenType mailing list, which unfortunately hasn't a public archive).
5330
5331 * include/freetype/tttables.h (TT_OS2):
5332 s/usLowerPointSize/usLowerOpticalPointSize/,
5333 s/usUpperPointSize/usUpperOpticalPointSize/.
5334
5335 * src/sfnt/ttload.c (tt_face_load_os2): Update, and set correct
5336 default values.
5337
Werner Lembergfae38202013-11-13 08:55:46 +010053382013-11-13 Werner Lemberg <wl@gnu.org>
5339
Werner Lembergc52b1292013-11-13 10:06:00 +01005340 * builds/unix/ft2unix.h: Remove. No longer necessary.
5341
5342 * builds/unix/install.mk (install): Updated.
5343
53442013-11-13 Werner Lemberg <wl@gnu.org>
5345
Werner Lembergfae38202013-11-13 08:55:46 +01005346 Simplify header file hierarchy.
5347
5348 This large patch changes the header file directory layout from
5349 `include/freetype/...' to `include/...', effectively removing one
5350 level. Since the file `ft2build.h' is also located in `include'
5351 (and it stays there even after installation), all FreeType header
5352 files are now in a single directory.
5353
5354 Applications that use (a) `freetype-config' or FreeType's
5355 `pkg-config' file to get the include directory for the compiler, and
5356 (b) the documented way for header inclusion like
5357
5358 #include <ft2build.h>
5359 #include FT_FREETYPE_H
5360 ...
5361
5362 don't need any change to the source code.
5363
5364 * include/freetype/*: Move up to...
5365 * include/*: ... this directory.
5366
5367 * builds/amiga/include/freetype/*: Move up to...
5368 * builds/amiga/include/*: ... this directory.
5369
5370 */*: Essentially do `s@/freetype/@/@' where appropriate.
5371
5372 * CMakeList.txt: Simplify.
5373 * builds/unix/freetype-config.in, builds/unix/freetype2.in: For
5374 `--cflags', return a single directory.
5375 * builds/unix/install.mk (install): No longer try to remove `cache'
5376 and `internal' subdirectories; instead, remove the `freetype'
5377 subdirectory.
5378
Werner Lembergea5c7812013-11-12 08:55:26 +010053792013-11-12 Werner Lemberg <wl@gnu.org>
5380
5381 [truetype] Fix last `truetype' commit.
5382
5383 * src/truetype/ttgload.c (tt_get_metrics): Preserve stream position.
5384 Return error value.
5385 (load_truetype_glyph): Updated.
5386
Werner Lemberg78333282013-11-10 06:26:52 +010053872013-11-10 Werner Lemberg <wl@gnu.org>
5388
5389 * docs/CMAKE: New dummy file.
5390
Dave Arnolddd213012013-11-08 10:52:51 +010053912013-11-08 Dave Arnold <darnold@adobe.com>
5392
5393 [cff] Fix for hints that touch.
5394
5395 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Fix condition for
5396 finding index value of insertion point.
5397
Werner Lemberg7e4b0fb2013-11-06 07:14:49 +010053982013-11-06 Werner Lemberg <wl@gnu.org>
5399
Werner Lemberg5e225b72013-11-06 08:41:59 +01005400 [truetype] Fix handling of phantom points in composite glyphs.
5401 Problem reported by Nigel Tao <nigeltao@golang.org>.
5402
5403 This is a follow-up commit to the previous one.
5404
5405 * src/truetype/ttgload.c (load_truetype_glyph): Call
5406 `tt_get_metrics' after loading the glyph header.
5407
54082013-11-06 Werner Lemberg <wl@gnu.org>
5409
Werner Lemberg7e4b0fb2013-11-06 07:14:49 +01005410 [truetype] Improve emulation of vertical metrics.
5411
5412 This commit also improves the start values of vertical phantom
5413 points. Kudos to Greg Hitchcock for help.
5414
5415 * src/truetype/ttgload.c (TT_Get_VMetrics): Add parameter to pass
5416 `yMax' value. Replace code with fixed Microsoft definition.
5417 (tt_get_metrics): Updated.
5418 (TT_LOADER_SET_PP): Add explanation how to initialize phantom
5419 points, taken from both the OpenType specification and private
5420 communication with Greg (which will eventually be added to the
5421 standard).
5422 Fix horizontal position of `pp3' and `pp4'.
5423
5424 * src/truetype/ttgload.h: Updated.
5425
5426 * src/truetype/ttdriver.c (tt_get_advances): Updated.
5427
5428 * docs/CHANGES: Updated.
5429
Werner Lembergc6064282013-11-05 13:29:15 +010054302013-11-05 Werner Lemberg <wl@gnu.org>
5431
Werner Lemberg50740532013-11-05 23:19:18 +01005432 * builds/windows/vc2010/freetype.vcxproj: s/v110/v100/.
5433 PlatformToolSet version 110 is for VC2012.
5434
5435 Problem reported (with solution) by Dave Arnold <darnold@adobe.com>.
5436
54372013-11-05 Werner Lemberg <wl@gnu.org>
5438
Werner Lembergc6064282013-11-05 13:29:15 +01005439 [truetype] Correctly reset point tags for glyph components.
5440 Problem reported by Nigel Tao <nigeltao@golang.org>.
5441
5442 * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop.
5443
Werner Lemberg35b08182013-11-02 08:28:41 +010054442013-11-02 Werner Lemberg <wl@gnu.org>
5445
Werner Lemberg7d449432013-11-02 11:36:37 +01005446 [truetype] Fix GETINFO opcode handling of subpixel hinting bits.
5447
5448 * src/truetype/ttinterp.c (Ins_GETINFO): Don't request bit 6 set to
5449 get info on subpixel hinting.
5450
5451 * docs/CHANGES: Updated.
5452
54532013-11-02 Werner Lemberg <wl@gnu.org>
5454
Werner Lemberg35b08182013-11-02 08:28:41 +01005455 Fix Savannah bug #40451.
5456
5457 Simply apply the patch from the bug report.
5458
5459 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
5460 include/freetype/config/ftconfig.h: The used #pragma directives only
5461 work with gcc versions 4.6 and higher.
5462
Werner Lembergebf52d62013-11-01 13:26:28 +010054632013-11-01 Werner Lemberg <wl@gnu.org>
5464
Werner Lembergafa0d592013-11-01 22:27:27 +01005465 * docs/CHANGES: Updated.
5466
54672013-11-01 Werner Lemberg <wl@gnu.org>
5468
Werner Lembergebf52d62013-11-01 13:26:28 +01005469 [truetype] Minor code refactoring.
5470
5471 Two benefits: The allocated FDEF (and IDEF) array gets slightly
5472 smaller, and the `ttdebug' demo program has access to function
5473 numbers without additional costs.
5474
5475 Fortunately, no changes to FontForge are necessary – this is the
5476 only external TrueType debugger I know of, but others may exist and
5477 should check the code accordingly.
5478
5479 * src/truetype/ttinterp.h (TT_CallRec): Replace `Cur_Restart' and
5480 `Cur_End' with a pointer to the corresponding `TT_DefRecord'
5481 structure.
5482
5483 * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF, Ins_ENDF,
5484 Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns <Invalid_Opcode>):
5485 Updated.
5486
Werner Lembergee510512013-10-27 07:25:35 +010054872013-10-27 Werner Lemberg <wl@gnu.org>
5488
5489 [sfnt] Implement support for `OS/2' table version 5.
5490
5491 See
5492
5493 http://typedrawers.com/discussion/470/new-microsoft-size-specific-design-selection-mechanism
5494
5495 for the announcement.
5496
5497 * include/freetype/tttables.h (TT_OS2): Add fields
5498 `usLowerPointSize' and `usUpperPointSize'. Since FreeType returns
5499 this structure only as a pointer through `FT_Get_Sfnt_Table', there
5500 shouldn't be any ABI problems.
5501
5502 * src/sfnt/ttload.c (tt_face_load_os2): Implement it.
5503
5504 * docs/CHANGES: Updated.
5505
Werner Lemberg994a8592013-10-24 08:50:34 +020055062013-10-24 Werner Lemberg <wl@gnu.org>
5507
5508 * README.git, docs/CHANGES, docs/INSTALL: Updated.
5509
John Carya0e4a732013-10-24 08:49:08 +020055102013-10-24 John Cary <cary@txcorp.com>
5511
5512 Provide cmake support.
5513
5514 * CMakeLists.txt: New file.
5515
Kenneth Miller4d87ac82013-10-23 20:10:56 +020055162013-10-23 Kenneth Miller <kennethadammiller@yahoo.com>
5517 Werner Lemberg <wl@gnu.org>
5518
5519 Provide support for x64 builds in Visual C++ project files.
5520
5521 * src/builds/win32: Renamed to...
5522 * src/builds/windows: This.
5523
5524 * src/builds/windows/vc2010/*: Updated to handle x64 target.
5525
5526 * src/builds/windows/*.mk, docs/INSTALL.GNU: s/win32/windows/ where
5527 appropriate.
5528
Werner Lemberg604838d2013-10-22 01:10:10 +020055292013-10-22 Werner Lemberg <wl@gnu.org>
5530
5531 * src/base/md5.c, src/base/md5.h: Updated to recent version.
5532
5533 * src/base/ftobjs.c: Updated; `md5.c' no longer uses `free'.
5534
Werner Lembergdb9159c2013-10-22 10:27:50 +02005535 The canonical URL to get updates for this file is
5536
5537 http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/
5538
5539 as the author told me in private communication.
5540
Werner Lemberg34efe052013-10-19 21:14:40 +020055412013-10-19 Werner Lemberg <wl@gnu.org>
5542
Werner Lemberg75efc2d2013-10-19 21:46:03 +02005543 [autofit] s/SMALL_TOP/X_HEIGHT/.
5544
5545 * src/autofit/afblue.dat: Updated.
5546
5547 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
5548
5549 * src/autofit/aflatin.c, src/autofit/aflatin.h,
5550 src/autofit/atlatin2.c: Updated.
5551
55522013-10-19 Werner Lemberg <wl@gnu.org>
5553
Werner Lemberg34efe052013-10-19 21:14:40 +02005554 * src/autofit/afblue.dat: s/MINOR/DESCENDER/.
5555
5556 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
5557
Werner Lemberg955f6a82013-10-16 19:47:57 +020055582013-10-16 Werner Lemberg <wl@gnu.org>
5559
Werner Lemberga5f22a92013-10-17 11:08:25 +02005560 [autofit] Add description strings to script entries.
5561
5562 Currently, this is unused.
5563
5564 * src/autofit/afscript.h: Do it.
5565 * src/autofit/afglobal.c, src/autofit/afpic.c,
5566 src/autofit/aftypes.h: Updated.
5567
55682013-10-16 Werner Lemberg <wl@gnu.org>
5569
Werner Lemberg955f6a82013-10-16 19:47:57 +02005570 [autofit] Improve tracing message for extra light flag.
5571
5572 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it.
5573
Chongyu Zhu41632b52013-10-15 11:40:34 +020055742013-10-15 Chongyu Zhu <lembacon@gmail.com>
5575
5576 [arm] Fix thumb2 inline assembly under LLVM.
5577
5578 When using `ADD' with an immediate operand, the instruction is
5579 actually `ADD Rd, Rn, #<imm12>', that is, the maximum of the
5580 immediate operand cannot exceed 4095. It will fail to compile with
5581 LLVM.
5582
5583 However, in GCC, due to some legacy compatibility considerations,
5584 `ADD.W' will be automatically emitted when the immediate operand is
5585 larger than 4095.
5586
5587 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
5588 (FT_MulFix_arm) [__GNUC__]: Support clang compiler.
5589
5590 * src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto.
5591
Werner Lembergb6695242013-10-12 10:33:04 +020055922013-10-12 Werner Lemberg <wl@gnu.org>
5593
5594 [autofit] Improve tracing of `latin' hinter.
5595
5596 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue
5597 zone types.
5598 (af_latin_metrics_scale_dim): Report scaling changes due to x height
5599 alignment.
5600 Report scaled stroke width and blue zone values.
5601
Dave Arnolde845a852013-10-03 23:04:29 +020056022013-10-03 Dave Arnold <darnold@adobe.com>
5603
5604 * src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.
5605
Werner Lemberg2c56f2a2013-10-07 22:01:00 +02005606 Note that the old code avoided using a region of the piecewise
5607 linear function where the slope was zero. The recovery was to use a
5608 different section of the function, which produced a different,
5609 incorrect amount of darkening.
5610
Darrell Bellert01af71d2013-10-02 22:04:07 +020056112013-10-02 Darrell Bellert <darrell.bellert@hl.konicaminolta.us>
5612
5613 * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'.
5614
Dave Arnold0b330452013-10-02 11:04:06 +020056152013-10-02 Dave Arnold <darnold@adobe.com>
5616
5617 * src/cff/cf2font.c (cf2_computeDarkening): Initialize darkenAmount.
5618
5619 This line was lost in commit 89ca1fd6 (from 2013-06-25). The effect
5620 is to use a previous darkening amount when producing an unhinted,
5621 unscaled outline. This can cause autohint samples in ftgrid and
5622 ftview to be based on darkened CFF outlines instead of unhinted,
5623 undarkened ones.
5624
Dave Arnold3a2cb0f2013-09-29 16:17:02 +020056252013-09-29 Dave Arnold <darnold@adobe.com>
5626
5627 Fix Savannah bug #39295.
5628
5629 The bug was caused by switching to the initial hintmap (the one in
5630 effect when `moveto' executes) just before drawing the final element
5631 in the charstring. This ensured that the path was closed (in both
5632 Character Space and Device Space). But if the final element was a
5633 curve and if the final hintmap was different enough from the initial
5634 one, then the curve was visibly distorted.
5635
5636 The first part of the fix is to draw the final curve using the final
5637 hintmap as specified by the charstring. This corrects the
5638 distortion but does not ensure closing in Device Space. It may
5639 require the rasterizer to automatically generate an extra closing
5640 line. Depending on the hintmap differences, this line could be from
5641 zero to a couple pixels in length.
5642
5643 The second part of the fix covers the case where the charstring
5644 subpath is closed with an explicit line. We now modify that line's
5645 end point to avoid the distortion.
5646
5647 Some glyphs in the bug report font (TexGyreHeros-Regular) that show
5648 the change are:
5649
5650 25ppem S (98)
5651 24ppem eight (52)
5652 25.5ppem p (85)
5653
5654 Curves at the *end* of a subpath are no longer distorted. However,
5655 some of these glyphs have bad hint substitutions in the middle of a
5656 subpath, and these are not affected.
5657
5658 The patch has been tested with a set of 106 fonts that shipped with
5659 Adobe Creative Suite 4, together with 756 Open Source CFF fonts from
5660 Google Fonts. There are 1.5 million glyphs, of which some 20k are
5661 changed with the fix. A sampling of a few hundred of these changes
5662 have been examined more closely, and the changes look good (or at
5663 least acceptable).
5664
5665 * src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing'
5666 to indicate that we synthesize a closepath line.
5667
5668 * src/cff/cf2hints.c (cf2_glyphpath_init): Updated.
5669 (cf2_glyphpath_pushPrevElem): If closing, use first hint map (for
5670 `lineto' operator) and adjust hint zone.
5671 For synthesized closing lines, use end point in first hint zone.
5672 (cf2_glyphpath_lineTo): Take care of synthesized closing lines. In
5673 particular, shift the detection of zero-length lines from character
5674 space to device space.
5675 (cf2_glyphpath_closeOpenPath): Remove assertion.
5676 Updated.
5677
Werner Lembergb75a8b82013-09-25 09:46:36 +020056782013-09-25 Werner Lemberg <wl@gnu.org>
5679
5680 * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays.
5681
suzuki toshiyaac0f4452013-09-25 10:57:17 +090056822013-09-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5683
5684 [bdf, pcf] Refuse non-zero face_index.
Werner Lemberg964317e2013-09-25 09:22:40 +02005685
suzuki toshiyaac0f4452013-09-25 10:57:17 +09005686 Suggested by Akira Tagoh, see
5687
5688 http://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html
5689
Werner Lemberg964317e2013-09-25 09:22:40 +02005690 * src/bdf/bdfdrivr.c (BDF_Face_Init): Return `Invalid_Argument'
5691 error if the font could be opened but non-zero `face_index' is
5692 given.
suzuki toshiyaac0f4452013-09-25 10:57:17 +09005693 * src/pcf/pcfdrivr.c (PCF_Face_Init): Ditto.
5694
5695 * src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED
Werner Lemberg964317e2013-09-25 09:22:40 +02005696 macro for `face_index' because it is validated later.
suzuki toshiyaac0f4452013-09-25 10:57:17 +09005697
Werner Lemberg4de77872013-09-23 22:10:08 +020056982013-09-23 Werner Lemberg <wl@gnu.org>
5699
5700 Fix Savannah bug #40090.
5701
5702 * src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit
5703 306f8c5d (from 2013-08-25) affecting this function.
5704
Werner Lemberg5a4c5a52013-09-22 22:37:26 +020057052013-09-22 Werner Lemberg <wl@gnu.org>
5706
5707 [autofit] Disunify Cyrillic and Greek handling from Latin.
5708
5709 * src/autofit/afscript.h: Add Cyrillic and Greek.
5710
5711 * src/autofit/afblue.dat (AF_BLUE_STRINGSET_GREK,
5712 AF_BLUE_STRINGSET_CYRL): Add blue zones for Greek and Cyrillic.
5713 (AF_BLUE_STRINGSET_LATN): Fix typo.
5714 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
5715
5716 * src/autofit/aflatin.c (af_grek_uniranges, af_cyrl_uniranges): New
5717 arrays.
5718 (af_grek_script_class, af_cyrl_script_class): New scripts.
5719 * src/autofit/aflatin.h: Updated.
5720
Werner Lemberg2cca9662013-09-20 07:23:34 +020057212013-09-20 Werner Lemberg <wl@gnu.org>
5722
5723 * docs/CHANGES: Updated.
5724
Behdad Esfahbod31e726d2013-09-20 07:20:53 +020057252013-09-20 Behdad Esfahbod <behdad@behdad.org>
5726
5727 Fix vertical size of emboldened glyphs.
5728
5729 Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709
5730
5731 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY'
5732 also.
5733
Alexei Podtelezhnikov52381c12013-09-11 23:25:56 -040057342013-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
5735
5736 * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation
5737 algorithm description.
5738
Werner Lemberg3f542492013-09-11 23:08:31 +020057392013-09-11 Werner Lemberg <wl@gnu.org>
5740
5741 [autofit] Improve Hebrew rendering.
5742
5743 This change introduces a new blue zone property
5744 `AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short
5745 top segments.
5746
5747 * src/autofit/afblue.dat: Fix Hebrew blue strings.
5748 Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP.
5749
5750 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro.
5751
5752 * src/autofit/afblue.c, src/autofit/afblue.h: Updated.
5753
5754 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle
5755 `AF_LATIN_IS_LONG_BLUE'.
5756
5757 * src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro.
5758
Werner Lemberg85a7fdf2013-08-29 21:03:05 +020057592013-08-28 Behdad Esfahbod <behdad@google.com>
5760
5761 [sfnt] Fix frame access while reading WOFF table directory.
5762
5763 * src/sfnt/sfobjs.c (woff_open_font): Using single memory frame
5764 while reading the directory entries for the whole loop.
5765
57662013-08-29 Werner Lemberg <wl@gnu.org>
Werner Lembergd689d1c2013-08-29 17:53:40 +02005767 Behdad Esfahbod <behdad@google.com>
5768
5769 Implement support for WOFF containers.
5770
5771 We simply synthesize a SFNT from the WOFF, create a memory stream
5772 for the new data, and load the SFNT as usual.
5773
5774 Does NOT add any API to access WOFF metadata or private blocks.
5775
5776 * include/freetype/internal/tttypes.h (WOFF_HeaderRec,
5777 WOFF_TableRec): New structures.
5778
5779 * include/freetype/tttags.h (TTAG_wOFF): New macro.
5780
5781 * src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling
5782 `open_face'.
5783
5784 * src/sfnt/sfobjs.c [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Include
5785 `FT_GZIP_H'.
5786 (WRITE_BYTE, WRITE_USHORT, WRITE_ULONG): New temporary macros for
5787 writing to a stream.
5788 (sfnt_stream_close, compare_offsets, woff_open_font): New functions.
5789 (sfnt_open_font): Handle `TTAG_wOFF'.
5790 (sfnt_init_face): Set `stream' after calling `sfnt_open_font'.
5791
5792 * src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling
5793 `sfnt->init_face'.
5794
5795 * src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an
5796 argument so that a changed stream survives.
5797 Update callers.
5798
57992013-08-28 Werner Lemberg <wl@gnu.org>
Werner Lemberge0f39ae2013-08-28 17:34:01 +02005800
Werner Lembergdc240522013-08-29 17:53:24 +02005801 [gzip] New function `FT_Gzip_Uncompress'.
5802
5803 This is modeled after zlib's `uncompress' function. We need this
5804 for WOFF support.
5805
5806 * include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress):
5807 New function.
5808
5809 * src/gzip/rules.mk: Rewrite to better reflect dependencies.
5810
58112013-08-28 Werner Lemberg <wl@gnu.org>
5812
Werner Lemberg5195ecd2013-08-28 17:41:21 +02005813 [autofit] Fix `make multi' compilation.
5814
5815 * src/autofit/afblue.cin, src/autofit/afblue.c: Don't include
5816 `afblue.h' but `aftypes.h'.
5817 * src/autofit/afcjk.c: Don't include `aftypes.h' but `afglobal.h'.
5818
58192013-08-28 Werner Lemberg <wl@gnu.org>
5820
Werner Lemberge0f39ae2013-08-28 17:34:01 +02005821 [autofit] Fix C++ compilation.
5822
5823 * src/autofit/afglobal.c (af_face_globals_get_metrics),
5824 src/autofit/afdummy.c (af_dflt_script_class), src/autofit/afindic.c
5825 (af_deva_script_class): Use proper casts.
5826
Behdad Esfahbodbd3849e2013-08-27 21:43:38 +020058272013-08-27 Behdad Esfahbod <behdad@google.com>
5828
Behdad Esfahbodc799dd62013-08-27 21:46:03 +02005829 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos.
5830
58312013-08-27 Behdad Esfahbod <behdad@google.com>
5832
Behdad Esfahbodbd3849e2013-08-27 21:43:38 +02005833 FT_Open_Face: Improve external stream handling.
5834
5835 If the font's `clazz->init_face' function wants to swap to new
5836 stream, handling of whether original stream was external could
5837 result to either memory leak or double free. Mark externality into
5838 face flags before calling `init_face' such that the clazz can handle
5839 external streams properly.
5840
5841 * src/base/ftobjs.c (FT_Open_Face): Move code to set
5842 FT_FACE_FLAG_EXTERNAL_STREAM to...
5843 (open_face): This function.
5844
Werner Lemberg5e53db22013-08-27 18:37:39 +020058452013-08-27 Werner Lemberg <wl@gnu.org>
5846
Werner Lembergbcd8c0b2013-08-27 21:36:03 +02005847 Remove `FT_SqrtFixed' function.
5848
5849 It's no longer used.
5850
5851 * include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it.
5852
58532013-08-27 Werner Lemberg <wl@gnu.org>
5854
Werner Lemberg5e53db22013-08-27 18:37:39 +02005855 [autofit] While tracing, report script names instead of ID values.
5856
5857 * src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]:
5858 New array.
5859 * src/autofit/afglobal.h: Updated.
5860
5861 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
5862 af_cjk_hint_edges): Use `af_script_names'.
5863 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
5864 af_latin_hint_edges): Ditto.
5865
Werner Lemberg92f5a042013-08-26 09:22:27 +020058662013-08-26 Werner Lemberg <wl@gnu.org>
5867
Werner Lemberg278f64b2013-08-26 20:20:03 +02005868 [autofit] Report used script while hinting a glyph.
5869
5870 * src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c
5871 (af_latin_hint_edges): Implement it.
5872
58732013-08-26 Werner Lemberg <wl@gnu.org>
5874
Werner Lemberg371f5c32013-08-26 20:11:24 +02005875 [autofit] Add support for Hebrew script.
5876
5877 * src/autofit/afblue.dat: Add blue strings for Hebrew.
5878 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
5879
5880 * src/autofit/aflatin.c (af_hebr_uniranges): New array.
5881 (af_hebr_script_class): New script.
5882 * src/autofit/aflatin.h, src/autofit/afscript.h: Updated.
5883
58842013-08-26 Werner Lemberg <wl@gnu.org>
5885
Werner Lemberg098121d2013-08-26 18:54:05 +02005886 [autofit] Improve tracing messages.
5887
5888 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Mention script
5889 ID in tracing message.
5890 (af_cjk_metrics_init_blues): Initialize `axis' outside of the inner
5891 loop.
5892 Improve tracing messages.
5893 (af_cjk_hint_edges) [FT_DEBUG_LEVEL_TRACE]: New variable
5894 `num_actions' to count hinting actions.
5895 Improve tracing messages.
5896
5897 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Mention
5898 script ID in tracing message.
5899 (af_latin_metrics_init_blues, af_latin_hint_edges): Improve tracing
5900 messages.
5901
59022013-08-26 Werner Lemberg <wl@gnu.org>
5903
Werner Lembergffee64a2013-08-26 12:55:48 +02005904 Better tracing of loaded glyphs.
5905
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02005906 Previously, the loading of a glyph was traced at level 4, if at all.
Werner Lembergffee64a2013-08-26 12:55:48 +02005907 With this change, all font loading routines emit a tracing message
5908 at level 1, making it easier to select tracing output (for example
5909 using F2_DEBUG="any:1 afhints:7 aflatin:7").
5910
5911 * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Add tracing message.
5912 * src/cff/cffdrivr.c (cff_glyph_load): Ditto.
5913 * src/cff/cffgload.c (cff_decoder_prepare): Improve tracing
5914 messages.
5915 * src/cid/cidgload.c (cid_load_glyph): Use level 1 for tracing
5916 message.
5917 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.
5918 * src/pfr/pfrobjs.c (pfr_slot_load): Add tracing message.
5919 * src/truetype/ttgload.c (TT_Load_Glyph): Ditto.
5920 * src/type1/t1gload.c (T1_Load_Glyph): Ditto.
5921 * src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto.
5922 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
5923
59242013-08-26 Werner Lemberg <wl@gnu.org>
5925
Werner Lemberg33655a92013-08-26 09:58:50 +02005926 [autofit] Fix script selection.
5927
5928 * src/autofit/afglobal.c (af_face_globals_get_metrics): Use
5929 `AF_SCRIPT_DFLT', not value 0.
5930 Simplify code.
5931
5932 * src/autofit/afscript.h: Sort by script name.
5933
59342013-08-26 Werner Lemberg <wl@gnu.org>
5935
Werner Lemberg92f5a042013-08-26 09:22:27 +02005936 [autofit] Make `dummy' hinter work as expected.
5937
5938 * src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling
5939 information.
5940 (af_dummy_hints_apply): Scale the glyphs.
5941
Werner Lemberg8b8be782013-08-25 08:01:41 +020059422013-08-25 Werner Lemberg <wl@gnu.org>
5943
Werner Lembergc1eb4452013-08-25 19:47:26 +02005944 [autofit] Make `cjk' module use blue stringsets.
5945
5946 * src/autofit/afcjk.c (AF_CJK_MAX_TEST_CHARACTERS): Removed.
5947 (af_cjk_hani_blue_chars): Removed.
5948 (AF_CJK_BLUE_TYPE_*): Removed.
5949 (af_cjk_metrics_init_blues): Replace AF_CJK_MAX_TEST_CHARACTERS with
5950 AF_BLUE_STRING_MAX_LEN.
5951 Change loops to use offsets (in file `afblue.h') into the new arrays
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02005952 `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
Werner Lembergc1eb4452013-08-25 19:47:26 +02005953 Instead of three dimensions (as used in the old blue string array)
5954 we now use properties to do the same, saving one loop nesting level.
5955
5956 * src/autofit/afcjk.h: Remove old enumeration values superseded by
5957 the new data in `afblue.h'.
5958 (AF_CJK_IS_TOP_BLUE, AF_CJK_IS_HORIZ_BLUE, AF_CJK_IS_FILLED_BLUE,
5959 AF_CJK_IS_RIGHT_BLUE): New macros, to be used in
5960 `af_cjk_metrics_init_blues'.
5961 (AF_CJK_BLUE_IS_RIGHT): Remove this now redundant enum value.
5962 (AF_CJK_BLUE_IS_TOP): Renamed to...
5963 (AF_CJK_BLUE_TOP): This.
5964 (AF_CJK_MAX_BLUES): Remove.
5965 (AF_CJKAxisRec): Updated.
5966
59672013-08-25 Werner Lemberg <wl@gnu.org>
5968
Werner Lemberg5c4a23a2013-08-25 19:29:07 +02005969 [autofit] Typo.
5970
5971 * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use
5972 cast.
5973
59742013-08-25 Werner Lemberg <wl@gnu.org>
5975
Werner Lemberg306f8c52013-08-25 13:07:08 +02005976 [autofit] Synchronize `cjk' with `latin' module (and vice versa).
5977
5978 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Add tracing
5979 messages.
5980 (af_cjk_metrics_init_blues): Don't pass blue string array as
5981 argument but use the global array directly.
5982 Use `outline' directly.
5983 Update and add tracing messages.
5984 (af_cjk_metrics_init): Simplify code.
5985 (af_cjk_metrics_scale_dim): Improve tracing message.
5986 (af_cjk_metrics_scale): Synchronize.
5987
5988 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
5989 af_latin_metrics_init_blues): Improve and add tracing messages.
5990
59912013-08-25 Werner Lemberg <wl@gnu.org>
5992
Werner Lemberg0975d682013-08-25 08:37:47 +02005993 [autofit] Make `latin' module use blue stringsets.
5994
5995 * src/autofit/aflatin.c (AF_LATIN_MAX_TEST_CHARACTERS): Removed.
5996 (af_latin_blue_chars): Removed.
5997 (af_latin_metrics_init_blues): Replace AF_LATIN_MAX_TEST_CHARACTERS
5998 with AF_BLUE_STRING_MAX_LEN.
5999 Change loops to use offsets (in file `afblue.h') into the new arrays
6000 `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
6001 Use `AF_LATIN_IS_SMALL_TOP_BLUE' macro.
6002
6003 * src/autofit/aflatin.h: Remove old enumeration values superseded by
6004 the new data in `afblue.h'.
6005 (AF_LATIN_IS_TOP_BLUE): Updated definition.
6006 (AF_LATIN_IS_SMALL_TOP_BLUE): New macro.
6007 (AF_LATIN_MAX_BLUES): Remove.
6008 (AF_LatinAxisRec): Updated.
6009
60102013-08-25 Werner Lemberg <wl@gnu.org>
6011
Werner Lembergdb3e5b92013-08-25 08:23:22 +02006012 [autofit] Add blue stringsets.
6013
6014 * src/autofit/aftypes.h: Include `afblue.h'.
6015 (AF_ScriptClassRec): Add `blue_stringset' field.
6016 (AF_DEFINE_SCRIPT_CLASS): Updated.
6017
6018 * src/autofit/autofit.c: Include `afblue.c'.
6019
6020 * src/autofit/afcjk.c (af_hani_script_class), src/autofit/afdummy.c
6021 (af_dflt_script_class), src/autofit/afindic.c
6022 (af_deva_script_class), src/autofit/aflatin.c
6023 (af_latn_script_class), src/autofit/aflatin2.c
6024 (af_ltn2_script_class): Updated.
6025
6026 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'.
6027
60282013-08-25 Werner Lemberg <wl@gnu.org>
6029
Werner Lemberg8b8be782013-08-25 08:01:41 +02006030 [autofit] Introduce data file for blue strings.
6031
6032 The idea is to have a central file which gets processed by a Perl
6033 script to create proper `.c' and `.h' files using templates. There
6034 are two other reasons to do that:
6035
6036 . The data file should be easily readable. We use UTF-8 encoding
6037 which then gets converted to single bytes.
6038
6039 . Since the number of supported scripts will increase soon, the
6040 current usage of blue string arrays is a waste of space. Using
6041 the Perl script it is possible to imitate jagged arrays,
6042 defining enumeration constants as offsets into the arrays.
6043
6044 This commit only adds files without changing any functionality.
6045
6046 * src/autofit/afblue.dat: New data file.
6047 * src/tools/afblue.pl: New Perl script for processing `afblue.dat'.
6048
6049 * src/autofit/afblue.cin, src/autofit/afblue.hin: New template files
6050 for...
6051 * src/autofit/afblue.c, src/autofit/afblue.c: New source files.
6052 To avoid a dependency on Perl, we add them too.
6053
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -040060542013-08-19 Alexei Podtelezhnikov <apodtele@gmail.com>
6055
Werner Lemberg71c0ad62013-08-27 21:30:09 +02006056 [base] Enable new algorithm for `BBox_Cubic_Check'.
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -04006057
Werner Lemberg71c0ad62013-08-27 21:30:09 +02006058 * src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove
6059 the old one.
6060 Improve comments.
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -04006061
Werner Lemberg6bfa2632013-08-18 18:34:05 +020060622013-08-18 Werner Lemberg <wl@gnu.org>
6063
Werner Lemberg4af44442013-08-18 18:46:30 +02006064 * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit.
6065
60662013-08-18 Werner Lemberg <wl@gnu.org>
6067
Werner Lemberg6bfa2632013-08-18 18:34:05 +02006068 Fix Savannah bug #39804.
6069
6070 * builds/unix/configure.raw (LIBPNG): Define and export.
6071 * builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle
6072 libpng.
6073
Alexei Podtelezhnikov32a7d872013-08-17 22:19:21 -040060742013-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
6075
6076 [base] Clean up BBox_Conic_Check.
6077
6078 * src/base/ftbbox.c (BBox_Conic_Check): Remove redundant checks for
6079 extremum at the segment ends, which are already within the bbox.
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02006080 Slightly modify calculations.
Alexei Podtelezhnikov32a7d872013-08-17 22:19:21 -04006081
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -040060822013-08-15 Alexei Podtelezhnikov <apodtele@gmail.com>
6083
6084 [base] Finish experimental (disabled) BBox_Cubic_Check implementation.
6085
6086 * src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02006087 accuracy and avoid overflows.
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -04006088
Alexei Podtelezhnikov61a65512013-08-13 22:28:57 -040060892013-08-13 Alexei Podtelezhnikov <apodtele@gmail.com>
6090
6091 [base] Refactor experimental (disabled) BBox_Cubic_Check.
6092
6093 * src/base/ftbbox.c (BBox_Cubic_Check): Implement the minimum search
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -04006094 as the mirror image of the maximum search implemented here...
6095 (update_max): New function.
Alexei Podtelezhnikov61a65512013-08-13 22:28:57 -04006096
John Tytgat9bcfab82013-08-06 08:55:19 +020060972013-08-06 John Tytgat <John.Tytgat@esko.com>
6098
6099 Fix Savannah bug #39702.
6100
6101 * src/cff/cffload.c (cff_index_get_pointers): Check for `cur_offset
6102 != 0'; this stronger test is mandated by the CFF specification.
6103 Fix test for INDEX structures which have one or more empty entries
6104 at the end.
6105
Werner Lembergcc25e3a2013-08-05 08:46:15 +020061062013-08-05 Werner Lemberg <wl@gnu.org>
6107
Werner Lemberga32682f2013-08-06 00:21:46 +02006108 Fix gcc pragmas, part 2.
6109
6110 * src/truetype/ttinterp.c (TT_MulFix14_long_long,
6111 TT_DotFix14_long_long): `#pragma gcc diagnostic {push,pop}' has been
6112 introduced with gcc version 4.6.
6113
61142013-08-05 Werner Lemberg <wl@gnu.org>
6115
Werner Lemberg69e524d2013-08-05 23:38:32 +02006116 Fix gcc pragmas.
6117
6118 * src/truetype/ttinterp.c (TT_MulFix14_long_long,
6119 TT_DotFix14_long_long): Older gcc versions don't accept diagnostic
6120 pragmas within a function body.
6121
61222013-08-05 Werner Lemberg <wl@gnu.org>
6123
Werner Lemberg9e6de362013-08-05 16:37:21 +02006124 Fix Savannah bug #39700.
6125
6126 * builds/unix/ftconfig.h: Synchronize with
6127 `include/freetype/config/ftconfig.h'.
6128
6129 * builds/vms/ftconfig.h: Ditto.
6130 Make the differences to the master `ftconfig.h' file as small as
6131 possible for easier maintainance.
6132
61332013-08-05 Werner Lemberg <wl@gnu.org>
6134
Werner Lembergcc25e3a2013-08-05 08:46:15 +02006135 [autofit] Improve handling of `near' points.
6136
6137 Points which are very near to each other are now marked as such.
6138 The `weak' flag is then computed by using the `in' vector of the
6139 first and the `out' vector of the last point of a group of near
6140 points.
6141
6142 For example, this fixes the rendering of glyph `Oslash' in
6143 `Roboto-Thin.ttf'.
6144
6145 * src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'.
6146
6147 * src/autofit/afhints.c (af_glyph_hints_reload): Introduce
6148 the heuristic value `near_limit' to decide whether the current point
6149 is near to the previous one, then set `AF_FLAG_NEAR' accordingly.
6150 Store good `in' vector (of last non-near point) in
6151 `last_good_in_{x,y}' and use it as an argument to
6152 `ft_corner_is_flat' if necessary.
6153
Werner Lemberg74a9b672013-08-02 14:53:32 +020061542013-08-02 Werner Lemberg <wl@gnu.org>
6155
Werner Lemberg0d28a7d2013-08-02 22:59:43 +02006156 * include/freetype/ftcffdrv.h: Improve documentation.
6157 This is based on blog entries from David Lemon and Dave Arnold (both
6158 from Adobe) with kind permission. Dave also helped in
6159 proof-reading.
6160
61612013-08-02 Werner Lemberg <wl@gnu.org>
6162
Werner Lemberg456cc442013-08-02 20:25:21 +02006163 [autofit] Move declaration of scripts into separate file.
6164
6165 This has the benefit that we don't need to duplicate the data at
6166 different places.
6167
6168 * src/autofit/afscript.h: New file.
6169
6170 * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define
6171 the enumeration values.
6172
6173 * src/autofit/afglobal.c: Include `afscript.h' to get the script
6174 specific header files.
6175 (af_script_classes): Include `afscript.h' to fill this array.
6176
6177 * src/autofit/afpic.c: Include `afscript.h' to get the script
6178 specific header files.
6179 (autofit_module_class_pic_init): Include `afscript.h' for
6180 initialization.
6181 * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT,
6182 AF_SCRIPT_CLASSES_REC_COUNT): Removed. Use `AF_SCRIPT_MAX' instead.
6183
6184 * src/autofit/rules.mk (AUTOF_DRV_H): Updated.
6185
61862013-08-02 Werner Lemberg <wl@gnu.org>
6187
Werner Lemberg773601d2013-08-02 19:51:17 +02006188 [autofit] Move declaration of writing systems into separate file.
6189
6190 This has the benefit that we don't need to duplicate the data at
6191 different places.
6192
6193 * src/autofit/afwrtsys.h: New file.
6194
6195 * src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to
6196 define the enumeration values.
6197
6198 * src/autofit/afglobal.c: Include `afwrtsys.h' to get the writing
6199 system specific header files.
6200 Include `afpic.h'.
6201 (af_writing_system_classes): Include `afwrtsys.h' to fill this
6202 array.
6203
6204 * src/autofit/afpic.c: Include `afwrtsys.h' to get the writing
6205 system specific header files.
6206 (autofit_module_class_pic_init): Include `afwrtsys.h' for
6207 initialization.
6208 * src/autofit/afpic.h (AF_WRITING_SYSTEM_CLASSES_COUNT,
6209 AF_WRITING_SYSTEM_CLASSES_REC_COUNT): Removed. Use
6210 `AF_WRITING_SYSTEM_MAX' instead.
6211
62122013-08-02 Werner Lemberg <wl@gnu.org>
6213
Werner Lemberg74a9b672013-08-02 14:53:32 +02006214 [sfnt] Fix compilation with g++.
6215
6216 * src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use
6217 cast.
6218 (Load_SBit_Png): Pacify compiler.
6219
Werner Lemberg89a529f2013-08-02 14:50:23 +020062202013-08-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6221 Werner Lemberg <wl@gnu.org>
6222
6223 [autofit] Fix `make multi'.
6224
6225 * include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY,
6226 FT_LOCAL_ARRAY_DEF): New macros.
6227
6228 * src/autofit/afglobal.c (af_writing_system_classes,
6229 af_script_classes): Use FT_LOCAL_ARRAY_DEF.
6230 * src/autofit/afglobal.h: Declare `af_writing_system_classes' and
6231 `af_script_classes'.
6232 * src/autofit/afloader.c: Include `afpic.h'.
6233
Werner Lemberge8ed2d62013-08-01 12:20:20 +020062342013-08-01 Werner Lemberg <wl@gnu.org>
6235
6236 Another round of cppcheck nitpicks.
6237
6238 The call was (from the top-level of the FreeType tree):
6239
6240 cppcheck --force \
6241 --enable=all \
6242 -I /usr/include \
6243 -I /usr/local/include \
6244 -I /usr/lib/gcc/i586-suse-linux/4.7/include \
6245 -I include \
6246 -I include/freetype \
6247 -I include/freetype/config \
6248 -I include/freetype/internal \
6249 -DFT2_BUILD_LIBRARY \
6250 . &> cppcheck.log
6251
6252 using cppcheck git commit f7e93f99.
6253
6254 Note that cppcheck still can't handle `#include FOO' (with `FOO' a
6255 macro).
6256
6257 */* Improve variable scopes.
6258 */* Remove redundant initializations which get overwritten.
6259
6260 * src/gxvalid/*: Comment out redundant code or guard it with
6261 FT_DEBUG_LEVEL_TRACE.
6262
Werner Lemberg5d6a3602013-07-30 23:17:04 +020062632013-07-30 Werner Lemberg <wl@gnu.org>
6264
Werner Lemberg72f5ff52013-07-31 22:49:29 +02006265 [autofit] Introduce `writing systems'.
6266
6267 This patch adds a new top level to the auto-hinter's script class
6268 hierarchy. It defines `writing systems' which can contain multiple
6269 scripts.
6270
6271 For example, the `latin' writing system (in file `aflatin.c') is
6272 able to support scripts like Latin, Cyrillic, Armenian, etc., which
6273 can be handled similarly.
6274
6275 Scripts are now named using four-letter OpenType tags.
6276
6277 * src/autofit/aftypes.h (AF_ScriptClassRec): Move relevant members
6278 to...
6279 (AF_WritingSystemClassRec): This new structure. It holds pointers
6280 to functions which can be shared among related scripts.
6281 (AF_WritingSystem): New enumeration.
6282 (AF_Script): Revised values using four-letter tags.
6283 (AF_DEFINE_WRITING_SYSTEM_CLASS): New macro.
6284 (AF_DEFINE_SCRIPT_CLASS): Updated.
6285
6286 * src/autofit/afglobal.c (af_writing_system_classes): New global,
6287 constant array.
6288 (af_script_classes): Updated.
6289 (af_face_globals_free): Updated.
6290 Remove assertion.
6291 (af_face_globals_get_metrics): Updated.
6292
6293 * src/autofit/afglobal.h (AF_SCRIPT_FALLBACK)
6294 [!AF_CONFIG_OPTION_CJK]: Handle this case.
6295
6296 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
6297 Updated.
6298
6299 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated;
6300 initialize structures for both writing systems and scripts.
6301 * src/autofit/afpic.h: Updated.
6302 (AF_WRITING_SYSTEM_CLASSES_GET): New macro.
6303
6304 * src/autofit/afcjk.c (af_cjk_writing_system_class): New writing
6305 system.
6306 (af_cjk_uniranges): Renamed to...
6307 (af_hani_uniranges): This.
6308 (af_cjk_script_class): Reduced and renamed to...
6309 (af_hani_script_class): This.
6310 * src/autofit/afcjk.h: Updated.
6311
6312 * src/autofit/afdummy.c (af_dummy_writing_system_class): New writing
6313 system.
6314 (af_dummy_script_class): Reduced and renamed to...
6315 (af_dflt_script_class): This.
6316 * src/autofit/afdummy.h: Updated.
6317
6318 * src/autofit/afindic.c (af_indic_writing_system_class): New writing
6319 system.
6320 (af_indic_uniranges): Renamed to...
6321 (af_deva_uniranges): This.
6322 (af_indic_script_class): Reduced and renamed to...
6323 (af_deva_script_class): This.
6324 * src/autofit/afcjk.h: Updated.
6325
6326 * src/autofit/aflatin.c (af_latin_writing_system_class): New writing
6327 system.
6328 (af_latin_uniranges): Renamed to...
6329 (af_latn_uniranges): This.
6330 (af_latin_script_class): Reduced and renamed to...
6331 (af_latn_script_class): This.
6332 * src/autofit/aflatin.h: Updated.
6333
6334 * src/autofit/aflatin2.c (af_latin2_writing_system_class): New
6335 writing system.
6336 (af_latin2_uniranges): Renamed to...
6337 (af_ltn2_uniranges): This.
6338 Synchronize ranges with `latin'.
6339 (af_latin2_script_class): Reduced and renamed to...
6340 (af_ltn2_script_class): This.
6341 * src/autofit/aflatin2.h: Updated.
6342
63432013-07-30 Werner Lemberg <wl@gnu.org>
6344
Werner Lemberg5d6a3602013-07-30 23:17:04 +02006345 [autofit] Variable renaming.
6346
6347 * src/autofit/aftypes.h (AF_ScriptMetricsRec):
6348 s/clazz/script_class/.
6349 Update all users.
6350
suzuki toshiya2b29ed62013-07-30 13:55:29 +090063512013-07-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6352
6353 Ignore libpng-config under cross-building configuration,
6354 because it will return the flags for the hosting environment.
6355
6356 * builds/unix/configure.raw: Ignore libpng-config when
6357 `cross_compiling' == yes.
6358
suzuki toshiyaf2e7f1e2013-07-30 13:32:57 +090063592013-07-30 Behdad Esfahbod <behdad@google.com>
6360
6361 Prevent division by zero by a transparent color.
6362
6363 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra):
6364 Return 0 immediately, when alpha channel is zero.
6365
Behdad Esfahbod21c32b02013-07-25 21:53:18 +020063662013-07-25 Behdad Esfahbod <behdad@google.com>
6367
6368 Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR.
6369
6370 Also disambiguate Google's color bitmap tables.
6371
6372 * include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR):
6373 New macros.
6374
6375 * include/freetype/internal/tttypes.h (TT_SbitTableType): Add
6376 TT_SBIT_TABLE_TYPE_CBLC.
6377
6378 * src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR.
6379
6380 * src/sfnt/ttsbit.c (tt_face_load_sbit,
6381 tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle
6382 TT_SBIT_TABLE_TYPE_CBLC.
6383
suzuki toshiyab4725cb2013-07-24 14:25:39 +090063842013-07-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6385
6386 [sfnt] Fix for `make multi' target.
6387
6388 * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF().
6389
Werner Lemberg6a7df622013-07-20 10:48:37 +020063902013-07-20 Werner Lemberg <wl@gnu.org>
6391
6392 * docs/INSTALL.GNU: Updated.
6393
Behdad Esfahbodff269522013-07-20 08:02:39 +020063942013-07-20 Behdad Esfahbod <behdad@google.com>
6395
6396 [sfnt] Fix `sbix' table version handling.
6397
6398 * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
6399 USHORT version numbers are to be considered as `minor'.
6400
Werner Lemberg05c14212013-07-19 23:11:23 +020064012013-07-19 Werner Lemberg <wl@gnu.org>
6402
6403 [autofit] Fix segment classification for blue zones.
6404
6405 The old code (essentially unchanged since the very beginning)
6406 incorrectly handled this configuration
6407
6408 x -o- x
6409 / \
6410 / \
6411 / \
6412 o o
6413
6414 as flat and this
6415
6416 o o
6417 / /
6418 x| x|
6419 | |
6420 o---------------o
6421
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02006422 as round. (`o' and `x' are on and off points, respectively).
Werner Lemberg05c14212013-07-19 23:11:23 +02006423
6424 This is a major change which should improve the rendering results
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02006425 enormously for many TrueType fonts, especially in the range approx.
Werner Lemberg05c14212013-07-19 23:11:23 +02006426 20-40ppem, fixing the appearance of many overshoots.
6427
6428 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Look at the
6429 first and last points of the segment, not the points right before
6430 and after.
6431
64322013-07-19 Behdad Esfahbod <behdad@google.com>
Werner Lemberg01705392013-07-18 13:13:12 +02006433
Behdad Esfahbod778a7e62013-07-19 14:28:28 +02006434 [sfnt] `sbix' fix-ups.
6435
6436 * src/sfnt/sfobjs.c (sfnt_load_face): Apple's `sbix' color bitmaps
6437 are rendered scaled and then the `glyf' outline rendered on top. We
6438 don't support that yet, so just ignore the `glyf' outline and
6439 advertise it as a bitmap-only font.
6440
6441 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
6442 [TT_SBIT_TABLE_TYPE_SBIX]: Return metrics in 26.6 units.
6443 (tt_face_load_sbix_image): Typo.
6444
64452013-07-18 Behdad Esfahbod <behdad@google.com>
6446
Werner Lemberg01705392013-07-18 13:13:12 +02006447 [sfnt] Add support for Apple's `sbix' color bitmap table.
6448
6449 * include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen
6450 fields to FT_Short and FT_UShort, respectively.
6451 (TT_SBitTableType): New enumeration.
6452 (TT_FaceRec): Add `sbit_table_type' field.
6453
6454 * include/freetype/tttags.h (TTAG_sbix): New macro.
6455
6456 * src/sfnt/pngshim.c (Load_SBit_Png): Pass a more generic
6457 FT_GlyphSlot argument instead FT_Bitmap.
6458 Add flag to control map and metrics handling.
6459 Update all users.
6460
6461 * src/sfnt/ttsbit.c: Include `ttmtx.h'.
6462 (tt_face_load_eblc): Renamed to...
6463 (tt_face_load_sbit): This.
6464 Handlic `sbix' bitmaps.
6465 (tt_face_free_eblc): Renamed to...
6466 (tt_face_load_sbit): This.
6467 Updated.
6468 (tt_face_load_strike_metrics): Handle `sbix' bitmaps.
6469 (tt_face_load_sbix_image): New function.
6470 (tt_sbit_decoder_alloc_bitmap, tt_sbit_decoder_load_image,
6471 tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
6472 tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
6473 tt_sbit_decoder_load_image, tt_sbit_decoder_load_bitmap): Don't pass
6474 and handle load flags.
6475 (tt_sbit_decoder_load_bitmap) [!FT_CONFIG_OPTION_USE_PNG]: Better
6476 handle formats 17-19.
6477 Move color to grayscale conversion to...
6478 (tt_face_load_sbit_image): Here.
6479 Handle `sbix' bitmaps.
6480
6481 * src/sfnt/pngshim.h: Updated.
6482 * src/sfnt/ttsbit.h: Updated.
6483 * src/sfnt/sfdriver.c: Updated.
6484
Werner Lemberg274207e2013-07-18 12:38:57 +020064852013-07-18 Werner Lemberg <wl@gnu.org>
6486
6487 [sfnt] Ignore invalid magic number in `head' or `bhed'.
6488
6489 Other font engines seem to ignore it also. Problem reported by
6490 Hin-Tak Leung <htl10@users.sourceforge.net>.
6491
6492 * src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if
6493 we have an invalid magic number.
6494
Werner Lemberg9a7951d2013-07-16 15:25:24 +020064952013-07-16 Werner Lemberg <wl@gnu.org>
6496
6497 [smooth] Fix segfault caused by previous commit.
6498
6499 * src/smooth/ftgrays.c (gray_set_cell): Always compute
6500 `ras.invalid'.
6501
David Turnera5f33ee2013-07-16 12:40:03 +020065022013-07-16 David Turner <digit@google.com>
6503
David Turner89929ec2013-07-16 13:36:07 +02006504 [smooth] Improve performance.
6505
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02006506 Provide a work-around for an ARM-specific performance bug in GCC.
David Turner89929ec2013-07-16 13:36:07 +02006507 This speeds up the rasterizer by more than 5%.
6508
6509 Also slightly optimize `set_gray_cell' and `gray_record_cell' (which
6510 also improves performance on other platforms by a tiny bit (<1%).
6511
6512 * src/smooth/ftgrays.c (FT_DIV_MOD): New macro.
6513 Use it where appropriate.
6514
6515 (gray_record_cell, gray_set_cell, gray_move_to,
6516 gray_convert_glyph_inner): Streamline condition handling.
6517
65182013-07-16 David Turner <digit@google.com>
6519
David Turnerf66d48e2013-07-16 13:18:00 +02006520 [truetype] Add assembler code for TT_MulFix14 and TT_DotFix14.
6521
6522 This patch provides slightly optimized versions for ARM, x86, and
6523 x86_64 CPUs if built with GCC.
6524
6525 Also remove some dead code.
6526
6527 * src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long,
6528 TT_DotFix14_long_long): New functions.
6529
65302013-07-16 David Turner <digit@google.com>
6531
David Turnerb2890882013-07-16 12:52:18 +02006532 Optimize FT_MulFix for x86_64 GCC builds.
6533
6534 This patch provides an optimized `FT_MulFix' implementation for
6535 x86_64 machines when FreeType is built with GCC, or compatible
6536 compilers like Clang.
6537
6538 Example:
6539 bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf
6540
6541 Before:
6542
6543 Load 4.863 us/op
6544 Load_Advances (Normal) 4.816 us/op
6545 Load_Advances (Fast) 0.028 us/op
6546 Render 2.753 us/op
6547 Get_Glyph 0.463 us/op
6548 Get_CBox 0.077 us/op
6549 Get_Char_Index 0.023 us/op
6550 Iterate CMap 13.898 us/op
6551 New_Face 12.368 us/op
6552 Embolden 0.028 us/op
6553 Get_BBox 0.302 us/op
6554
6555 After:
6556
6557 Load 4.617 us/op
6558 Load_Advances (Normal) 4.645 us/op
6559 Load_Advances (Fast) 0.027 us/op
6560 Render 2.789 us/op
6561 Get_Glyph 0.460 us/op
6562 Get_CBox 0.077 us/op
6563 Get_Char_Index 0.024 us/op
6564 Iterate CMap 13.403 us/op
6565 New_Face 12.278 us/op
6566 Embolden 0.028 us/op
6567 Get_BBox 0.301 us/op
6568
6569 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
6570 (FT_MulFix_x86_64): New function.
6571
65722013-07-16 David Turner <digit@google.com>
6573
David Turnera5f33ee2013-07-16 12:40:03 +02006574 Speed up ARMv7 support.
6575
6576 When building for ARMv7 with thumb2 instructions, the optimized
6577 `FT_MulFix_arm' assembly routine was not being used.
6578
6579 The reason for this is in the `ftconfig.h' header, namely:
6580
6581 - The assembly routine uses the `smull' instruction which is not
6582 available when generating Thumb-1 machine code. It is available
6583 in Thumb-2 mode, though.
6584
6585 - The header was written a long time ago before Thumb-2 became
6586 widely popular (e.g. with Android). So it simply doesn't use the
6587 assembly routine if the `__thumb__' built-in macro is defined.
6588
6589 - When compiling in Thumb-2 mode, the compiler will define both
6590 `__thumb__' and `__thumb2__'.
6591
6592 By checking for `(__thumb2__ || !__thumb__)', we ensure that the
6593 assembly routine is only avoided when generating Thumb-1 code.
6594
6595 Given that this is performance-sensitive function, this improves
6596 `ftbench' as follows on a Galaxy Nexus:
6597
6598 Before (us/op) After (us/op)
6599
6600 - loading Arial.ttf glyphs at 14 ppem [1]
6601
6602 Load 34.285 33.098
6603
6604 - same operation with the light auto-hinter [2]
6605
6606 Load 31.317 29.590
6607
6608 - same operation without hinting [3]
6609
6610 Load 6.143 5.376
6611
6612 - loading Arial.ttf advances at 14 ppem [4]
6613
6614 Load_Advances (normal) 34.216 33.016
6615 Load_Advances (fast) 0.176 0.176
6616
6617 [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
6618 [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
6619 [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
6620 [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf
6621
6622 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
6623 (FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.
6624
Werner Lemberge12fc772013-06-28 07:57:32 +020066252013-06-28 Werner Lemberg <wl@gnu.org>
6626
6627 * docs/CHANGES: Updated.
6628
Werner Lemberg680c1d42013-06-27 17:21:59 +020066292013-06-27 Werner Lemberg <wl@gnu.org>
6630
6631 * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard.
6632
Werner Lembergc7cc9eb2013-06-25 07:24:02 +020066332013-06-25 Werner Lemberg <wl@gnu.org>
6634
Werner Lembergb8850fc2013-06-26 12:22:10 +02006635 [cff] Add darkening limit to `darkening-parameters'.
6636
6637 * src/cff/cffdrivr.c (cff_property_set): Add check.
6638
66392013-06-25 Werner Lemberg <wl@gnu.org>
6640
Werner Lemberg89ca1fd2013-06-25 23:28:02 +02006641 [cff] Add `darkening-parameters' property.
6642
6643 * include/freetype/ftcffdrv.h: Document it.
6644
6645 * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
6646 `darkening-parameters' property.
6647
6648 * src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array.
6649
6650 * src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams'
6651 argument and use it.
6652 Update all callers.
6653
6654 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy
6655 `darken_params' values.
6656
6657 * src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array.
6658
6659 * src/cff/cffobjs.c (cff_driver_init): Set default values for
6660 `darken_params'.
6661
66622013-06-25 Werner Lemberg <wl@gnu.org>
6663
Werner Lembergfad93262013-06-25 10:41:37 +02006664 [docmaker] Code shuffling.
6665
6666 * src/tools/docmaker/tohtml.py (re_url): Move regexp...
6667 * src/tools/docmaker/sources.py: ... to this file.
6668
66692013-06-25 Werner Lemberg <wl@gnu.org>
6670
Werner Lemberg8bdc4072013-06-25 10:20:53 +02006671 [docmaker] Remove unused functions.
6672
6673 * src/tools/docmaker/content.py (DocMarkup.get_start,
6674 DocBlock.get_markup_name): Removed.
6675 * src/tools/docmaker/tohtml.py (html_quote0, dump_html_code,
6676 HtmlFormatter.make_html_words): Removed.
6677
66782013-06-25 Werner Lemberg <wl@gnu.org>
6679
Werner Lembergffb8b472013-06-25 09:09:30 +02006680 * builds/freetype.mk (dll): Remove target.
6681
6682 Problem reported by Jörg Günnewig <joerg.guennewig@googlemail.com>.
6683
66842013-06-25 Werner Lemberg <wl@gnu.org>
6685
Werner Lembergc7cc9eb2013-06-25 07:24:02 +02006686 [docmaker] Recognise URLs.
6687
6688 * src/tools/docmaker/tohtml.py (re_url): New regular expression.
6689 (make_html_para): Use it.
6690
Werner Lemberg25b7da52013-06-19 10:23:36 +020066912013-06-19 Werner Lemberg <wl@gnu.org>
6692
Werner Lembergfe4f5712013-06-19 23:27:47 +02006693 * Version 2.5.0.1 released.
6694 ===========================
6695
6696
6697 Tag sources with `VER-2-5-0-1'.
6698
6699 * include/freetype/config/ftoption.h: Undefine
6700 CFF_CONFIG_OPTION_OLD_ENGINE.
6701 * devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE.
6702
67032013-06-19 Werner Lemberg <wl@gnu.org>
6704
Werner Lemberg609f0ca2013-06-19 14:41:47 +02006705 * builds/unix/install.mk (install): Don't create `cache' directory.
6706
6707 Found by Peter Breitenlohner <peb@mppmu.mpg.de>.
6708
67092013-06-19 Werner Lemberg <wl@gnu.org>
6710
Werner Lemberg25b7da52013-06-19 10:23:36 +02006711 * Version 2.5.0 released.
6712 =========================
6713
6714
6715 Tag sources with `VER-2-5-0'.
6716
6717 * docs/VERSION.DLL: Update documentation and bump version number to
6718 2.5.0.
6719
6720 * README, Jamfile (RefDoc),
6721 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
6722 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
6723 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
6724 builds/win32/visualc/freetype.dsp,
6725 builds/win32/visualc/freetype.vcproj,
6726 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
6727 builds/win32/visualce/freetype.vcproj,
6728 builds/win32/visualce/index.html,
6729 builds/wince/vc2005-ce/freetype.vcproj,
6730 builds/wince/vc2005-ce/index.html,
6731 builds/wince/vc2008-ce/freetype.vcproj,
6732 builds/wince/vc2008-ce/index.html: s/2.4.12/2.5.0/, s/2412/250/.
6733
6734 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 5.
6735 (FREETYPE_PATCH): Set to 0.
6736
6737 * builds/unix/configure.raw (version_info): Set to 16:2:10.
6738
6739 * src/base/ftobjs.c (FT_Open_Face): Pacify compiler.
6740 * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto.
6741
Werner Lembergf56691a2013-06-18 10:17:48 +020067422013-06-18 Werner Lemberg <wl@gnu.org>
6743
6744 Fix Savannah bug #39269.
6745
6746 * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in
6747 case of reacollocation failures.
6748
Andrew Church67cf7a82013-06-18 09:35:34 +020067492013-06-18 Andrew Church <achurch+savannah@achurch.org>
6750
6751 Fix Savannah bug #39266.
6752
6753 If memory allocations fail at certain points while opening a font,
6754 FreeType can either crash due to a NULL dereference or leak memory.
6755
6756 * include/freetype/internal/ftobjs.c (FT_Face_InternalRec,
6757 FT_LibraryRec): Make `refcount' a signed integer. If, for example,
6758 FT_Open_Face() fails in a memory allocation before the face's
6759 reference count is set to 1, a subsequent `FT_Done_Library' call
6760 would otherwise loop over `FT_Done_Face' 2^32 times before freeing
6761 the face.
6762
6763 * src/base/ftobjs.c (open_face): Initialize `stream' and friends
6764 earlier.
6765 (FT_Open_Face) <Fail>: Behave correctly if `node' is NULL.
6766 (FT_Destroy_Module) <Fail>: Check that `renderer_clazz' is valid.
6767
67682013-06-14 Werner Lemberg <wl@gnu.org>
Werner Lembergd7e34442013-06-14 18:33:39 +02006769
6770 * src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC.
6771
Dave Arnoldcb23a622013-06-13 07:46:32 +020067722013-06-06 Dave Arnold <darnold@adobe.com>
6773 Werner Lemberg <wl@gnu.org>
6774
6775 [cff] Add code to Adobe's engine to handle ppem > 2000.
6776
6777 * src/cff/cffgload.c (cff_slot_load): If we get
6778 FT_Err_Glyph_Too_Big, retry unhinted and scale up later on.
6779
Andrew Church67cf7a82013-06-18 09:35:34 +020067802013-06-12 Werner Lemberg <wl@gnu.org>
Werner Lemberg25b6e602013-06-12 11:06:34 +02006781
Werner Lemberg294ce112013-06-12 23:33:11 +02006782 Another try on pragmas.
6783
6784 * include/freetype/internal/ftdebug.h: Move pragmas to...
6785 * include/freetype/internal/internal.h: ... this file since it gets
6786 included by all source files.
6787 * include/freetype/internal/ftserv.h: Remove pragma which has no
6788 effect.
6789
Dave Arnoldcb23a622013-06-13 07:46:32 +020067902013-06-12 Werner Lemberg <wl@gnu.org>
Werner Lemberg294ce112013-06-12 23:33:11 +02006791
Werner Lemberg25b6e602013-06-12 11:06:34 +02006792 * include/freetype/internal/ftdebug.h: Disable MSVC warning C4127.
6793
6794 This partially undoes commit 3f6e0e0c.
6795
Werner Lembergc06889e2013-06-12 10:58:06 +020067962013-06-12 Werner Lemberg <wl@gnu.org>
6797
6798 More compiler warning fixes.
6799
6800 */*: Use cast to `FT_Bool' (or `Bool') where appropriate.
6801
Werner Lemberg99e60d82013-06-10 01:44:37 +020068022013-06-10 Werner Lemberg <wl@gnu.org>
6803
Werner Lemberg5e094c62013-06-10 14:59:21 +02006804 [truetype] Improve handling of broken sbit advance widths.
6805
6806 * src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled)
6807 `linearHoriAdvance' if the sbit's `horiAdvance' value is zero.
6808
6809 Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem.
6810
68112013-06-10 Werner Lemberg <wl@gnu.org>
6812
Werner Lemberga25ecfd2013-06-10 12:57:16 +02006813 [sfnt] Improve embedded bitmap tracing.
6814
6815 * src/base/ftobjs.c (FT_Request_Size): Move trace message regarding
6816 bitmap strike match to...
6817 (FT_Match_Size): This function.
6818
6819 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics,
6820 tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
6821 tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
6822 tt_sbit_decoder_load_image): Decorate with tracing messages.
6823
68242013-06-10 Werner Lemberg <wl@gnu.org>
6825
Werner Lemberg99e60d82013-06-10 01:44:37 +02006826 Fix Savannah bug #39160.
6827
6828 * src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too
6829 for the degenerate case.
6830
Werner Lemberg2ba871b2013-06-09 08:20:54 +020068312013-06-09 David Turner <digit@google.com>
6832
6833 * src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush.
6834
6835 This code, present since eight(!) years in the unused `CACHE'
6836 branch, has been forgotten to apply to the master branch. It's
6837 really amazing that noone has ever complained since
6838 `FTC_Manager_Reset' is pretty useless without flushing the cache.
6839
Werner Lemberg85fd84b2013-06-07 17:10:21 +020068402013-06-07 Werner Lemberg <wl@gnu.org>
6841
Werner Lemberg3f6e0e02013-06-07 18:10:40 +02006842 Add and improve pragmas for MSVC compiler.
6843
6844 * include/freetype/internal/ftdebug.h: Remove pragmas.
6845 * include/freetype/internal/ftserv.h: Use push and pop for pragmas.
6846 * include/freetype/internal/ftvalid.h: Handle warning C4324.
6847 * src/base/ftobjs.c: Use push and pop for pragmas.
6848 * src/gzip/ftgzip.c: Handle warning C4244.
6849
68502013-06-07 Werner Lemberg <wl@gnu.org>
6851
Werner Lemberg85fd84b2013-06-07 17:10:21 +02006852 [cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/.
6853
6854 * src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it.
6855
Werner Lemberg4447b2c2013-06-06 21:28:36 +020068562013-06-06 Dave Arnold <darnold@adobe.com>
6857
6858 [cff] Add early exit feature for width-only calls.
6859
6860 This is for `FT_Get_Advance'.
6861
6862 There are 7 places where the spec says the width can be defined:
6863
6864 hstem/hstemhm
6865 vstem/vstemhm
6866 cntrmask/hintmask
6867 hmoveto
6868 vmoveto
6869 rmoveto
6870 endchar
6871
6872 * src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls,
6873 if possible.
6874
6875 (cf2_interpT2CharString) <cf2_cmdHSTEM>, <cf2_cmdVSTEM>,
6876 <cf2_cmdVMOVETO>, <cf2_cmdENDCHAR>, <cf2_cmdHINTMASK>,
6877 <cf2_cmdRMOVETO>, <cf2_cmdHMOVETO>: Exit early for width-only calls.
6878
Werner Lembergbadf3172013-06-06 09:16:38 +020068792013-06-06 Werner Lemberg <wl@gnu.org>
6880
6881 Next round of compiler fixes.
6882
6883 * builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init):
6884 Add proper cast.
6885
6886 * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix
6887 cast.
6888 * include/freetype/internal/ftstream.h: Decorate stream and frame
6889 macros with `FT_Long' and `FT_ULong' as appropriate.
6890
6891 * src/base/ftrfork.c (raccess_guess_darwin_hfsplus,
6892 raccess_guess_darwin_newvfs): Use cast.
6893
6894 * src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast.
6895
6896 * src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast.
6897 * src/cache/ftcmanag.h (FTC_ManagerRec): Ditto.
6898
6899 * src/cff/cf2arrst.c (cf2_arrstack_setNum_Elements): Use cast.
6900 * src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto.
6901 * src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto.
6902
6903 * src/cid/cidparse.c (cid_parser_new): Use cast.
6904
6905 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast.
6906
6907 * src/psaux/psobjs.c (reallocate_t1_table): Fix argument type.
6908
6909 * src/raster/ftraster.c (ft_black_reset): Use cast.
6910
6911 * src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast.
6912 (ALL_POINTS): Fix cast.
6913
6914 * src/type1/t1driver.c (t1_ps_get_font_value): Add casts.
6915 * src/type1/t1parse.c (T1_Get_Private_Dict): Add cast.
6916
Dave Arnoldc3782492013-06-05 19:57:55 +020069172013-06-05 Dave Arnold <darnold@adobe.com>
6918
6919 Fix more MSVC Win32 compiler warnings.
6920
6921 * src/base/ftobjs.c: Fix typo in MS pragma.
6922
6923 * src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
6924 `lineno' is only used in debug mode.
6925
6926 * src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in
6927 debug mode.
6928
Werner Lemberg45392b72013-06-05 13:43:20 +020069292013-06-05 Werner Lemberg <wl@gnu.org>
6930
6931 Fix compiler warnings.
6932
6933 * include/freetype/internal/ftmemory.h: Decorate memory allocation
6934 macros with `FT_Long' where appropriate.
6935 Remove duplicate of FT_MEM_QRENEW_ARRAY definition.
6936
6937 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
6938 cast.
6939
6940 * src/base/ftobjs.c: Add warning disabling pragma for MSVC while
6941 including `md5.c'.
6942
6943 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdESC>: Add
6944 cast.
6945
6946 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts.
6947 (tt_sbit_decoder_load_bitmap): Beautification.
6948
6949 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize
6950 variables (earlier).
6951
6952 * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler.
6953
6954 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants
6955 where appropriate.
6956
6957 * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
6958
Werner Lembergdc624ca2013-06-04 10:30:48 +020069592013-06-04 Werner Lemberg <wl@gnu.org>
6960
Werner Lembergd9634982013-06-04 20:18:57 +02006961 * src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'.
6962
6963 Problem reported by Ingmar Sittl <ingmar.sittl@elektrobit.com>.
6964
69652013-06-04 Werner Lemberg <wl@gnu.org>
6966
Werner Lembergdc624ca2013-06-04 10:30:48 +02006967 Apply fixes for cppcheck nitpicks.
6968
6969 http://cppcheck.sourceforge.net/
6970
Werner Lemberg8d8508e2013-06-04 13:09:01 +02006971 The call was (from the top-level of the FreeType tree):
6972
6973 cppcheck --force \
6974 --enable=all \
6975 -I include \
6976 -I include/freetype/ \
6977 -I include/freetype/config/ \
6978 -I include/freetype/internal/ \
6979 . &> cppcheck.log
6980
Werner Lembergdc624ca2013-06-04 10:30:48 +02006981 Note that the current version heavily chokes on FreeType, delivering
Werner Lemberg8d8508e2013-06-04 13:09:01 +02006982 many wrong results. I will report those issues to the cppcheck team
Werner Lembergdc624ca2013-06-04 10:30:48 +02006983 so that a newer version gives improved results hopefully.
6984
6985 */* Improve variable scopes.
6986 */* Remove redundant initializations which get overwritten.
6987
Werner Lemberge8ed2d62013-08-01 12:20:20 +02006988 * src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable):
Werner Lembergdc624ca2013-06-04 10:30:48 +02006989 Remove unused variable.
6990
6991 * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero.
6992
6993 * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate):
6994 Remove functionless code.
6995
6996 * src/tools/ftrandom.c (main): Fix memory leak.
6997
Werner Lemberg2429dc32013-06-03 12:41:58 +020069982013-06-03 Werner Lemberg <wl@gnu.org>
6999
7000 Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option.
7001
7002 This controls whether the old FreeType CFF engine gets compiled into
7003 FreeType. It is now disabled by default.
7004
7005 * devel/ftoption.h, include/freetype/config/ftoption.h
7006 (CFF_CONFIG_OPTION_OLD_ENGINE): New macro.
7007
7008 * src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c
7009 (CFF_Operator, cff_argument_counts, cff_builder_add_point,
7010 cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load),
7011 src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use
7012 CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code.
7013
7014 * docs/CHANGES: Updated.
7015
Werner Lembergf9cceeb2013-06-02 23:38:13 +020070162013-06-02 Werner Lemberg <wl@gnu.org>
7017
7018 Fix PNG library handling.
7019
7020 * builds/unix/configure.raw: Don't use LIBPNG_LIBS but
7021 LIBPNG_LDFLAGS.
7022
Behdad Esfahbod760d3422013-05-29 11:36:18 +020070232013-05-23 Behdad Esfahbod <behdad@google.com>
7024
7025 Add support for color embedded bitmaps (eg. color emoji).
7026
7027 A new load flag, FT_LOAD_COLOR, makes FreeType load color
7028 embedded-bitmaps, following this draft specification
7029
7030 https://color-emoji.googlecode.com/git/specification/v1.html
7031
7032 which defines two new SFNT tables, `CBDT' and `CBLC' (named and
7033 modeled after `EBDT' and `EBLC', respectively). The color bitmaps
7034 are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA
7035 pre-multiplied sRGB images. If PNG support is available, PNG color
7036 images as defined in the same proposed specification are supported
7037 also.
7038
7039 Note that color bitmaps are converted to grayscale if client didn't
7040 ask for color.
7041
7042 * builds/unix/configure.raw: Search for libpng.
7043 Add `--without-png' option.
7044
7045 * devel/ftoption.h, include/freetype/config/ftoption.h
7046 (FT_CONFIG_OPTION_USE_PNG): New macro.
7047
7048 * include/freetype/freetype.h (FT_LOAD_COLOR): New load flag.
7049
7050 * include/freetype/ftimage.h (FT_Pixel_Mode): Add
7051 `FT_PIXEL_MODE_BGRA'.
7052
7053 * include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags.
7054
7055 * src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated.
7056 (ft_gray_for_premultiplied_srgb_bgra): New function.
7057 (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA.
7058
7059 * src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files.
7060
7061 * src/sfnt/sfnt.c: Include `pngshim.c'.
7062
7063 * src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h'
7064 (tt_face_load_eblc): Load `CBLC'.
7065 (tt_sbit_decoder_init): Load `CBDT'.
7066 (tt_sbit_decoder_alloc_bitmap): Pass load flags to select between
7067 color and grayscale bitmaps.
7068 Set `num_grays'. This is used by `ftview' to choose the blending
7069 algorithm.
7070 (tt_sbit_decoder_load_byte_aligned,
7071 tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound,
7072 tt_sbit_decoder_load_image): Pass load flag.
7073 s/write/pwrite/.
7074 Don't call `tt_sbit_decoder_alloc_bitmap'.
7075 Updated.
7076 (tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function.
7077 (tt_sbit_decoder_load_bitmap): Pass load flag.
7078 Handle new glyph formats 17, 18, and 19.
7079 Call `tt_sbit_decoder_alloc_bitmap'.
7080 Flatten color bitmaps if necessary.
7081 (tt_face_load_sbit_image): Updated.
7082
7083 * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'.
7084
7085 * docs/CHANGES: Updated.
7086
Guenter41e44802013-05-24 11:38:09 +020070872013-05-24 Guenter <info@gknw.net>
7088
7089 Apply Savannah patch #8055.
7090
7091 Make `apinames' create an import file for NetWare.
7092
7093 * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2.
7094 (OutputFormat): Add `OUTPUT_NETWARE_IMP'.
7095 (names_dump): Handle it.
7096 (usage): Updated.
7097 (main): Handle new command line flag `-wN'.
7098
Behdad Esfahbod2d6e1fb2013-05-23 08:01:20 +020070992013-05-23 Behdad Esfahbod <behdad@behdad.org>
7100
7101 Compilation fix.
7102
7103 * src/truetype/ttinterp.c (TT_RunIns)
7104 [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work.
7105
Infinality18f35ed2013-05-21 20:51:15 -050071062013-05-22 Infinality <infinality@infinality.net>
7107
Infinality3c783c12013-05-21 21:03:00 -05007108 [truetype] Formatting and an additional subpixel tweak.
7109
7110 * src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix.
7111 * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules):
7112 Revert previous modification for Verdana clones.
7113
71142013-05-22 Infinality <infinality@infinality.net>
7115
Infinality18f35ed2013-05-21 20:51:15 -05007116 [truetype] Adjust subpixel zp2 moves and tweak rules.
7117
7118 These modifications fix thin diagonal stems in some legacy fonts.
7119
7120 * src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro.
7121 (Move_Zp2_Point): Don't always disable x moves for subpixel rendering.
7122 (Ins_SHP): Disable x moves here for subpixel rendering.
7123 (Ins_SHPIX): Only disable x moves in compatibility mode.
7124 Split out zp2 move reversals and reorder conditional respectively.
7125
7126 * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight.
7127 Only adjust Verdana clones for 17 ppem.
7128 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New.
7129 (ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'.
7130
Infinality63bfa832013-05-20 07:38:21 +020071312013-05-20 Infinality <infinality@infinality.net>
7132
7133 [truetype] Simplify and improve subpixel function detection.
7134
7135 Some small enhancements have allowed the removal of many macros and
7136 the simplification of existing rules in `ttsubpix.c'.
7137
7138 * src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX,
7139 SPH_TWEAK_ALLOW_X_MOVE_ZP2,
7140 SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES,
7141 SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed.
7142 (SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro.
7143
7144 * src/truetype/ttsubpix.c: Updated affected rules.
7145
7146 * src/truetype/ttinterp.c (Direct_Move_X): Updated.
7147 (INS_FDEF): Add additional function detection.
7148 (INS_ENDF): Set runtime flag.
7149 (Ins_CALL): Skip the call under certain conditions.
7150 Remove bad code.
7151 (Ins_LOOPCALL): Skip the call under certain conditions.
7152 Remove bad code.
7153 (Move_Zp2_Point): Updated.
7154 (Ins_SHPIX): Updated.
7155 Skip the move under some situations.
7156 (Ins_MIAP): Improve conditions.
7157 (Ins_MIRP): Updated.
7158 (Ins_DELTAP): Skip move under certain conditions.
7159 Simplify conditions.
7160 (TT_RunIns): Updated.
7161 Add code to handle new function detection.
7162 Trace messages.
7163
Werner Lembergfd664692013-05-17 17:40:27 +020071642013-05-17 Werner Lemberg <wl@gnu.org>
7165
7166 Update more FT_Err_XXX macros using FT_ERR and FT_THROW;
7167
7168 * builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c,
7169 builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it.
7170
Werner Lembergf04951a2013-05-17 13:51:07 +020071712013-05-15 Werner Lemberg <wl@gnu.org>
7172
7173 [truetype] Add `interpreter-version' property.
7174
7175 This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable
7176 at runtime.
7177
Werner Lemberg27991332013-05-17 14:00:26 +02007178 * include/freetype/ftttdrv.h: New file.
7179
7180 * include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New
7181 macro.
7182
Werner Lembergf04951a2013-05-17 13:51:07 +02007183 * src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H.
7184 (tt_property_set, tt_property_get): Fill templates.
7185
7186 * src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version'
7187 member.
7188 Remove unused `extension_component' member.
7189
7190 * src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H.
7191 (tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph,
7192 compute_glyph_metrics, tt_loader_init): Use `interpreter_version'.
7193
7194 * src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H.
7195 (SUBPIXEL_HINTING): New macro to check `interpreter_version' flag.
7196 Update all affected functions to use it.
7197 Use TT_INTERPRETER_VERSION_XXX where appropriate.
7198
7199 * src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H.
7200 (tt_driver_init): Initialize `interpreter_version'.
7201
7202 * src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H.
7203 Use TT_INTERPRETER_VERSION_XXX where appropriate.
7204
Werner Lemberg7441dd82013-05-13 09:12:46 +020072052013-05-13 Werner Lemberg <wl@gnu.org>
7206
Werner Lemberg6650be72013-05-13 10:05:29 +02007207 [truetype] Avoid empty source file.
7208
7209 * src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]:
7210 Provide dummy typedef.
7211
72122013-05-13 Werner Lemberg <wl@gnu.org>
7213
Werner Lemberg7441dd82013-05-13 09:12:46 +02007214 * src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable.
7215
7216 Fix suggested by Vaibhav Nagarnaik <vnagarnaik@gmail.com>.
7217
Brian Nixon8d6025c2013-05-13 09:06:42 +020072182013-05-13 Brian Nixon <bnixon@yahoo.com>
7219
7220 Fix Savannah bug #38970.
7221
7222 * src/base/ftdebug.c, builds/win32/ftdebug.c,
7223 builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c
7224 (ft_debug_init): Don't read past the environment variable FT2_DEBUG.
7225
Werner Lembergd51ac9c2013-05-12 06:00:27 +020072262013-05-12 Werner Lemberg <wl@gnu.org>
7227
Werner Lembergcd888752013-05-12 15:08:57 +02007228 [truetype] Add framework for TrueType properties.
7229
7230 * src/truetype/ttdrivr.c: Include FT_SERVICE_PROPERTIES_H.
7231 (tt_property_set, tt_property_get): New functions, still empty.
7232 Define `tt_service_properties' service.
7233 Update `tt_services'.
7234
7235 * src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H.
7236 (TT_SERVICE_PROPERTIES_GET): New macro.
7237 (TTModulePIC): Add `tt_service_properties'.
7238
72392013-05-12 Werner Lemberg <wl@gnu.org>
7240
Werner Lembergb112fa42013-05-12 07:29:04 +02007241 Fix Savannah bug #38967.
7242
7243 * src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast.
7244
72452013-05-12 Werner Lemberg <wl@gnu.org>
7246
Werner Lembergcbcf33d2013-05-12 07:27:48 +02007247 Introduce unsigned 64bit type (if available).
7248
7249 * include/freetype/config/ftconfig.h: Define FT_UINT64 if available.
7250 [FT_LONG64]: Provide FT_UInt64.
7251
7252 * builds/unix/ftconfig.in: Synchronized.
7253
72542013-05-12 Werner Lemberg <wl@gnu.org>
7255
Werner Lembergd51ac9c2013-05-12 06:00:27 +02007256 Fix Savannah bug #38968.
7257
7258 * include/freetype/ftmodapi.h: Add `FT_EXPORT' to
7259 FT_Property_{Set,Get}.
7260 * src/base/ftobjs.c: Add `FT_EXPORT_DEF' to
7261 FT_Property_{Set,Get}.
7262
Werner Lembergf6aa0892013-05-10 07:58:47 +020072632013-05-10 Werner Lemberg <wl@gnu.org>
7264
Werner Lembergea2b4752013-05-10 08:04:33 +02007265 [sfnt] Clean up bitmap code.
7266
7267 * src/sfnt/ttsbit.c: Deleted.
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02007268 * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'.
Werner Lembergea2b4752013-05-10 08:04:33 +02007269 * rules.mk (SFNT_DRV_H): Updated.
7270
72712013-05-10 Werner Lemberg <wl@gnu.org>
7272
Werner Lembergf6aa0892013-05-10 07:58:47 +02007273 */* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code.
7274
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00007275----------------------------------------------------------------------------
7276
Werner Lembergf57fc592015-01-17 20:41:43 +01007277Copyright 2013-2015 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00007278David Turner, Robert Wilhelm, and Werner Lemberg.
7279
7280This file is part of the FreeType project, and may only be used, modified,
7281and distributed under the terms of the FreeType project license,
7282LICENSE.TXT. By continuing to use, modify, or distribute this file you
7283indicate that you have read the license and understand and accept it
7284fully.
7285
7286
7287Local Variables:
7288version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00007289coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00007290End: