blob: d4c149d9d2f99de49543a49bde8a5856aed9fa45 [file] [log] [blame]
Werner Lemberg7a5fc2f2013-12-17 13:29:53 +010012013-12-17 Werner Lemberg <wl@gnu.org>
2
3 [autofit] s/AF_Script_/AF_WritingSystem_/ where appropriate.
4
Infinality8bb09b02013-12-11 09:01:13 +010052013-12-11 Infinality <infinality@infinality.net>
6
7 [truetype] Simplify logic of rendering modes.
8
9 This patch unifies the subpixel and non-subpixel cases.
10
11 * src/truetype/ttinterp.h (TT_ExecContextRec): Remove
12 `grayscale_hinting'; all code should refer to `grayscale' instead.
13 Remove unused `native_hinting' member.
14 Rename `subpixel_hinting' member to `subpixel.
15
16 * src/truetype/ttgload.c (TT_LOADER_SET_PP): Updated.
17 (tt_loader_init): Updated.
18
19 * src/truetype/ttinterp.c (Ins_GETINFO): Simplify.
20 Updated.
21
Werner Lemberge9d95aa2013-12-11 07:48:51 +0100222013-12-11 Werner Lemberg <wl@gnu.org>
23
24 [documentation] Add section how to include FreeType header files.
25 Problem reported by David Kastrup <dak@gnu.org>.
26
27 Surprisingly, a description how to do that was completely missing in
28 the API reference.
29
30 * include/freetype.h, include/ftchapters.h: New documentation
31 section `header_inclusion'.
32
Werner Lemberg05c786d2013-12-10 08:38:57 +0100332013-12-10 Werner Lemberg <wl@gnu.org>
34
Werner Lemberg91932592013-12-10 13:24:07 +010035 [autofit] s/DFLT/NONE/, s/dflt/none/.
36
372013-12-10 Werner Lemberg <wl@gnu.org>
38
Werner Lemberg45244f82013-12-10 13:18:11 +010039 [autofit] s/AF_SCRIPT_NONE/AF_SCRIPT_UNASSIGNED/.
40
412013-12-10 Werner Lemberg <wl@gnu.org>
42
Werner Lemberg69d1a362013-12-10 10:12:27 +010043 [truetype] Fix scaling of vertical phantom points.
44
45 * src/truetype/ttgload.c (load_truetype_glyph): Scale pp3.x and
46 pp4.x also.
47
482013-12-10 Werner Lemberg <wl@gnu.org>
49
Werner Lemberg05c786d2013-12-10 08:38:57 +010050 [truetype] Fix positioning of composite glyphs.
51 Problem reported by Nigel Tao <nigeltao@golang.org>.
52
53 * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts
54 the glyph (component) by a fractional value computed from the LSB
55 phantom point. This is wrong, since the horizontal phantom points
56 get rounded horizontally later on.
57
Werner Lembergdd8050a2013-12-08 23:14:46 +0100582013-12-08 Werner Lemberg <wl@gnu.org>
59
60 * Version 2.5.2 released.
61 =========================
62
63
64 Tag sources with `VER-2-5-2'.
65
66 * docs/VERSION.DLL: Update documentation and bump version number to
67 2.5.2.
68
69 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
70 builds/windows/vc2005/index.html,
71 builds/windows/vc2008/freetype.vcproj,
72 builds/windows/vc2008/index.html,
73 builds/windows/vc2010/freetype.vcxproj,
74 builds/windows/vc2010/index.html,
75 builds/windows/visualc/freetype.dsp,
76 builds/windows/visualc/freetype.vcproj,
77 builds/windows/visualc/index.html,
78 builds/windows/visualce/freetype.dsp,
79 builds/windows/visualce/freetype.vcproj,
80 builds/windows/visualce/index.html,
81 builds/wince/vc2005-ce/freetype.vcproj,
82 builds/wince/vc2005-ce/index.html,
83 builds/wince/vc2008-ce/freetype.vcproj,
84 builds/wince/vc2008-ce/index.html: s/2.5.1/2.5.2/, s/251/252/.
85
86 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
87
88 * builds/unix/configure.raw (version_info): Set to 17:1:11.
89 * docs/CHANGES: Updated.
90
Werner Lemberg98d185c2013-12-07 09:26:55 +0100912013-12-07 Werner Lemberg <wl@gnu.org>
92
93 [truetype] Next round in phantom point handling.
94
95 Greg Hitchcock provided very interesting insights into the
96 complicated history of the horizontal positions of the TSB and BSB
97 phantom points.
98
99 * src/truetype/ttgload.c (TT_LOADER_SET_PP)
100 [TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Use `subpixel_hinting' and
101 `grayscale_hinting' flags as conditionals for the x position of TSB
102 and BSB.
103
Werner Lembergfcdb7842013-12-05 15:53:27 +01001042013-12-05 Werner Lemberg <wl@gnu.org>
105
106 * builds/freetype.mk (FT_CC): Removed. Unused.
107
Werner Lemberg64b395c2013-12-04 06:18:56 +01001082013-12-04 Werner Lemberg <wl@gnu.org>
109
110 [sfnt] Fix handling of embedded bitmap strikes.
111
112 This corrects the commit from 2013-11-21. Problem reported by
113 Andrey Panov <panov@canopus.iacp.dvo.ru>.
114
115 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to
116 detect excessive bytes for bit-aligned bitmaps.
117
Werner Lembergbdd5e752013-12-03 06:57:02 +01001182013-12-03 Werner Lemberg <wl@gnu.org>
119
Werner Lembergc2b47532013-12-03 07:01:57 +0100120 [truetype] Remove dead code.
121
122 Reported by Nigel Tao <nigeltao@golang.org>.
123
124 * include/internal/tttypes.h (TT_LoaderRec): Remove unused
125 `preserve_pps' field.
126 * src/truetype/ttgload.c (TT_Hint_Glyph): Updated.
127
1282013-12-03 Werner Lemberg <wl@gnu.org>
129
Werner Lembergbdd5e752013-12-03 06:57:02 +0100130 [truetype] Fix phantom point handling.
131
132 This is a further improvement to the changes from 2013-11-06.
133
134 * src/truetype/ttgload.c (TT_Hint_Glyph): Horizontal phantom points
135 are rounded horizontally, vertical ones are rounded vertically.
136 (TT_LOADER_SET_PP): The horizontal position of vertical phantom
137 points in pre-ClearType mode is zero, as shown in the OpenType
138 specification.
139
Werner Lemberg64872a52013-12-02 07:51:17 +01001402013-12-02 Werner Lemberg <wl@gnu.org>
141
142 [truetype] Fix change from 2013-11-20.
143
144 Problem reported by Akira Kakuto <kakuto@fuk.kindai.ac.jp>.
145
146 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Protect call to
147 `Update_Max' with both a TT_USE_BYTECODE_INTERPRETER guard and a
148 `IS_HINTED' clause.
149 Also remove redundant check using `maxSizeOfInstructions' – in
150 simple glyphs, the bytecode data comes before the outline data, and
151 a validity test for this is already present.
152
Werner Lemberg52166ab2013-11-27 10:10:16 +01001532013-11-27 Werner Lemberg <wl@gnu.org>
154
155 [autofit] Fix use of dumping functions in `ftgrid' demo program.
156
157 * src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro.
158 (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
159 af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to
160 handle output to stdout.
161 Use AF_DUMP.
162 (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
163 af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed.
164
Werner Lemberg3aee4292013-11-25 00:28:11 +01001652013-11-25 Werner Lemberg <wl@gnu.org>
166
167 * Version 2.5.1 released.
168 =========================
169
170
171 Tag sources with `VER-2-5-1'.
172
173 * docs/VERSION.DLL: Update documentation and bump version number to
174 2.5.1.
175
176 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
177 builds/windows/vc2005/index.html,
178 builds/windows/vc2008/freetype.vcproj,
179 builds/windows/vc2008/index.html,
180 builds/windows/vc2010/freetype.vcxproj,
181 builds/windows/vc2010/index.html,
182 builds/windows/visualc/freetype.dsp,
183 builds/windows/visualc/freetype.vcproj,
184 builds/windows/visualc/index.html,
185 builds/windows/visualce/freetype.dsp,
186 builds/windows/visualce/freetype.vcproj,
187 builds/windows/visualce/index.html,
188 builds/wince/vc2005-ce/freetype.vcproj,
189 builds/wince/vc2005-ce/index.html,
190 builds/wince/vc2008-ce/freetype.vcproj,
191 builds/wince/vc2008-ce/index.html: s/2.5.0/2.5.1/, s/250/251/.
192
193 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
194
195 * builds/unix/configure.raw (version_info): Set to 17:0:11.
Werner Lembergdd8050a2013-12-08 23:14:46 +0100196 * CMakeLists.txt (VERSION_PATCH): Set to 2.
Werner Lemberg3aee4292013-11-25 00:28:11 +0100197 * docs/CHANGES, docs/release: Updated.
198
Werner Lemberg9326caf2013-11-23 23:59:25 +01001992013-11-23 Werner Lemberg <wl@gnu.org>
200
Werner Lemberg063ee6b2013-11-24 00:19:17 +0100201 [truetype]: Add tricky font names `hkscsiic.ttf' and `iicore.ttf'.
202
203 * src/truetype/ttobjs.c (TRICK_NAMES_MAX_CHARACTERS,
204 TRICK_NAMES_COUNT): Updated.
205 (trick_names): Add family name for the two fonts.
206
2072013-11-23 Werner Lemberg <wl@gnu.org>
208
Werner Lemberg9326caf2013-11-23 23:59:25 +0100209 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo.
210
Werner Lemberg427b1762013-11-21 13:10:56 +01002112013-11-21 Werner Lemberg <wl@gnu.org>
212
Werner Lemberg9326caf2013-11-23 23:59:25 +0100213 [sfnt] Typo.
Werner Lemberg8af2a1c2013-11-21 13:13:12 +0100214
215 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
216
217 * src/sfnt/sfobjs.c (sfnt_load_face): Return correct `bsize->width'
218 value if the font lacks an `OS/2' table.
219
2202013-11-21 Werner Lemberg <wl@gnu.org>
221
Werner Lemberg64b395c2013-12-04 06:18:56 +0100222 [sfnt] Improve handling of buggy embedded bitmap strikes.
Werner Lemberg427b1762013-11-21 13:10:56 +0100223
224 We are now able to successfully load `AppleMyoungJo.ttf'.
225 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
226
227 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph
228 format.
229
Werner Lemberg28626862013-11-20 21:06:18 +01002302013-11-20 Werner Lemberg <wl@gnu.org>
231
232 [truetype] Don't trust `maxp's `maxSizeOfInstructions'.
233
234 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>; see
235
236 http://lists.nongnu.org/archive/html/freetype-devel/2013-08/msg00005.html
237
238 for details.
239
240 * src/base/ftobjs.c (FT_Load_Glyph): Check size of `fpgm' and `prep'
241 tables also for setting `autohint'.
242
243 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use code from
244 `TT_Process_Composite_Glyph' for handling unreliable values of
245 `maxSizeOfInstructions'.
246
Werner Lembergbc25de62013-11-16 07:52:20 +01002472013-11-16 Werner Lemberg <wl@gnu.org>
248
249 [sfnt] Fix `OS/2' table version 5 support.
250
251 We now follow the `official' announcement from Microsoft (on the
252 OpenType mailing list, which unfortunately hasn't a public archive).
253
254 * include/freetype/tttables.h (TT_OS2):
255 s/usLowerPointSize/usLowerOpticalPointSize/,
256 s/usUpperPointSize/usUpperOpticalPointSize/.
257
258 * src/sfnt/ttload.c (tt_face_load_os2): Update, and set correct
259 default values.
260
Werner Lembergfae38202013-11-13 08:55:46 +01002612013-11-13 Werner Lemberg <wl@gnu.org>
262
Werner Lembergc52b1292013-11-13 10:06:00 +0100263 * builds/unix/ft2unix.h: Remove. No longer necessary.
264
265 * builds/unix/install.mk (install): Updated.
266
2672013-11-13 Werner Lemberg <wl@gnu.org>
268
Werner Lembergfae38202013-11-13 08:55:46 +0100269 Simplify header file hierarchy.
270
271 This large patch changes the header file directory layout from
272 `include/freetype/...' to `include/...', effectively removing one
273 level. Since the file `ft2build.h' is also located in `include'
274 (and it stays there even after installation), all FreeType header
275 files are now in a single directory.
276
277 Applications that use (a) `freetype-config' or FreeType's
278 `pkg-config' file to get the include directory for the compiler, and
279 (b) the documented way for header inclusion like
280
281 #include <ft2build.h>
282 #include FT_FREETYPE_H
283 ...
284
285 don't need any change to the source code.
286
287 * include/freetype/*: Move up to...
288 * include/*: ... this directory.
289
290 * builds/amiga/include/freetype/*: Move up to...
291 * builds/amiga/include/*: ... this directory.
292
293 */*: Essentially do `s@/freetype/@/@' where appropriate.
294
295 * CMakeList.txt: Simplify.
296 * builds/unix/freetype-config.in, builds/unix/freetype2.in: For
297 `--cflags', return a single directory.
298 * builds/unix/install.mk (install): No longer try to remove `cache'
299 and `internal' subdirectories; instead, remove the `freetype'
300 subdirectory.
301
Werner Lembergea5c7812013-11-12 08:55:26 +01003022013-11-12 Werner Lemberg <wl@gnu.org>
303
304 [truetype] Fix last `truetype' commit.
305
306 * src/truetype/ttgload.c (tt_get_metrics): Preserve stream position.
307 Return error value.
308 (load_truetype_glyph): Updated.
309
Werner Lemberg78333282013-11-10 06:26:52 +01003102013-11-10 Werner Lemberg <wl@gnu.org>
311
312 * docs/CMAKE: New dummy file.
313
Dave Arnolddd213012013-11-08 10:52:51 +01003142013-11-08 Dave Arnold <darnold@adobe.com>
315
316 [cff] Fix for hints that touch.
317
318 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Fix condition for
319 finding index value of insertion point.
320
Werner Lemberg7e4b0fb2013-11-06 07:14:49 +01003212013-11-06 Werner Lemberg <wl@gnu.org>
322
Werner Lemberg5e225b72013-11-06 08:41:59 +0100323 [truetype] Fix handling of phantom points in composite glyphs.
324 Problem reported by Nigel Tao <nigeltao@golang.org>.
325
326 This is a follow-up commit to the previous one.
327
328 * src/truetype/ttgload.c (load_truetype_glyph): Call
329 `tt_get_metrics' after loading the glyph header.
330
3312013-11-06 Werner Lemberg <wl@gnu.org>
332
Werner Lemberg7e4b0fb2013-11-06 07:14:49 +0100333 [truetype] Improve emulation of vertical metrics.
334
335 This commit also improves the start values of vertical phantom
336 points. Kudos to Greg Hitchcock for help.
337
338 * src/truetype/ttgload.c (TT_Get_VMetrics): Add parameter to pass
339 `yMax' value. Replace code with fixed Microsoft definition.
340 (tt_get_metrics): Updated.
341 (TT_LOADER_SET_PP): Add explanation how to initialize phantom
342 points, taken from both the OpenType specification and private
343 communication with Greg (which will eventually be added to the
344 standard).
345 Fix horizontal position of `pp3' and `pp4'.
346
347 * src/truetype/ttgload.h: Updated.
348
349 * src/truetype/ttdriver.c (tt_get_advances): Updated.
350
351 * docs/CHANGES: Updated.
352
Werner Lembergc6064282013-11-05 13:29:15 +01003532013-11-05 Werner Lemberg <wl@gnu.org>
354
Werner Lemberg50740532013-11-05 23:19:18 +0100355 * builds/windows/vc2010/freetype.vcxproj: s/v110/v100/.
356 PlatformToolSet version 110 is for VC2012.
357
358 Problem reported (with solution) by Dave Arnold <darnold@adobe.com>.
359
3602013-11-05 Werner Lemberg <wl@gnu.org>
361
Werner Lembergc6064282013-11-05 13:29:15 +0100362 [truetype] Correctly reset point tags for glyph components.
363 Problem reported by Nigel Tao <nigeltao@golang.org>.
364
365 * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop.
366
Werner Lemberg35b08182013-11-02 08:28:41 +01003672013-11-02 Werner Lemberg <wl@gnu.org>
368
Werner Lemberg7d449432013-11-02 11:36:37 +0100369 [truetype] Fix GETINFO opcode handling of subpixel hinting bits.
370
371 * src/truetype/ttinterp.c (Ins_GETINFO): Don't request bit 6 set to
372 get info on subpixel hinting.
373
374 * docs/CHANGES: Updated.
375
3762013-11-02 Werner Lemberg <wl@gnu.org>
377
Werner Lemberg35b08182013-11-02 08:28:41 +0100378 Fix Savannah bug #40451.
379
380 Simply apply the patch from the bug report.
381
382 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
383 include/freetype/config/ftconfig.h: The used #pragma directives only
384 work with gcc versions 4.6 and higher.
385
Werner Lembergebf52d62013-11-01 13:26:28 +01003862013-11-01 Werner Lemberg <wl@gnu.org>
387
Werner Lembergafa0d592013-11-01 22:27:27 +0100388 * docs/CHANGES: Updated.
389
3902013-11-01 Werner Lemberg <wl@gnu.org>
391
Werner Lembergebf52d62013-11-01 13:26:28 +0100392 [truetype] Minor code refactoring.
393
394 Two benefits: The allocated FDEF (and IDEF) array gets slightly
395 smaller, and the `ttdebug' demo program has access to function
396 numbers without additional costs.
397
398 Fortunately, no changes to FontForge are necessary – this is the
399 only external TrueType debugger I know of, but others may exist and
400 should check the code accordingly.
401
402 * src/truetype/ttinterp.h (TT_CallRec): Replace `Cur_Restart' and
403 `Cur_End' with a pointer to the corresponding `TT_DefRecord'
404 structure.
405
406 * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF, Ins_ENDF,
407 Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns <Invalid_Opcode>):
408 Updated.
409
Werner Lembergee510512013-10-27 07:25:35 +01004102013-10-27 Werner Lemberg <wl@gnu.org>
411
412 [sfnt] Implement support for `OS/2' table version 5.
413
414 See
415
416 http://typedrawers.com/discussion/470/new-microsoft-size-specific-design-selection-mechanism
417
418 for the announcement.
419
420 * include/freetype/tttables.h (TT_OS2): Add fields
421 `usLowerPointSize' and `usUpperPointSize'. Since FreeType returns
422 this structure only as a pointer through `FT_Get_Sfnt_Table', there
423 shouldn't be any ABI problems.
424
425 * src/sfnt/ttload.c (tt_face_load_os2): Implement it.
426
427 * docs/CHANGES: Updated.
428
Werner Lemberg994a8592013-10-24 08:50:34 +02004292013-10-24 Werner Lemberg <wl@gnu.org>
430
431 * README.git, docs/CHANGES, docs/INSTALL: Updated.
432
John Carya0e4a732013-10-24 08:49:08 +02004332013-10-24 John Cary <cary@txcorp.com>
434
435 Provide cmake support.
436
437 * CMakeLists.txt: New file.
438
Kenneth Miller4d87ac82013-10-23 20:10:56 +02004392013-10-23 Kenneth Miller <kennethadammiller@yahoo.com>
440 Werner Lemberg <wl@gnu.org>
441
442 Provide support for x64 builds in Visual C++ project files.
443
444 * src/builds/win32: Renamed to...
445 * src/builds/windows: This.
446
447 * src/builds/windows/vc2010/*: Updated to handle x64 target.
448
449 * src/builds/windows/*.mk, docs/INSTALL.GNU: s/win32/windows/ where
450 appropriate.
451
Werner Lemberg604838d2013-10-22 01:10:10 +02004522013-10-22 Werner Lemberg <wl@gnu.org>
453
454 * src/base/md5.c, src/base/md5.h: Updated to recent version.
455
456 * src/base/ftobjs.c: Updated; `md5.c' no longer uses `free'.
457
Werner Lembergdb9159c2013-10-22 10:27:50 +0200458 The canonical URL to get updates for this file is
459
460 http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/
461
462 as the author told me in private communication.
463
Werner Lemberg34efe052013-10-19 21:14:40 +02004642013-10-19 Werner Lemberg <wl@gnu.org>
465
Werner Lemberg75efc2d2013-10-19 21:46:03 +0200466 [autofit] s/SMALL_TOP/X_HEIGHT/.
467
468 * src/autofit/afblue.dat: Updated.
469
470 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
471
472 * src/autofit/aflatin.c, src/autofit/aflatin.h,
473 src/autofit/atlatin2.c: Updated.
474
4752013-10-19 Werner Lemberg <wl@gnu.org>
476
Werner Lemberg34efe052013-10-19 21:14:40 +0200477 * src/autofit/afblue.dat: s/MINOR/DESCENDER/.
478
479 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
480
Werner Lemberg955f6a82013-10-16 19:47:57 +02004812013-10-16 Werner Lemberg <wl@gnu.org>
482
Werner Lemberga5f22a92013-10-17 11:08:25 +0200483 [autofit] Add description strings to script entries.
484
485 Currently, this is unused.
486
487 * src/autofit/afscript.h: Do it.
488 * src/autofit/afglobal.c, src/autofit/afpic.c,
489 src/autofit/aftypes.h: Updated.
490
4912013-10-16 Werner Lemberg <wl@gnu.org>
492
Werner Lemberg955f6a82013-10-16 19:47:57 +0200493 [autofit] Improve tracing message for extra light flag.
494
495 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it.
496
Chongyu Zhu41632b52013-10-15 11:40:34 +02004972013-10-15 Chongyu Zhu <lembacon@gmail.com>
498
499 [arm] Fix thumb2 inline assembly under LLVM.
500
501 When using `ADD' with an immediate operand, the instruction is
502 actually `ADD Rd, Rn, #<imm12>', that is, the maximum of the
503 immediate operand cannot exceed 4095. It will fail to compile with
504 LLVM.
505
506 However, in GCC, due to some legacy compatibility considerations,
507 `ADD.W' will be automatically emitted when the immediate operand is
508 larger than 4095.
509
510 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
511 (FT_MulFix_arm) [__GNUC__]: Support clang compiler.
512
513 * src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto.
514
Werner Lembergb6695242013-10-12 10:33:04 +02005152013-10-12 Werner Lemberg <wl@gnu.org>
516
517 [autofit] Improve tracing of `latin' hinter.
518
519 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue
520 zone types.
521 (af_latin_metrics_scale_dim): Report scaling changes due to x height
522 alignment.
523 Report scaled stroke width and blue zone values.
524
Dave Arnolde845a852013-10-03 23:04:29 +02005252013-10-03 Dave Arnold <darnold@adobe.com>
526
527 * src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.
528
Werner Lemberg2c56f2a2013-10-07 22:01:00 +0200529 Note that the old code avoided using a region of the piecewise
530 linear function where the slope was zero. The recovery was to use a
531 different section of the function, which produced a different,
532 incorrect amount of darkening.
533
Darrell Bellert01af71d2013-10-02 22:04:07 +02005342013-10-02 Darrell Bellert <darrell.bellert@hl.konicaminolta.us>
535
536 * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'.
537
Dave Arnold0b330452013-10-02 11:04:06 +02005382013-10-02 Dave Arnold <darnold@adobe.com>
539
540 * src/cff/cf2font.c (cf2_computeDarkening): Initialize darkenAmount.
541
542 This line was lost in commit 89ca1fd6 (from 2013-06-25). The effect
543 is to use a previous darkening amount when producing an unhinted,
544 unscaled outline. This can cause autohint samples in ftgrid and
545 ftview to be based on darkened CFF outlines instead of unhinted,
546 undarkened ones.
547
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02005482013-09-29 Dave Arnold <darnold@adobe.com>
549
550 Fix Savannah bug #39295.
551
552 The bug was caused by switching to the initial hintmap (the one in
553 effect when `moveto' executes) just before drawing the final element
554 in the charstring. This ensured that the path was closed (in both
555 Character Space and Device Space). But if the final element was a
556 curve and if the final hintmap was different enough from the initial
557 one, then the curve was visibly distorted.
558
559 The first part of the fix is to draw the final curve using the final
560 hintmap as specified by the charstring. This corrects the
561 distortion but does not ensure closing in Device Space. It may
562 require the rasterizer to automatically generate an extra closing
563 line. Depending on the hintmap differences, this line could be from
564 zero to a couple pixels in length.
565
566 The second part of the fix covers the case where the charstring
567 subpath is closed with an explicit line. We now modify that line's
568 end point to avoid the distortion.
569
570 Some glyphs in the bug report font (TexGyreHeros-Regular) that show
571 the change are:
572
573 25ppem S (98)
574 24ppem eight (52)
575 25.5ppem p (85)
576
577 Curves at the *end* of a subpath are no longer distorted. However,
578 some of these glyphs have bad hint substitutions in the middle of a
579 subpath, and these are not affected.
580
581 The patch has been tested with a set of 106 fonts that shipped with
582 Adobe Creative Suite 4, together with 756 Open Source CFF fonts from
583 Google Fonts. There are 1.5 million glyphs, of which some 20k are
584 changed with the fix. A sampling of a few hundred of these changes
585 have been examined more closely, and the changes look good (or at
586 least acceptable).
587
588 * src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing'
589 to indicate that we synthesize a closepath line.
590
591 * src/cff/cf2hints.c (cf2_glyphpath_init): Updated.
592 (cf2_glyphpath_pushPrevElem): If closing, use first hint map (for
593 `lineto' operator) and adjust hint zone.
594 For synthesized closing lines, use end point in first hint zone.
595 (cf2_glyphpath_lineTo): Take care of synthesized closing lines. In
596 particular, shift the detection of zero-length lines from character
597 space to device space.
598 (cf2_glyphpath_closeOpenPath): Remove assertion.
599 Updated.
600
Werner Lembergb75a8b82013-09-25 09:46:36 +02006012013-09-25 Werner Lemberg <wl@gnu.org>
602
603 * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays.
604
suzuki toshiyaac0f4452013-09-25 10:57:17 +09006052013-09-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
606
607 [bdf, pcf] Refuse non-zero face_index.
Werner Lemberg964317e2013-09-25 09:22:40 +0200608
suzuki toshiyaac0f4452013-09-25 10:57:17 +0900609 Suggested by Akira Tagoh, see
610
611 http://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html
612
Werner Lemberg964317e2013-09-25 09:22:40 +0200613 * src/bdf/bdfdrivr.c (BDF_Face_Init): Return `Invalid_Argument'
614 error if the font could be opened but non-zero `face_index' is
615 given.
suzuki toshiyaac0f4452013-09-25 10:57:17 +0900616 * src/pcf/pcfdrivr.c (PCF_Face_Init): Ditto.
617
618 * src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED
Werner Lemberg964317e2013-09-25 09:22:40 +0200619 macro for `face_index' because it is validated later.
suzuki toshiyaac0f4452013-09-25 10:57:17 +0900620
Werner Lemberg4de77872013-09-23 22:10:08 +02006212013-09-23 Werner Lemberg <wl@gnu.org>
622
623 Fix Savannah bug #40090.
624
625 * src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit
626 306f8c5d (from 2013-08-25) affecting this function.
627
Werner Lemberg5a4c5a52013-09-22 22:37:26 +02006282013-09-22 Werner Lemberg <wl@gnu.org>
629
630 [autofit] Disunify Cyrillic and Greek handling from Latin.
631
632 * src/autofit/afscript.h: Add Cyrillic and Greek.
633
634 * src/autofit/afblue.dat (AF_BLUE_STRINGSET_GREK,
635 AF_BLUE_STRINGSET_CYRL): Add blue zones for Greek and Cyrillic.
636 (AF_BLUE_STRINGSET_LATN): Fix typo.
637 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
638
639 * src/autofit/aflatin.c (af_grek_uniranges, af_cyrl_uniranges): New
640 arrays.
641 (af_grek_script_class, af_cyrl_script_class): New scripts.
642 * src/autofit/aflatin.h: Updated.
643
Werner Lemberg2cca9662013-09-20 07:23:34 +02006442013-09-20 Werner Lemberg <wl@gnu.org>
645
646 * docs/CHANGES: Updated.
647
Behdad Esfahbod31e726d2013-09-20 07:20:53 +02006482013-09-20 Behdad Esfahbod <behdad@behdad.org>
649
650 Fix vertical size of emboldened glyphs.
651
652 Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709
653
654 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY'
655 also.
656
Alexei Podtelezhnikov52381c12013-09-11 23:25:56 -04006572013-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
658
659 * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation
660 algorithm description.
661
Werner Lemberg3f542492013-09-11 23:08:31 +02006622013-09-11 Werner Lemberg <wl@gnu.org>
663
664 [autofit] Improve Hebrew rendering.
665
666 This change introduces a new blue zone property
667 `AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short
668 top segments.
669
670 * src/autofit/afblue.dat: Fix Hebrew blue strings.
671 Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP.
672
673 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro.
674
675 * src/autofit/afblue.c, src/autofit/afblue.h: Updated.
676
677 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle
678 `AF_LATIN_IS_LONG_BLUE'.
679
680 * src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro.
681
Werner Lemberg85a7fdf2013-08-29 21:03:05 +02006822013-08-28 Behdad Esfahbod <behdad@google.com>
683
684 [sfnt] Fix frame access while reading WOFF table directory.
685
686 * src/sfnt/sfobjs.c (woff_open_font): Using single memory frame
687 while reading the directory entries for the whole loop.
688
6892013-08-29 Werner Lemberg <wl@gnu.org>
Werner Lembergd689d1c2013-08-29 17:53:40 +0200690 Behdad Esfahbod <behdad@google.com>
691
692 Implement support for WOFF containers.
693
694 We simply synthesize a SFNT from the WOFF, create a memory stream
695 for the new data, and load the SFNT as usual.
696
697 Does NOT add any API to access WOFF metadata or private blocks.
698
699 * include/freetype/internal/tttypes.h (WOFF_HeaderRec,
700 WOFF_TableRec): New structures.
701
702 * include/freetype/tttags.h (TTAG_wOFF): New macro.
703
704 * src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling
705 `open_face'.
706
707 * src/sfnt/sfobjs.c [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Include
708 `FT_GZIP_H'.
709 (WRITE_BYTE, WRITE_USHORT, WRITE_ULONG): New temporary macros for
710 writing to a stream.
711 (sfnt_stream_close, compare_offsets, woff_open_font): New functions.
712 (sfnt_open_font): Handle `TTAG_wOFF'.
713 (sfnt_init_face): Set `stream' after calling `sfnt_open_font'.
714
715 * src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling
716 `sfnt->init_face'.
717
718 * src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an
719 argument so that a changed stream survives.
720 Update callers.
721
7222013-08-28 Werner Lemberg <wl@gnu.org>
Werner Lemberge0f39ae2013-08-28 17:34:01 +0200723
Werner Lembergdc240522013-08-29 17:53:24 +0200724 [gzip] New function `FT_Gzip_Uncompress'.
725
726 This is modeled after zlib's `uncompress' function. We need this
727 for WOFF support.
728
729 * include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress):
730 New function.
731
732 * src/gzip/rules.mk: Rewrite to better reflect dependencies.
733
7342013-08-28 Werner Lemberg <wl@gnu.org>
735
Werner Lemberg5195ecd2013-08-28 17:41:21 +0200736 [autofit] Fix `make multi' compilation.
737
738 * src/autofit/afblue.cin, src/autofit/afblue.c: Don't include
739 `afblue.h' but `aftypes.h'.
740 * src/autofit/afcjk.c: Don't include `aftypes.h' but `afglobal.h'.
741
7422013-08-28 Werner Lemberg <wl@gnu.org>
743
Werner Lemberge0f39ae2013-08-28 17:34:01 +0200744 [autofit] Fix C++ compilation.
745
746 * src/autofit/afglobal.c (af_face_globals_get_metrics),
747 src/autofit/afdummy.c (af_dflt_script_class), src/autofit/afindic.c
748 (af_deva_script_class): Use proper casts.
749
Behdad Esfahbodbd3849e2013-08-27 21:43:38 +02007502013-08-27 Behdad Esfahbod <behdad@google.com>
751
Behdad Esfahbodc799dd62013-08-27 21:46:03 +0200752 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos.
753
7542013-08-27 Behdad Esfahbod <behdad@google.com>
755
Behdad Esfahbodbd3849e2013-08-27 21:43:38 +0200756 FT_Open_Face: Improve external stream handling.
757
758 If the font's `clazz->init_face' function wants to swap to new
759 stream, handling of whether original stream was external could
760 result to either memory leak or double free. Mark externality into
761 face flags before calling `init_face' such that the clazz can handle
762 external streams properly.
763
764 * src/base/ftobjs.c (FT_Open_Face): Move code to set
765 FT_FACE_FLAG_EXTERNAL_STREAM to...
766 (open_face): This function.
767
Werner Lemberg5e53db22013-08-27 18:37:39 +02007682013-08-27 Werner Lemberg <wl@gnu.org>
769
Werner Lembergbcd8c0b2013-08-27 21:36:03 +0200770 Remove `FT_SqrtFixed' function.
771
772 It's no longer used.
773
774 * include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it.
775
7762013-08-27 Werner Lemberg <wl@gnu.org>
777
Werner Lemberg5e53db22013-08-27 18:37:39 +0200778 [autofit] While tracing, report script names instead of ID values.
779
780 * src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]:
781 New array.
782 * src/autofit/afglobal.h: Updated.
783
784 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
785 af_cjk_hint_edges): Use `af_script_names'.
786 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
787 af_latin_hint_edges): Ditto.
788
Werner Lemberg92f5a042013-08-26 09:22:27 +02007892013-08-26 Werner Lemberg <wl@gnu.org>
790
Werner Lemberg278f64b2013-08-26 20:20:03 +0200791 [autofit] Report used script while hinting a glyph.
792
793 * src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c
794 (af_latin_hint_edges): Implement it.
795
7962013-08-26 Werner Lemberg <wl@gnu.org>
797
Werner Lemberg371f5c32013-08-26 20:11:24 +0200798 [autofit] Add support for Hebrew script.
799
800 * src/autofit/afblue.dat: Add blue strings for Hebrew.
801 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
802
803 * src/autofit/aflatin.c (af_hebr_uniranges): New array.
804 (af_hebr_script_class): New script.
805 * src/autofit/aflatin.h, src/autofit/afscript.h: Updated.
806
8072013-08-26 Werner Lemberg <wl@gnu.org>
808
Werner Lemberg098121d2013-08-26 18:54:05 +0200809 [autofit] Improve tracing messages.
810
811 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Mention script
812 ID in tracing message.
813 (af_cjk_metrics_init_blues): Initialize `axis' outside of the inner
814 loop.
815 Improve tracing messages.
816 (af_cjk_hint_edges) [FT_DEBUG_LEVEL_TRACE]: New variable
817 `num_actions' to count hinting actions.
818 Improve tracing messages.
819
820 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Mention
821 script ID in tracing message.
822 (af_latin_metrics_init_blues, af_latin_hint_edges): Improve tracing
823 messages.
824
8252013-08-26 Werner Lemberg <wl@gnu.org>
826
Werner Lembergffee64a2013-08-26 12:55:48 +0200827 Better tracing of loaded glyphs.
828
Dave Arnold3a2cb0f2013-09-29 16:17:02 +0200829 Previously, the loading of a glyph was traced at level 4, if at all.
Werner Lembergffee64a2013-08-26 12:55:48 +0200830 With this change, all font loading routines emit a tracing message
831 at level 1, making it easier to select tracing output (for example
832 using F2_DEBUG="any:1 afhints:7 aflatin:7").
833
834 * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Add tracing message.
835 * src/cff/cffdrivr.c (cff_glyph_load): Ditto.
836 * src/cff/cffgload.c (cff_decoder_prepare): Improve tracing
837 messages.
838 * src/cid/cidgload.c (cid_load_glyph): Use level 1 for tracing
839 message.
840 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.
841 * src/pfr/pfrobjs.c (pfr_slot_load): Add tracing message.
842 * src/truetype/ttgload.c (TT_Load_Glyph): Ditto.
843 * src/type1/t1gload.c (T1_Load_Glyph): Ditto.
844 * src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto.
845 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
846
8472013-08-26 Werner Lemberg <wl@gnu.org>
848
Werner Lemberg33655a92013-08-26 09:58:50 +0200849 [autofit] Fix script selection.
850
851 * src/autofit/afglobal.c (af_face_globals_get_metrics): Use
852 `AF_SCRIPT_DFLT', not value 0.
853 Simplify code.
854
855 * src/autofit/afscript.h: Sort by script name.
856
8572013-08-26 Werner Lemberg <wl@gnu.org>
858
Werner Lemberg92f5a042013-08-26 09:22:27 +0200859 [autofit] Make `dummy' hinter work as expected.
860
861 * src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling
862 information.
863 (af_dummy_hints_apply): Scale the glyphs.
864
Werner Lemberg8b8be782013-08-25 08:01:41 +02008652013-08-25 Werner Lemberg <wl@gnu.org>
866
Werner Lembergc1eb4452013-08-25 19:47:26 +0200867 [autofit] Make `cjk' module use blue stringsets.
868
869 * src/autofit/afcjk.c (AF_CJK_MAX_TEST_CHARACTERS): Removed.
870 (af_cjk_hani_blue_chars): Removed.
871 (AF_CJK_BLUE_TYPE_*): Removed.
872 (af_cjk_metrics_init_blues): Replace AF_CJK_MAX_TEST_CHARACTERS with
873 AF_BLUE_STRING_MAX_LEN.
874 Change loops to use offsets (in file `afblue.h') into the new arrays
Dave Arnold3a2cb0f2013-09-29 16:17:02 +0200875 `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
Werner Lembergc1eb4452013-08-25 19:47:26 +0200876 Instead of three dimensions (as used in the old blue string array)
877 we now use properties to do the same, saving one loop nesting level.
878
879 * src/autofit/afcjk.h: Remove old enumeration values superseded by
880 the new data in `afblue.h'.
881 (AF_CJK_IS_TOP_BLUE, AF_CJK_IS_HORIZ_BLUE, AF_CJK_IS_FILLED_BLUE,
882 AF_CJK_IS_RIGHT_BLUE): New macros, to be used in
883 `af_cjk_metrics_init_blues'.
884 (AF_CJK_BLUE_IS_RIGHT): Remove this now redundant enum value.
885 (AF_CJK_BLUE_IS_TOP): Renamed to...
886 (AF_CJK_BLUE_TOP): This.
887 (AF_CJK_MAX_BLUES): Remove.
888 (AF_CJKAxisRec): Updated.
889
8902013-08-25 Werner Lemberg <wl@gnu.org>
891
Werner Lemberg5c4a23a2013-08-25 19:29:07 +0200892 [autofit] Typo.
893
894 * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use
895 cast.
896
8972013-08-25 Werner Lemberg <wl@gnu.org>
898
Werner Lemberg306f8c52013-08-25 13:07:08 +0200899 [autofit] Synchronize `cjk' with `latin' module (and vice versa).
900
901 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Add tracing
902 messages.
903 (af_cjk_metrics_init_blues): Don't pass blue string array as
904 argument but use the global array directly.
905 Use `outline' directly.
906 Update and add tracing messages.
907 (af_cjk_metrics_init): Simplify code.
908 (af_cjk_metrics_scale_dim): Improve tracing message.
909 (af_cjk_metrics_scale): Synchronize.
910
911 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
912 af_latin_metrics_init_blues): Improve and add tracing messages.
913
9142013-08-25 Werner Lemberg <wl@gnu.org>
915
Werner Lemberg0975d682013-08-25 08:37:47 +0200916 [autofit] Make `latin' module use blue stringsets.
917
918 * src/autofit/aflatin.c (AF_LATIN_MAX_TEST_CHARACTERS): Removed.
919 (af_latin_blue_chars): Removed.
920 (af_latin_metrics_init_blues): Replace AF_LATIN_MAX_TEST_CHARACTERS
921 with AF_BLUE_STRING_MAX_LEN.
922 Change loops to use offsets (in file `afblue.h') into the new arrays
923 `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
924 Use `AF_LATIN_IS_SMALL_TOP_BLUE' macro.
925
926 * src/autofit/aflatin.h: Remove old enumeration values superseded by
927 the new data in `afblue.h'.
928 (AF_LATIN_IS_TOP_BLUE): Updated definition.
929 (AF_LATIN_IS_SMALL_TOP_BLUE): New macro.
930 (AF_LATIN_MAX_BLUES): Remove.
931 (AF_LatinAxisRec): Updated.
932
9332013-08-25 Werner Lemberg <wl@gnu.org>
934
Werner Lembergdb3e5b92013-08-25 08:23:22 +0200935 [autofit] Add blue stringsets.
936
937 * src/autofit/aftypes.h: Include `afblue.h'.
938 (AF_ScriptClassRec): Add `blue_stringset' field.
939 (AF_DEFINE_SCRIPT_CLASS): Updated.
940
941 * src/autofit/autofit.c: Include `afblue.c'.
942
943 * src/autofit/afcjk.c (af_hani_script_class), src/autofit/afdummy.c
944 (af_dflt_script_class), src/autofit/afindic.c
945 (af_deva_script_class), src/autofit/aflatin.c
946 (af_latn_script_class), src/autofit/aflatin2.c
947 (af_ltn2_script_class): Updated.
948
949 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'.
950
9512013-08-25 Werner Lemberg <wl@gnu.org>
952
Werner Lemberg8b8be782013-08-25 08:01:41 +0200953 [autofit] Introduce data file for blue strings.
954
955 The idea is to have a central file which gets processed by a Perl
956 script to create proper `.c' and `.h' files using templates. There
957 are two other reasons to do that:
958
959 . The data file should be easily readable. We use UTF-8 encoding
960 which then gets converted to single bytes.
961
962 . Since the number of supported scripts will increase soon, the
963 current usage of blue string arrays is a waste of space. Using
964 the Perl script it is possible to imitate jagged arrays,
965 defining enumeration constants as offsets into the arrays.
966
967 This commit only adds files without changing any functionality.
968
969 * src/autofit/afblue.dat: New data file.
970 * src/tools/afblue.pl: New Perl script for processing `afblue.dat'.
971
972 * src/autofit/afblue.cin, src/autofit/afblue.hin: New template files
973 for...
974 * src/autofit/afblue.c, src/autofit/afblue.c: New source files.
975 To avoid a dependency on Perl, we add them too.
976
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -04009772013-08-19 Alexei Podtelezhnikov <apodtele@gmail.com>
978
Werner Lemberg71c0ad62013-08-27 21:30:09 +0200979 [base] Enable new algorithm for `BBox_Cubic_Check'.
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -0400980
Werner Lemberg71c0ad62013-08-27 21:30:09 +0200981 * src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove
982 the old one.
983 Improve comments.
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -0400984
Werner Lemberg6bfa2632013-08-18 18:34:05 +02009852013-08-18 Werner Lemberg <wl@gnu.org>
986
Werner Lemberg4af44442013-08-18 18:46:30 +0200987 * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit.
988
9892013-08-18 Werner Lemberg <wl@gnu.org>
990
Werner Lemberg6bfa2632013-08-18 18:34:05 +0200991 Fix Savannah bug #39804.
992
993 * builds/unix/configure.raw (LIBPNG): Define and export.
994 * builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle
995 libpng.
996
Alexei Podtelezhnikov32a7d872013-08-17 22:19:21 -04009972013-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
998
999 [base] Clean up BBox_Conic_Check.
1000
1001 * src/base/ftbbox.c (BBox_Conic_Check): Remove redundant checks for
1002 extremum at the segment ends, which are already within the bbox.
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02001003 Slightly modify calculations.
Alexei Podtelezhnikov32a7d872013-08-17 22:19:21 -04001004
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -040010052013-08-15 Alexei Podtelezhnikov <apodtele@gmail.com>
1006
1007 [base] Finish experimental (disabled) BBox_Cubic_Check implementation.
1008
1009 * src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02001010 accuracy and avoid overflows.
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -04001011
Alexei Podtelezhnikov61a65512013-08-13 22:28:57 -040010122013-08-13 Alexei Podtelezhnikov <apodtele@gmail.com>
1013
1014 [base] Refactor experimental (disabled) BBox_Cubic_Check.
1015
1016 * src/base/ftbbox.c (BBox_Cubic_Check): Implement the minimum search
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -04001017 as the mirror image of the maximum search implemented here...
1018 (update_max): New function.
Alexei Podtelezhnikov61a65512013-08-13 22:28:57 -04001019
John Tytgat9bcfab82013-08-06 08:55:19 +020010202013-08-06 John Tytgat <John.Tytgat@esko.com>
1021
1022 Fix Savannah bug #39702.
1023
1024 * src/cff/cffload.c (cff_index_get_pointers): Check for `cur_offset
1025 != 0'; this stronger test is mandated by the CFF specification.
1026 Fix test for INDEX structures which have one or more empty entries
1027 at the end.
1028
Werner Lembergcc25e3a2013-08-05 08:46:15 +020010292013-08-05 Werner Lemberg <wl@gnu.org>
1030
Werner Lemberga32682f2013-08-06 00:21:46 +02001031 Fix gcc pragmas, part 2.
1032
1033 * src/truetype/ttinterp.c (TT_MulFix14_long_long,
1034 TT_DotFix14_long_long): `#pragma gcc diagnostic {push,pop}' has been
1035 introduced with gcc version 4.6.
1036
10372013-08-05 Werner Lemberg <wl@gnu.org>
1038
Werner Lemberg69e524d2013-08-05 23:38:32 +02001039 Fix gcc pragmas.
1040
1041 * src/truetype/ttinterp.c (TT_MulFix14_long_long,
1042 TT_DotFix14_long_long): Older gcc versions don't accept diagnostic
1043 pragmas within a function body.
1044
10452013-08-05 Werner Lemberg <wl@gnu.org>
1046
Werner Lemberg9e6de362013-08-05 16:37:21 +02001047 Fix Savannah bug #39700.
1048
1049 * builds/unix/ftconfig.h: Synchronize with
1050 `include/freetype/config/ftconfig.h'.
1051
1052 * builds/vms/ftconfig.h: Ditto.
1053 Make the differences to the master `ftconfig.h' file as small as
1054 possible for easier maintainance.
1055
10562013-08-05 Werner Lemberg <wl@gnu.org>
1057
Werner Lembergcc25e3a2013-08-05 08:46:15 +02001058 [autofit] Improve handling of `near' points.
1059
1060 Points which are very near to each other are now marked as such.
1061 The `weak' flag is then computed by using the `in' vector of the
1062 first and the `out' vector of the last point of a group of near
1063 points.
1064
1065 For example, this fixes the rendering of glyph `Oslash' in
1066 `Roboto-Thin.ttf'.
1067
1068 * src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'.
1069
1070 * src/autofit/afhints.c (af_glyph_hints_reload): Introduce
1071 the heuristic value `near_limit' to decide whether the current point
1072 is near to the previous one, then set `AF_FLAG_NEAR' accordingly.
1073 Store good `in' vector (of last non-near point) in
1074 `last_good_in_{x,y}' and use it as an argument to
1075 `ft_corner_is_flat' if necessary.
1076
Werner Lemberg74a9b672013-08-02 14:53:32 +020010772013-08-02 Werner Lemberg <wl@gnu.org>
1078
Werner Lemberg0d28a7d2013-08-02 22:59:43 +02001079 * include/freetype/ftcffdrv.h: Improve documentation.
1080 This is based on blog entries from David Lemon and Dave Arnold (both
1081 from Adobe) with kind permission. Dave also helped in
1082 proof-reading.
1083
10842013-08-02 Werner Lemberg <wl@gnu.org>
1085
Werner Lemberg456cc442013-08-02 20:25:21 +02001086 [autofit] Move declaration of scripts into separate file.
1087
1088 This has the benefit that we don't need to duplicate the data at
1089 different places.
1090
1091 * src/autofit/afscript.h: New file.
1092
1093 * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define
1094 the enumeration values.
1095
1096 * src/autofit/afglobal.c: Include `afscript.h' to get the script
1097 specific header files.
1098 (af_script_classes): Include `afscript.h' to fill this array.
1099
1100 * src/autofit/afpic.c: Include `afscript.h' to get the script
1101 specific header files.
1102 (autofit_module_class_pic_init): Include `afscript.h' for
1103 initialization.
1104 * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT,
1105 AF_SCRIPT_CLASSES_REC_COUNT): Removed. Use `AF_SCRIPT_MAX' instead.
1106
1107 * src/autofit/rules.mk (AUTOF_DRV_H): Updated.
1108
11092013-08-02 Werner Lemberg <wl@gnu.org>
1110
Werner Lemberg773601d2013-08-02 19:51:17 +02001111 [autofit] Move declaration of writing systems into separate file.
1112
1113 This has the benefit that we don't need to duplicate the data at
1114 different places.
1115
1116 * src/autofit/afwrtsys.h: New file.
1117
1118 * src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to
1119 define the enumeration values.
1120
1121 * src/autofit/afglobal.c: Include `afwrtsys.h' to get the writing
1122 system specific header files.
1123 Include `afpic.h'.
1124 (af_writing_system_classes): Include `afwrtsys.h' to fill this
1125 array.
1126
1127 * src/autofit/afpic.c: Include `afwrtsys.h' to get the writing
1128 system specific header files.
1129 (autofit_module_class_pic_init): Include `afwrtsys.h' for
1130 initialization.
1131 * src/autofit/afpic.h (AF_WRITING_SYSTEM_CLASSES_COUNT,
1132 AF_WRITING_SYSTEM_CLASSES_REC_COUNT): Removed. Use
1133 `AF_WRITING_SYSTEM_MAX' instead.
1134
11352013-08-02 Werner Lemberg <wl@gnu.org>
1136
Werner Lemberg74a9b672013-08-02 14:53:32 +02001137 [sfnt] Fix compilation with g++.
1138
1139 * src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use
1140 cast.
1141 (Load_SBit_Png): Pacify compiler.
1142
Werner Lemberg89a529f2013-08-02 14:50:23 +020011432013-08-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
1144 Werner Lemberg <wl@gnu.org>
1145
1146 [autofit] Fix `make multi'.
1147
1148 * include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY,
1149 FT_LOCAL_ARRAY_DEF): New macros.
1150
1151 * src/autofit/afglobal.c (af_writing_system_classes,
1152 af_script_classes): Use FT_LOCAL_ARRAY_DEF.
1153 * src/autofit/afglobal.h: Declare `af_writing_system_classes' and
1154 `af_script_classes'.
1155 * src/autofit/afloader.c: Include `afpic.h'.
1156
Werner Lemberge8ed2d62013-08-01 12:20:20 +020011572013-08-01 Werner Lemberg <wl@gnu.org>
1158
1159 Another round of cppcheck nitpicks.
1160
1161 The call was (from the top-level of the FreeType tree):
1162
1163 cppcheck --force \
1164 --enable=all \
1165 -I /usr/include \
1166 -I /usr/local/include \
1167 -I /usr/lib/gcc/i586-suse-linux/4.7/include \
1168 -I include \
1169 -I include/freetype \
1170 -I include/freetype/config \
1171 -I include/freetype/internal \
1172 -DFT2_BUILD_LIBRARY \
1173 . &> cppcheck.log
1174
1175 using cppcheck git commit f7e93f99.
1176
1177 Note that cppcheck still can't handle `#include FOO' (with `FOO' a
1178 macro).
1179
1180 */* Improve variable scopes.
1181 */* Remove redundant initializations which get overwritten.
1182
1183 * src/gxvalid/*: Comment out redundant code or guard it with
1184 FT_DEBUG_LEVEL_TRACE.
1185
Werner Lemberg5d6a3602013-07-30 23:17:04 +020011862013-07-30 Werner Lemberg <wl@gnu.org>
1187
Werner Lemberg72f5ff52013-07-31 22:49:29 +02001188 [autofit] Introduce `writing systems'.
1189
1190 This patch adds a new top level to the auto-hinter's script class
1191 hierarchy. It defines `writing systems' which can contain multiple
1192 scripts.
1193
1194 For example, the `latin' writing system (in file `aflatin.c') is
1195 able to support scripts like Latin, Cyrillic, Armenian, etc., which
1196 can be handled similarly.
1197
1198 Scripts are now named using four-letter OpenType tags.
1199
1200 * src/autofit/aftypes.h (AF_ScriptClassRec): Move relevant members
1201 to...
1202 (AF_WritingSystemClassRec): This new structure. It holds pointers
1203 to functions which can be shared among related scripts.
1204 (AF_WritingSystem): New enumeration.
1205 (AF_Script): Revised values using four-letter tags.
1206 (AF_DEFINE_WRITING_SYSTEM_CLASS): New macro.
1207 (AF_DEFINE_SCRIPT_CLASS): Updated.
1208
1209 * src/autofit/afglobal.c (af_writing_system_classes): New global,
1210 constant array.
1211 (af_script_classes): Updated.
1212 (af_face_globals_free): Updated.
1213 Remove assertion.
1214 (af_face_globals_get_metrics): Updated.
1215
1216 * src/autofit/afglobal.h (AF_SCRIPT_FALLBACK)
1217 [!AF_CONFIG_OPTION_CJK]: Handle this case.
1218
1219 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
1220 Updated.
1221
1222 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated;
1223 initialize structures for both writing systems and scripts.
1224 * src/autofit/afpic.h: Updated.
1225 (AF_WRITING_SYSTEM_CLASSES_GET): New macro.
1226
1227 * src/autofit/afcjk.c (af_cjk_writing_system_class): New writing
1228 system.
1229 (af_cjk_uniranges): Renamed to...
1230 (af_hani_uniranges): This.
1231 (af_cjk_script_class): Reduced and renamed to...
1232 (af_hani_script_class): This.
1233 * src/autofit/afcjk.h: Updated.
1234
1235 * src/autofit/afdummy.c (af_dummy_writing_system_class): New writing
1236 system.
1237 (af_dummy_script_class): Reduced and renamed to...
1238 (af_dflt_script_class): This.
1239 * src/autofit/afdummy.h: Updated.
1240
1241 * src/autofit/afindic.c (af_indic_writing_system_class): New writing
1242 system.
1243 (af_indic_uniranges): Renamed to...
1244 (af_deva_uniranges): This.
1245 (af_indic_script_class): Reduced and renamed to...
1246 (af_deva_script_class): This.
1247 * src/autofit/afcjk.h: Updated.
1248
1249 * src/autofit/aflatin.c (af_latin_writing_system_class): New writing
1250 system.
1251 (af_latin_uniranges): Renamed to...
1252 (af_latn_uniranges): This.
1253 (af_latin_script_class): Reduced and renamed to...
1254 (af_latn_script_class): This.
1255 * src/autofit/aflatin.h: Updated.
1256
1257 * src/autofit/aflatin2.c (af_latin2_writing_system_class): New
1258 writing system.
1259 (af_latin2_uniranges): Renamed to...
1260 (af_ltn2_uniranges): This.
1261 Synchronize ranges with `latin'.
1262 (af_latin2_script_class): Reduced and renamed to...
1263 (af_ltn2_script_class): This.
1264 * src/autofit/aflatin2.h: Updated.
1265
12662013-07-30 Werner Lemberg <wl@gnu.org>
1267
Werner Lemberg5d6a3602013-07-30 23:17:04 +02001268 [autofit] Variable renaming.
1269
1270 * src/autofit/aftypes.h (AF_ScriptMetricsRec):
1271 s/clazz/script_class/.
1272 Update all users.
1273
suzuki toshiya2b29ed62013-07-30 13:55:29 +090012742013-07-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
1275
1276 Ignore libpng-config under cross-building configuration,
1277 because it will return the flags for the hosting environment.
1278
1279 * builds/unix/configure.raw: Ignore libpng-config when
1280 `cross_compiling' == yes.
1281
suzuki toshiyaf2e7f1e2013-07-30 13:32:57 +090012822013-07-30 Behdad Esfahbod <behdad@google.com>
1283
1284 Prevent division by zero by a transparent color.
1285
1286 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra):
1287 Return 0 immediately, when alpha channel is zero.
1288
Behdad Esfahbod21c32b02013-07-25 21:53:18 +020012892013-07-25 Behdad Esfahbod <behdad@google.com>
1290
1291 Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR.
1292
1293 Also disambiguate Google's color bitmap tables.
1294
1295 * include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR):
1296 New macros.
1297
1298 * include/freetype/internal/tttypes.h (TT_SbitTableType): Add
1299 TT_SBIT_TABLE_TYPE_CBLC.
1300
1301 * src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR.
1302
1303 * src/sfnt/ttsbit.c (tt_face_load_sbit,
1304 tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle
1305 TT_SBIT_TABLE_TYPE_CBLC.
1306
suzuki toshiyab4725cb2013-07-24 14:25:39 +090013072013-07-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
1308
1309 [sfnt] Fix for `make multi' target.
1310
1311 * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF().
1312
Werner Lemberg6a7df622013-07-20 10:48:37 +020013132013-07-20 Werner Lemberg <wl@gnu.org>
1314
1315 * docs/INSTALL.GNU: Updated.
1316
Behdad Esfahbodff269522013-07-20 08:02:39 +020013172013-07-20 Behdad Esfahbod <behdad@google.com>
1318
1319 [sfnt] Fix `sbix' table version handling.
1320
1321 * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
1322 USHORT version numbers are to be considered as `minor'.
1323
Werner Lemberg05c14212013-07-19 23:11:23 +020013242013-07-19 Werner Lemberg <wl@gnu.org>
1325
1326 [autofit] Fix segment classification for blue zones.
1327
1328 The old code (essentially unchanged since the very beginning)
1329 incorrectly handled this configuration
1330
1331 x -o- x
1332 / \
1333 / \
1334 / \
1335 o o
1336
1337 as flat and this
1338
1339 o o
1340 / /
1341 x| x|
1342 | |
1343 o---------------o
1344
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02001345 as round. (`o' and `x' are on and off points, respectively).
Werner Lemberg05c14212013-07-19 23:11:23 +02001346
1347 This is a major change which should improve the rendering results
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02001348 enormously for many TrueType fonts, especially in the range approx.
Werner Lemberg05c14212013-07-19 23:11:23 +02001349 20-40ppem, fixing the appearance of many overshoots.
1350
1351 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Look at the
1352 first and last points of the segment, not the points right before
1353 and after.
1354
13552013-07-19 Behdad Esfahbod <behdad@google.com>
Werner Lemberg01705392013-07-18 13:13:12 +02001356
Behdad Esfahbod778a7e62013-07-19 14:28:28 +02001357 [sfnt] `sbix' fix-ups.
1358
1359 * src/sfnt/sfobjs.c (sfnt_load_face): Apple's `sbix' color bitmaps
1360 are rendered scaled and then the `glyf' outline rendered on top. We
1361 don't support that yet, so just ignore the `glyf' outline and
1362 advertise it as a bitmap-only font.
1363
1364 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
1365 [TT_SBIT_TABLE_TYPE_SBIX]: Return metrics in 26.6 units.
1366 (tt_face_load_sbix_image): Typo.
1367
13682013-07-18 Behdad Esfahbod <behdad@google.com>
1369
Werner Lemberg01705392013-07-18 13:13:12 +02001370 [sfnt] Add support for Apple's `sbix' color bitmap table.
1371
1372 * include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen
1373 fields to FT_Short and FT_UShort, respectively.
1374 (TT_SBitTableType): New enumeration.
1375 (TT_FaceRec): Add `sbit_table_type' field.
1376
1377 * include/freetype/tttags.h (TTAG_sbix): New macro.
1378
1379 * src/sfnt/pngshim.c (Load_SBit_Png): Pass a more generic
1380 FT_GlyphSlot argument instead FT_Bitmap.
1381 Add flag to control map and metrics handling.
1382 Update all users.
1383
1384 * src/sfnt/ttsbit.c: Include `ttmtx.h'.
1385 (tt_face_load_eblc): Renamed to...
1386 (tt_face_load_sbit): This.
1387 Handlic `sbix' bitmaps.
1388 (tt_face_free_eblc): Renamed to...
1389 (tt_face_load_sbit): This.
1390 Updated.
1391 (tt_face_load_strike_metrics): Handle `sbix' bitmaps.
1392 (tt_face_load_sbix_image): New function.
1393 (tt_sbit_decoder_alloc_bitmap, tt_sbit_decoder_load_image,
1394 tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
1395 tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
1396 tt_sbit_decoder_load_image, tt_sbit_decoder_load_bitmap): Don't pass
1397 and handle load flags.
1398 (tt_sbit_decoder_load_bitmap) [!FT_CONFIG_OPTION_USE_PNG]: Better
1399 handle formats 17-19.
1400 Move color to grayscale conversion to...
1401 (tt_face_load_sbit_image): Here.
1402 Handle `sbix' bitmaps.
1403
1404 * src/sfnt/pngshim.h: Updated.
1405 * src/sfnt/ttsbit.h: Updated.
1406 * src/sfnt/sfdriver.c: Updated.
1407
Werner Lemberg274207e2013-07-18 12:38:57 +020014082013-07-18 Werner Lemberg <wl@gnu.org>
1409
1410 [sfnt] Ignore invalid magic number in `head' or `bhed'.
1411
1412 Other font engines seem to ignore it also. Problem reported by
1413 Hin-Tak Leung <htl10@users.sourceforge.net>.
1414
1415 * src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if
1416 we have an invalid magic number.
1417
Werner Lemberg9a7951d2013-07-16 15:25:24 +020014182013-07-16 Werner Lemberg <wl@gnu.org>
1419
1420 [smooth] Fix segfault caused by previous commit.
1421
1422 * src/smooth/ftgrays.c (gray_set_cell): Always compute
1423 `ras.invalid'.
1424
David Turnera5f33ee2013-07-16 12:40:03 +020014252013-07-16 David Turner <digit@google.com>
1426
David Turner89929ec2013-07-16 13:36:07 +02001427 [smooth] Improve performance.
1428
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02001429 Provide a work-around for an ARM-specific performance bug in GCC.
David Turner89929ec2013-07-16 13:36:07 +02001430 This speeds up the rasterizer by more than 5%.
1431
1432 Also slightly optimize `set_gray_cell' and `gray_record_cell' (which
1433 also improves performance on other platforms by a tiny bit (<1%).
1434
1435 * src/smooth/ftgrays.c (FT_DIV_MOD): New macro.
1436 Use it where appropriate.
1437
1438 (gray_record_cell, gray_set_cell, gray_move_to,
1439 gray_convert_glyph_inner): Streamline condition handling.
1440
14412013-07-16 David Turner <digit@google.com>
1442
David Turnerf66d48e2013-07-16 13:18:00 +02001443 [truetype] Add assembler code for TT_MulFix14 and TT_DotFix14.
1444
1445 This patch provides slightly optimized versions for ARM, x86, and
1446 x86_64 CPUs if built with GCC.
1447
1448 Also remove some dead code.
1449
1450 * src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long,
1451 TT_DotFix14_long_long): New functions.
1452
14532013-07-16 David Turner <digit@google.com>
1454
David Turnerb2890882013-07-16 12:52:18 +02001455 Optimize FT_MulFix for x86_64 GCC builds.
1456
1457 This patch provides an optimized `FT_MulFix' implementation for
1458 x86_64 machines when FreeType is built with GCC, or compatible
1459 compilers like Clang.
1460
1461 Example:
1462 bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf
1463
1464 Before:
1465
1466 Load 4.863 us/op
1467 Load_Advances (Normal) 4.816 us/op
1468 Load_Advances (Fast) 0.028 us/op
1469 Render 2.753 us/op
1470 Get_Glyph 0.463 us/op
1471 Get_CBox 0.077 us/op
1472 Get_Char_Index 0.023 us/op
1473 Iterate CMap 13.898 us/op
1474 New_Face 12.368 us/op
1475 Embolden 0.028 us/op
1476 Get_BBox 0.302 us/op
1477
1478 After:
1479
1480 Load 4.617 us/op
1481 Load_Advances (Normal) 4.645 us/op
1482 Load_Advances (Fast) 0.027 us/op
1483 Render 2.789 us/op
1484 Get_Glyph 0.460 us/op
1485 Get_CBox 0.077 us/op
1486 Get_Char_Index 0.024 us/op
1487 Iterate CMap 13.403 us/op
1488 New_Face 12.278 us/op
1489 Embolden 0.028 us/op
1490 Get_BBox 0.301 us/op
1491
1492 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
1493 (FT_MulFix_x86_64): New function.
1494
14952013-07-16 David Turner <digit@google.com>
1496
David Turnera5f33ee2013-07-16 12:40:03 +02001497 Speed up ARMv7 support.
1498
1499 When building for ARMv7 with thumb2 instructions, the optimized
1500 `FT_MulFix_arm' assembly routine was not being used.
1501
1502 The reason for this is in the `ftconfig.h' header, namely:
1503
1504 - The assembly routine uses the `smull' instruction which is not
1505 available when generating Thumb-1 machine code. It is available
1506 in Thumb-2 mode, though.
1507
1508 - The header was written a long time ago before Thumb-2 became
1509 widely popular (e.g. with Android). So it simply doesn't use the
1510 assembly routine if the `__thumb__' built-in macro is defined.
1511
1512 - When compiling in Thumb-2 mode, the compiler will define both
1513 `__thumb__' and `__thumb2__'.
1514
1515 By checking for `(__thumb2__ || !__thumb__)', we ensure that the
1516 assembly routine is only avoided when generating Thumb-1 code.
1517
1518 Given that this is performance-sensitive function, this improves
1519 `ftbench' as follows on a Galaxy Nexus:
1520
1521 Before (us/op) After (us/op)
1522
1523 - loading Arial.ttf glyphs at 14 ppem [1]
1524
1525 Load 34.285 33.098
1526
1527 - same operation with the light auto-hinter [2]
1528
1529 Load 31.317 29.590
1530
1531 - same operation without hinting [3]
1532
1533 Load 6.143 5.376
1534
1535 - loading Arial.ttf advances at 14 ppem [4]
1536
1537 Load_Advances (normal) 34.216 33.016
1538 Load_Advances (fast) 0.176 0.176
1539
1540 [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
1541 [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
1542 [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
1543 [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf
1544
1545 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
1546 (FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.
1547
Werner Lemberge12fc772013-06-28 07:57:32 +020015482013-06-28 Werner Lemberg <wl@gnu.org>
1549
1550 * docs/CHANGES: Updated.
1551
Werner Lemberg680c1d42013-06-27 17:21:59 +020015522013-06-27 Werner Lemberg <wl@gnu.org>
1553
1554 * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard.
1555
Werner Lembergc7cc9eb2013-06-25 07:24:02 +020015562013-06-25 Werner Lemberg <wl@gnu.org>
1557
Werner Lembergb8850fc2013-06-26 12:22:10 +02001558 [cff] Add darkening limit to `darkening-parameters'.
1559
1560 * src/cff/cffdrivr.c (cff_property_set): Add check.
1561
15622013-06-25 Werner Lemberg <wl@gnu.org>
1563
Werner Lemberg89ca1fd2013-06-25 23:28:02 +02001564 [cff] Add `darkening-parameters' property.
1565
1566 * include/freetype/ftcffdrv.h: Document it.
1567
1568 * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
1569 `darkening-parameters' property.
1570
1571 * src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array.
1572
1573 * src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams'
1574 argument and use it.
1575 Update all callers.
1576
1577 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy
1578 `darken_params' values.
1579
1580 * src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array.
1581
1582 * src/cff/cffobjs.c (cff_driver_init): Set default values for
1583 `darken_params'.
1584
15852013-06-25 Werner Lemberg <wl@gnu.org>
1586
Werner Lembergfad93262013-06-25 10:41:37 +02001587 [docmaker] Code shuffling.
1588
1589 * src/tools/docmaker/tohtml.py (re_url): Move regexp...
1590 * src/tools/docmaker/sources.py: ... to this file.
1591
15922013-06-25 Werner Lemberg <wl@gnu.org>
1593
Werner Lemberg8bdc4072013-06-25 10:20:53 +02001594 [docmaker] Remove unused functions.
1595
1596 * src/tools/docmaker/content.py (DocMarkup.get_start,
1597 DocBlock.get_markup_name): Removed.
1598 * src/tools/docmaker/tohtml.py (html_quote0, dump_html_code,
1599 HtmlFormatter.make_html_words): Removed.
1600
16012013-06-25 Werner Lemberg <wl@gnu.org>
1602
Werner Lembergffb8b472013-06-25 09:09:30 +02001603 * builds/freetype.mk (dll): Remove target.
1604
1605 Problem reported by Jörg Günnewig <joerg.guennewig@googlemail.com>.
1606
16072013-06-25 Werner Lemberg <wl@gnu.org>
1608
Werner Lembergc7cc9eb2013-06-25 07:24:02 +02001609 [docmaker] Recognise URLs.
1610
1611 * src/tools/docmaker/tohtml.py (re_url): New regular expression.
1612 (make_html_para): Use it.
1613
Werner Lemberg25b7da52013-06-19 10:23:36 +020016142013-06-19 Werner Lemberg <wl@gnu.org>
1615
Werner Lembergfe4f5712013-06-19 23:27:47 +02001616 * Version 2.5.0.1 released.
1617 ===========================
1618
1619
1620 Tag sources with `VER-2-5-0-1'.
1621
1622 * include/freetype/config/ftoption.h: Undefine
1623 CFF_CONFIG_OPTION_OLD_ENGINE.
1624 * devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE.
1625
16262013-06-19 Werner Lemberg <wl@gnu.org>
1627
Werner Lemberg609f0ca2013-06-19 14:41:47 +02001628 * builds/unix/install.mk (install): Don't create `cache' directory.
1629
1630 Found by Peter Breitenlohner <peb@mppmu.mpg.de>.
1631
16322013-06-19 Werner Lemberg <wl@gnu.org>
1633
Werner Lemberg25b7da52013-06-19 10:23:36 +02001634 * Version 2.5.0 released.
1635 =========================
1636
1637
1638 Tag sources with `VER-2-5-0'.
1639
1640 * docs/VERSION.DLL: Update documentation and bump version number to
1641 2.5.0.
1642
1643 * README, Jamfile (RefDoc),
1644 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
1645 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
1646 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
1647 builds/win32/visualc/freetype.dsp,
1648 builds/win32/visualc/freetype.vcproj,
1649 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
1650 builds/win32/visualce/freetype.vcproj,
1651 builds/win32/visualce/index.html,
1652 builds/wince/vc2005-ce/freetype.vcproj,
1653 builds/wince/vc2005-ce/index.html,
1654 builds/wince/vc2008-ce/freetype.vcproj,
1655 builds/wince/vc2008-ce/index.html: s/2.4.12/2.5.0/, s/2412/250/.
1656
1657 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 5.
1658 (FREETYPE_PATCH): Set to 0.
1659
1660 * builds/unix/configure.raw (version_info): Set to 16:2:10.
1661
1662 * src/base/ftobjs.c (FT_Open_Face): Pacify compiler.
1663 * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto.
1664
Werner Lembergf56691a2013-06-18 10:17:48 +020016652013-06-18 Werner Lemberg <wl@gnu.org>
1666
1667 Fix Savannah bug #39269.
1668
1669 * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in
1670 case of reacollocation failures.
1671
Andrew Church67cf7a82013-06-18 09:35:34 +020016722013-06-18 Andrew Church <achurch+savannah@achurch.org>
1673
1674 Fix Savannah bug #39266.
1675
1676 If memory allocations fail at certain points while opening a font,
1677 FreeType can either crash due to a NULL dereference or leak memory.
1678
1679 * include/freetype/internal/ftobjs.c (FT_Face_InternalRec,
1680 FT_LibraryRec): Make `refcount' a signed integer. If, for example,
1681 FT_Open_Face() fails in a memory allocation before the face's
1682 reference count is set to 1, a subsequent `FT_Done_Library' call
1683 would otherwise loop over `FT_Done_Face' 2^32 times before freeing
1684 the face.
1685
1686 * src/base/ftobjs.c (open_face): Initialize `stream' and friends
1687 earlier.
1688 (FT_Open_Face) <Fail>: Behave correctly if `node' is NULL.
1689 (FT_Destroy_Module) <Fail>: Check that `renderer_clazz' is valid.
1690
16912013-06-14 Werner Lemberg <wl@gnu.org>
Werner Lembergd7e34442013-06-14 18:33:39 +02001692
1693 * src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC.
1694
Dave Arnoldcb23a622013-06-13 07:46:32 +020016952013-06-06 Dave Arnold <darnold@adobe.com>
1696 Werner Lemberg <wl@gnu.org>
1697
1698 [cff] Add code to Adobe's engine to handle ppem > 2000.
1699
1700 * src/cff/cffgload.c (cff_slot_load): If we get
1701 FT_Err_Glyph_Too_Big, retry unhinted and scale up later on.
1702
Andrew Church67cf7a82013-06-18 09:35:34 +020017032013-06-12 Werner Lemberg <wl@gnu.org>
Werner Lemberg25b6e602013-06-12 11:06:34 +02001704
Werner Lemberg294ce112013-06-12 23:33:11 +02001705 Another try on pragmas.
1706
1707 * include/freetype/internal/ftdebug.h: Move pragmas to...
1708 * include/freetype/internal/internal.h: ... this file since it gets
1709 included by all source files.
1710 * include/freetype/internal/ftserv.h: Remove pragma which has no
1711 effect.
1712
Dave Arnoldcb23a622013-06-13 07:46:32 +020017132013-06-12 Werner Lemberg <wl@gnu.org>
Werner Lemberg294ce112013-06-12 23:33:11 +02001714
Werner Lemberg25b6e602013-06-12 11:06:34 +02001715 * include/freetype/internal/ftdebug.h: Disable MSVC warning C4127.
1716
1717 This partially undoes commit 3f6e0e0c.
1718
Werner Lembergc06889e2013-06-12 10:58:06 +020017192013-06-12 Werner Lemberg <wl@gnu.org>
1720
1721 More compiler warning fixes.
1722
1723 */*: Use cast to `FT_Bool' (or `Bool') where appropriate.
1724
Werner Lemberg99e60d82013-06-10 01:44:37 +020017252013-06-10 Werner Lemberg <wl@gnu.org>
1726
Werner Lemberg5e094c62013-06-10 14:59:21 +02001727 [truetype] Improve handling of broken sbit advance widths.
1728
1729 * src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled)
1730 `linearHoriAdvance' if the sbit's `horiAdvance' value is zero.
1731
1732 Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem.
1733
17342013-06-10 Werner Lemberg <wl@gnu.org>
1735
Werner Lemberga25ecfd2013-06-10 12:57:16 +02001736 [sfnt] Improve embedded bitmap tracing.
1737
1738 * src/base/ftobjs.c (FT_Request_Size): Move trace message regarding
1739 bitmap strike match to...
1740 (FT_Match_Size): This function.
1741
1742 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics,
1743 tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
1744 tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
1745 tt_sbit_decoder_load_image): Decorate with tracing messages.
1746
17472013-06-10 Werner Lemberg <wl@gnu.org>
1748
Werner Lemberg99e60d82013-06-10 01:44:37 +02001749 Fix Savannah bug #39160.
1750
1751 * src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too
1752 for the degenerate case.
1753
Werner Lemberg2ba871b2013-06-09 08:20:54 +020017542013-06-09 David Turner <digit@google.com>
1755
1756 * src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush.
1757
1758 This code, present since eight(!) years in the unused `CACHE'
1759 branch, has been forgotten to apply to the master branch. It's
1760 really amazing that noone has ever complained since
1761 `FTC_Manager_Reset' is pretty useless without flushing the cache.
1762
Werner Lemberg85fd84b2013-06-07 17:10:21 +020017632013-06-07 Werner Lemberg <wl@gnu.org>
1764
Werner Lemberg3f6e0e02013-06-07 18:10:40 +02001765 Add and improve pragmas for MSVC compiler.
1766
1767 * include/freetype/internal/ftdebug.h: Remove pragmas.
1768 * include/freetype/internal/ftserv.h: Use push and pop for pragmas.
1769 * include/freetype/internal/ftvalid.h: Handle warning C4324.
1770 * src/base/ftobjs.c: Use push and pop for pragmas.
1771 * src/gzip/ftgzip.c: Handle warning C4244.
1772
17732013-06-07 Werner Lemberg <wl@gnu.org>
1774
Werner Lemberg85fd84b2013-06-07 17:10:21 +02001775 [cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/.
1776
1777 * src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it.
1778
Werner Lemberg4447b2c2013-06-06 21:28:36 +020017792013-06-06 Dave Arnold <darnold@adobe.com>
1780
1781 [cff] Add early exit feature for width-only calls.
1782
1783 This is for `FT_Get_Advance'.
1784
1785 There are 7 places where the spec says the width can be defined:
1786
1787 hstem/hstemhm
1788 vstem/vstemhm
1789 cntrmask/hintmask
1790 hmoveto
1791 vmoveto
1792 rmoveto
1793 endchar
1794
1795 * src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls,
1796 if possible.
1797
1798 (cf2_interpT2CharString) <cf2_cmdHSTEM>, <cf2_cmdVSTEM>,
1799 <cf2_cmdVMOVETO>, <cf2_cmdENDCHAR>, <cf2_cmdHINTMASK>,
1800 <cf2_cmdRMOVETO>, <cf2_cmdHMOVETO>: Exit early for width-only calls.
1801
Werner Lembergbadf3172013-06-06 09:16:38 +020018022013-06-06 Werner Lemberg <wl@gnu.org>
1803
1804 Next round of compiler fixes.
1805
1806 * builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init):
1807 Add proper cast.
1808
1809 * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix
1810 cast.
1811 * include/freetype/internal/ftstream.h: Decorate stream and frame
1812 macros with `FT_Long' and `FT_ULong' as appropriate.
1813
1814 * src/base/ftrfork.c (raccess_guess_darwin_hfsplus,
1815 raccess_guess_darwin_newvfs): Use cast.
1816
1817 * src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast.
1818
1819 * src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast.
1820 * src/cache/ftcmanag.h (FTC_ManagerRec): Ditto.
1821
1822 * src/cff/cf2arrst.c (cf2_arrstack_setNum_Elements): Use cast.
1823 * src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto.
1824 * src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto.
1825
1826 * src/cid/cidparse.c (cid_parser_new): Use cast.
1827
1828 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast.
1829
1830 * src/psaux/psobjs.c (reallocate_t1_table): Fix argument type.
1831
1832 * src/raster/ftraster.c (ft_black_reset): Use cast.
1833
1834 * src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast.
1835 (ALL_POINTS): Fix cast.
1836
1837 * src/type1/t1driver.c (t1_ps_get_font_value): Add casts.
1838 * src/type1/t1parse.c (T1_Get_Private_Dict): Add cast.
1839
Dave Arnoldc3782492013-06-05 19:57:55 +020018402013-06-05 Dave Arnold <darnold@adobe.com>
1841
1842 Fix more MSVC Win32 compiler warnings.
1843
1844 * src/base/ftobjs.c: Fix typo in MS pragma.
1845
1846 * src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
1847 `lineno' is only used in debug mode.
1848
1849 * src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in
1850 debug mode.
1851
Werner Lemberg45392b72013-06-05 13:43:20 +020018522013-06-05 Werner Lemberg <wl@gnu.org>
1853
1854 Fix compiler warnings.
1855
1856 * include/freetype/internal/ftmemory.h: Decorate memory allocation
1857 macros with `FT_Long' where appropriate.
1858 Remove duplicate of FT_MEM_QRENEW_ARRAY definition.
1859
1860 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
1861 cast.
1862
1863 * src/base/ftobjs.c: Add warning disabling pragma for MSVC while
1864 including `md5.c'.
1865
1866 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdESC>: Add
1867 cast.
1868
1869 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts.
1870 (tt_sbit_decoder_load_bitmap): Beautification.
1871
1872 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize
1873 variables (earlier).
1874
1875 * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler.
1876
1877 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants
1878 where appropriate.
1879
1880 * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
1881
Werner Lembergdc624ca2013-06-04 10:30:48 +020018822013-06-04 Werner Lemberg <wl@gnu.org>
1883
Werner Lembergd9634982013-06-04 20:18:57 +02001884 * src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'.
1885
1886 Problem reported by Ingmar Sittl <ingmar.sittl@elektrobit.com>.
1887
18882013-06-04 Werner Lemberg <wl@gnu.org>
1889
Werner Lembergdc624ca2013-06-04 10:30:48 +02001890 Apply fixes for cppcheck nitpicks.
1891
1892 http://cppcheck.sourceforge.net/
1893
Werner Lemberg8d8508e2013-06-04 13:09:01 +02001894 The call was (from the top-level of the FreeType tree):
1895
1896 cppcheck --force \
1897 --enable=all \
1898 -I include \
1899 -I include/freetype/ \
1900 -I include/freetype/config/ \
1901 -I include/freetype/internal/ \
1902 . &> cppcheck.log
1903
Werner Lembergdc624ca2013-06-04 10:30:48 +02001904 Note that the current version heavily chokes on FreeType, delivering
Werner Lemberg8d8508e2013-06-04 13:09:01 +02001905 many wrong results. I will report those issues to the cppcheck team
Werner Lembergdc624ca2013-06-04 10:30:48 +02001906 so that a newer version gives improved results hopefully.
1907
1908 */* Improve variable scopes.
1909 */* Remove redundant initializations which get overwritten.
1910
Werner Lemberge8ed2d62013-08-01 12:20:20 +02001911 * src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable):
Werner Lembergdc624ca2013-06-04 10:30:48 +02001912 Remove unused variable.
1913
1914 * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero.
1915
1916 * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate):
1917 Remove functionless code.
1918
1919 * src/tools/ftrandom.c (main): Fix memory leak.
1920
Werner Lemberg2429dc32013-06-03 12:41:58 +020019212013-06-03 Werner Lemberg <wl@gnu.org>
1922
1923 Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option.
1924
1925 This controls whether the old FreeType CFF engine gets compiled into
1926 FreeType. It is now disabled by default.
1927
1928 * devel/ftoption.h, include/freetype/config/ftoption.h
1929 (CFF_CONFIG_OPTION_OLD_ENGINE): New macro.
1930
1931 * src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c
1932 (CFF_Operator, cff_argument_counts, cff_builder_add_point,
1933 cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load),
1934 src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use
1935 CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code.
1936
1937 * docs/CHANGES: Updated.
1938
Werner Lembergf9cceeb2013-06-02 23:38:13 +020019392013-06-02 Werner Lemberg <wl@gnu.org>
1940
1941 Fix PNG library handling.
1942
1943 * builds/unix/configure.raw: Don't use LIBPNG_LIBS but
1944 LIBPNG_LDFLAGS.
1945
Behdad Esfahbod760d3422013-05-29 11:36:18 +020019462013-05-23 Behdad Esfahbod <behdad@google.com>
1947
1948 Add support for color embedded bitmaps (eg. color emoji).
1949
1950 A new load flag, FT_LOAD_COLOR, makes FreeType load color
1951 embedded-bitmaps, following this draft specification
1952
1953 https://color-emoji.googlecode.com/git/specification/v1.html
1954
1955 which defines two new SFNT tables, `CBDT' and `CBLC' (named and
1956 modeled after `EBDT' and `EBLC', respectively). The color bitmaps
1957 are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA
1958 pre-multiplied sRGB images. If PNG support is available, PNG color
1959 images as defined in the same proposed specification are supported
1960 also.
1961
1962 Note that color bitmaps are converted to grayscale if client didn't
1963 ask for color.
1964
1965 * builds/unix/configure.raw: Search for libpng.
1966 Add `--without-png' option.
1967
1968 * devel/ftoption.h, include/freetype/config/ftoption.h
1969 (FT_CONFIG_OPTION_USE_PNG): New macro.
1970
1971 * include/freetype/freetype.h (FT_LOAD_COLOR): New load flag.
1972
1973 * include/freetype/ftimage.h (FT_Pixel_Mode): Add
1974 `FT_PIXEL_MODE_BGRA'.
1975
1976 * include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags.
1977
1978 * src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated.
1979 (ft_gray_for_premultiplied_srgb_bgra): New function.
1980 (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA.
1981
1982 * src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files.
1983
1984 * src/sfnt/sfnt.c: Include `pngshim.c'.
1985
1986 * src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h'
1987 (tt_face_load_eblc): Load `CBLC'.
1988 (tt_sbit_decoder_init): Load `CBDT'.
1989 (tt_sbit_decoder_alloc_bitmap): Pass load flags to select between
1990 color and grayscale bitmaps.
1991 Set `num_grays'. This is used by `ftview' to choose the blending
1992 algorithm.
1993 (tt_sbit_decoder_load_byte_aligned,
1994 tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound,
1995 tt_sbit_decoder_load_image): Pass load flag.
1996 s/write/pwrite/.
1997 Don't call `tt_sbit_decoder_alloc_bitmap'.
1998 Updated.
1999 (tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function.
2000 (tt_sbit_decoder_load_bitmap): Pass load flag.
2001 Handle new glyph formats 17, 18, and 19.
2002 Call `tt_sbit_decoder_alloc_bitmap'.
2003 Flatten color bitmaps if necessary.
2004 (tt_face_load_sbit_image): Updated.
2005
2006 * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'.
2007
2008 * docs/CHANGES: Updated.
2009
Guenter41e44802013-05-24 11:38:09 +020020102013-05-24 Guenter <info@gknw.net>
2011
2012 Apply Savannah patch #8055.
2013
2014 Make `apinames' create an import file for NetWare.
2015
2016 * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2.
2017 (OutputFormat): Add `OUTPUT_NETWARE_IMP'.
2018 (names_dump): Handle it.
2019 (usage): Updated.
2020 (main): Handle new command line flag `-wN'.
2021
Behdad Esfahbod2d6e1fb2013-05-23 08:01:20 +020020222013-05-23 Behdad Esfahbod <behdad@behdad.org>
2023
2024 Compilation fix.
2025
2026 * src/truetype/ttinterp.c (TT_RunIns)
2027 [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work.
2028
Infinality18f35ed2013-05-21 20:51:15 -050020292013-05-22 Infinality <infinality@infinality.net>
2030
Infinality3c783c12013-05-21 21:03:00 -05002031 [truetype] Formatting and an additional subpixel tweak.
2032
2033 * src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix.
2034 * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules):
2035 Revert previous modification for Verdana clones.
2036
20372013-05-22 Infinality <infinality@infinality.net>
2038
Infinality18f35ed2013-05-21 20:51:15 -05002039 [truetype] Adjust subpixel zp2 moves and tweak rules.
2040
2041 These modifications fix thin diagonal stems in some legacy fonts.
2042
2043 * src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro.
2044 (Move_Zp2_Point): Don't always disable x moves for subpixel rendering.
2045 (Ins_SHP): Disable x moves here for subpixel rendering.
2046 (Ins_SHPIX): Only disable x moves in compatibility mode.
2047 Split out zp2 move reversals and reorder conditional respectively.
2048
2049 * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight.
2050 Only adjust Verdana clones for 17 ppem.
2051 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New.
2052 (ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'.
2053
Infinality63bfa832013-05-20 07:38:21 +020020542013-05-20 Infinality <infinality@infinality.net>
2055
2056 [truetype] Simplify and improve subpixel function detection.
2057
2058 Some small enhancements have allowed the removal of many macros and
2059 the simplification of existing rules in `ttsubpix.c'.
2060
2061 * src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX,
2062 SPH_TWEAK_ALLOW_X_MOVE_ZP2,
2063 SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES,
2064 SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed.
2065 (SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro.
2066
2067 * src/truetype/ttsubpix.c: Updated affected rules.
2068
2069 * src/truetype/ttinterp.c (Direct_Move_X): Updated.
2070 (INS_FDEF): Add additional function detection.
2071 (INS_ENDF): Set runtime flag.
2072 (Ins_CALL): Skip the call under certain conditions.
2073 Remove bad code.
2074 (Ins_LOOPCALL): Skip the call under certain conditions.
2075 Remove bad code.
2076 (Move_Zp2_Point): Updated.
2077 (Ins_SHPIX): Updated.
2078 Skip the move under some situations.
2079 (Ins_MIAP): Improve conditions.
2080 (Ins_MIRP): Updated.
2081 (Ins_DELTAP): Skip move under certain conditions.
2082 Simplify conditions.
2083 (TT_RunIns): Updated.
2084 Add code to handle new function detection.
2085 Trace messages.
2086
Werner Lembergfd664692013-05-17 17:40:27 +020020872013-05-17 Werner Lemberg <wl@gnu.org>
2088
2089 Update more FT_Err_XXX macros using FT_ERR and FT_THROW;
2090
2091 * builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c,
2092 builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it.
2093
Werner Lembergf04951a2013-05-17 13:51:07 +020020942013-05-15 Werner Lemberg <wl@gnu.org>
2095
2096 [truetype] Add `interpreter-version' property.
2097
2098 This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable
2099 at runtime.
2100
Werner Lemberg27991332013-05-17 14:00:26 +02002101 * include/freetype/ftttdrv.h: New file.
2102
2103 * include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New
2104 macro.
2105
Werner Lembergf04951a2013-05-17 13:51:07 +02002106 * src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H.
2107 (tt_property_set, tt_property_get): Fill templates.
2108
2109 * src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version'
2110 member.
2111 Remove unused `extension_component' member.
2112
2113 * src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H.
2114 (tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph,
2115 compute_glyph_metrics, tt_loader_init): Use `interpreter_version'.
2116
2117 * src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H.
2118 (SUBPIXEL_HINTING): New macro to check `interpreter_version' flag.
2119 Update all affected functions to use it.
2120 Use TT_INTERPRETER_VERSION_XXX where appropriate.
2121
2122 * src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H.
2123 (tt_driver_init): Initialize `interpreter_version'.
2124
2125 * src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H.
2126 Use TT_INTERPRETER_VERSION_XXX where appropriate.
2127
Werner Lemberg7441dd82013-05-13 09:12:46 +020021282013-05-13 Werner Lemberg <wl@gnu.org>
2129
Werner Lemberg6650be72013-05-13 10:05:29 +02002130 [truetype] Avoid empty source file.
2131
2132 * src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]:
2133 Provide dummy typedef.
2134
21352013-05-13 Werner Lemberg <wl@gnu.org>
2136
Werner Lemberg7441dd82013-05-13 09:12:46 +02002137 * src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable.
2138
2139 Fix suggested by Vaibhav Nagarnaik <vnagarnaik@gmail.com>.
2140
Brian Nixon8d6025c2013-05-13 09:06:42 +020021412013-05-13 Brian Nixon <bnixon@yahoo.com>
2142
2143 Fix Savannah bug #38970.
2144
2145 * src/base/ftdebug.c, builds/win32/ftdebug.c,
2146 builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c
2147 (ft_debug_init): Don't read past the environment variable FT2_DEBUG.
2148
Werner Lembergd51ac9c2013-05-12 06:00:27 +020021492013-05-12 Werner Lemberg <wl@gnu.org>
2150
Werner Lembergcd888752013-05-12 15:08:57 +02002151 [truetype] Add framework for TrueType properties.
2152
2153 * src/truetype/ttdrivr.c: Include FT_SERVICE_PROPERTIES_H.
2154 (tt_property_set, tt_property_get): New functions, still empty.
2155 Define `tt_service_properties' service.
2156 Update `tt_services'.
2157
2158 * src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H.
2159 (TT_SERVICE_PROPERTIES_GET): New macro.
2160 (TTModulePIC): Add `tt_service_properties'.
2161
21622013-05-12 Werner Lemberg <wl@gnu.org>
2163
Werner Lembergb112fa42013-05-12 07:29:04 +02002164 Fix Savannah bug #38967.
2165
2166 * src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast.
2167
21682013-05-12 Werner Lemberg <wl@gnu.org>
2169
Werner Lembergcbcf33d2013-05-12 07:27:48 +02002170 Introduce unsigned 64bit type (if available).
2171
2172 * include/freetype/config/ftconfig.h: Define FT_UINT64 if available.
2173 [FT_LONG64]: Provide FT_UInt64.
2174
2175 * builds/unix/ftconfig.in: Synchronized.
2176
21772013-05-12 Werner Lemberg <wl@gnu.org>
2178
Werner Lembergd51ac9c2013-05-12 06:00:27 +02002179 Fix Savannah bug #38968.
2180
2181 * include/freetype/ftmodapi.h: Add `FT_EXPORT' to
2182 FT_Property_{Set,Get}.
2183 * src/base/ftobjs.c: Add `FT_EXPORT_DEF' to
2184 FT_Property_{Set,Get}.
2185
Werner Lembergf6aa0892013-05-10 07:58:47 +020021862013-05-10 Werner Lemberg <wl@gnu.org>
2187
Werner Lembergea2b4752013-05-10 08:04:33 +02002188 [sfnt] Clean up bitmap code.
2189
2190 * src/sfnt/ttsbit.c: Deleted.
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02002191 * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'.
Werner Lembergea2b4752013-05-10 08:04:33 +02002192 * rules.mk (SFNT_DRV_H): Updated.
2193
21942013-05-10 Werner Lemberg <wl@gnu.org>
2195
Werner Lembergf6aa0892013-05-10 07:58:47 +02002196 */* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code.
2197
Werner Lembergccbdc3c2013-05-08 09:17:56 +020021982013-05-08 Werner Lemberg <wl@gnu.org>
2199
Werner Lembergcecf93e2013-05-08 11:39:16 +02002200 * Version 2.4.12 released.
2201 ==========================
2202
2203
2204 Tag sources with `VER-2-4-12'.
2205
2206 * docs/VERSION.DLL: Update documentation and bump version number to
2207 2.4.12.
2208
2209 * README, Jamfile (RefDoc),
2210 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
2211 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
2212 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
2213 builds/win32/visualc/freetype.dsp,
2214 builds/win32/visualc/freetype.vcproj,
2215 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
2216 builds/win32/visualce/freetype.vcproj,
2217 builds/win32/visualce/index.html,
2218 builds/wince/vc2005-ce/freetype.vcproj,
2219 builds/wince/vc2005-ce/index.html,
2220 builds/wince/vc2008-ce/freetype.vcproj,
2221 builds/wince/vc2008-ce/index.html: s/2.4.11/2.4.12/, s/2411/2412/.
2222
2223 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 12.
2224
2225 * builds/unix/configure.raw (version_info): Set to 16:1:10.
2226
22272013-05-08 Werner Lemberg <wl@gnu.org>
2228
Werner Lemberg2688a6c2013-05-08 10:00:49 +02002229 * docs/CHANGES: Updated.
2230
22312013-05-08 Werner Lemberg <wl@gnu.org>
2232
Werner Lembergccbdc3c2013-05-08 09:17:56 +02002233 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Typo.
2234
Werner Lemberg073a0e22013-05-05 10:41:20 +020022352013-05-05 Werner Lemberg <wl@gnu.org>
2236
Werner Lemberg26568612013-05-05 17:50:22 +02002237 Synchronize `ftconfig.h'.
2238
2239 * builds/unix/ftconfig.in: Updated.
2240
22412013-05-05 Werner Lemberg <wl@gnu.org>
2242
Werner Lembergdd192ef2013-05-05 16:13:01 +02002243 Fix compilation with C++.
2244
2245 * src/base/md5.c (body): Use proper cast.
2246
22472013-05-05 Werner Lemberg <wl@gnu.org>
2248
Werner Lembergd135e272013-05-05 10:44:21 +02002249 Fix 64bit compilation issues.
2250
2251 * include/freetype/config/ftconfig.h [FT_LONG64]: Typedef
2252 `FT_Int64' here.
2253
2254 * src/base/ftcalc.c: Remove typedef of `FT_Int64'.
2255 (FT_DivFix): Fix cast.
2256 * src/base/fttrigon.c: Remove typedef of `FT_Int64'.
2257
22582013-05-05 Werner Lemberg <wl@gnu.org>
2259
Werner Lemberg073a0e22013-05-05 10:41:20 +02002260 [raster] Fix clang issues.
2261
2262 Fix suggested by <octoploid@yandex.com>.
2263
2264 * src/raster/ftraster.c (ULong): New typedef.
2265 (SCALED): Add proper cast.
2266
Werner Lembergafaeeee2013-05-04 14:05:24 +020022672013-05-04 Werner Lemberg <wl@gnu.org>
2268
Werner Lemberge6e83622013-05-04 18:57:56 +02002269 Fix clang fixes.
2270
2271 * src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate): Use
2272 correct types.
2273
2274 * src/cff/cf2intrp.c (cf2_interpT2CharString) <default>: Force
2275 unsigned for computations.
2276 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Ditto.
2277 * src/cff/cffparse.c (cff_parse_integer): Ditto.
2278
2279 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
2280
22812013-05-04 Werner Lemberg <wl@gnu.org>
2282
Werner Lemberg77c39b12013-05-04 18:04:07 +02002283 [cff] Make Adobe CFF engine work correctly on 64bit hosts.
2284
2285 Reported by numerous people on the `freetype-devel' list. Without
2286 this fix, glyphs aren't properly aligned on a common baseline.
2287
2288 On 64bit systems, `FT_Pos' expands to `long int', having a width of
2289 64bit. `CF2_Fixed' expands to `int' which is normally 32bit wide on
2290 64bit hosts also. Wrong casts filled up the blues arrays with
2291 incorrect values. Note that all blues values are accessed with the
2292 `cf2_blueToFixed' macro which handles the 64bit to 32bit conversion.
2293
2294 * src/cff/cf2ft.h (cf2_getBlueValues, cf2_getOtherBlues,
2295 cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Use `FT_Pos' for
2296 `data', not `CF2_Fixed'.
2297 * src/cff/cf2ft.c (cf2_getBlueValues, cf2_getOtherBlues,
2298 cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Updated.
2299 * src/cff/cf2blues.c (cf2_blues_init): Updated.
2300
23012013-05-04 Werner Lemberg <wl@gnu.org>
2302
Werner Lemberg94152812013-05-04 16:40:12 +02002303 More fixes for clang's `sanitize' feature.
2304
2305 * src/base/ftcalc.c (FT_DivFix): Use unsigned values for
2306 computations which use the left shift operator and convert to signed
2307 as the last step.
2308 * src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate,
2309 FT_Vector_Length, FT_Vector_Polarize): Ditto.
2310
2311 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Simplify.
2312 * src/cff/cffload.c (cff_subfont_load): Fix constant.
2313 * src/cff/cffparse.c (cff_parse_integer, cff_parse_real, do_fixed,
2314 cff_parse_fixed_dynamic): Use unsigned values for computations which
2315 use the left shift operator and convert to signed as the last step.
2316
2317 * src/cid/cidload.c (cid_get_offset): Ditto.
2318
2319 * src/psaux/psconv.c (PS_Conv_ToFixed): Ditto.
2320 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.
2321
2322 * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14): Ditto.
2323
23242013-05-04 Werner Lemberg <wl@gnu.org>
2325
Werner Lembergafaeeee2013-05-04 14:05:24 +02002326 Fix errors reported by clang's `sanitize' feature.
2327
2328 * include/freetype/internal/ftstream.h: Simplify and fix integer
2329 extraction macros.
2330 (FT_INT8_, FT_BYTE_I16, FT_BYTE_I32, FT_INT8_I16, FT_INT8_I32,
2331 FT_INT8_I32, FT_INT8_U32): Removed.
2332 (FT_PEEK_SHORT, FT_PEEK_LONG, FT_PEEK_OFF3, FT_PEEK_SHORT_LE,
2333 FT_PEEK_LONG_LE, FT_PEEK_OFF3_LE): Use unsigned values for
2334 computations and convert to signed as the last step.
2335
2336 * src/cff/cf2fixed.h (cf2_intToFixed, cf2_fixedToInt,
2337 cf2_fracToFixed): Avoid shifts of negative values.
2338 (cf2_intToFrac, cf2_fixedToFrac, cf2_fixedTo26Dot6): Removed,
2339 unused.
2340
2341 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdEXTENDEDNMBR,
2342 default>: Use unsigned values for computations and convert to signed
2343 as the last step.
2344 Use proper types in tracing messages.
2345
2346 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Use unsigned
2347 values for computation of operands and convert to signed as the last
2348 step.
2349 Use proper type in tracing message.
2350
Werner Lemberg99033fe2013-05-03 17:39:24 +020023512013-05-03 Werner Lemberg <wl@gnu.org>
2352
2353 * src/cff/cf2blues.c: Remove dead code.
2354
23552013-05-02 Chris Liddell <chris.liddell@artifex.com>
Chris Liddell9bf75e02013-05-02 11:09:15 +02002356
2357 * src/cff/cffgload.c: Include FT_CFF_DRIVER_H.
2358
Werner Lemberg689d68e2013-04-27 08:09:35 +020023592013-04-27 Werner Lemberg <wl@gnu.org>
Werner Lemberg234b9872013-04-26 14:10:12 +02002360
2361 * docs/CHANGES: Updated.
Werner Lemberg29f1a922013-04-27 09:46:10 +02002362 * README: Improved.
Werner Lemberg234b9872013-04-26 14:10:12 +02002363
Werner Lemberg06474c32013-04-13 18:53:28 +020023642013-04-13 Werner Lemberg <wl@gnu.org>
2365
2366 [cff] Add a new Type 2 interpreter and hinter.
2367
2368 This work, written by Dave Arnold <darnold@adobe.com> and fully
2369 integrated into FreeType by me, is a donation by Adobe in
2370 collaboration with Google. It is vastly superior to the old CFF
2371 engine, and it will replace it soon. Right now, it is still off by
2372 default, and you have to explicitly select it using the new
2373 `hinting-engine' property of the cff driver.
2374
2375 For convenience, (most of) the new files are committed separately.
2376
2377 * include/freetype/config/ftheader.h (FT_CFF_DRIVER_H): New macro.
2378 * include/freetype/ftcffdrv.h: New file to access CFF driver
2379 properties.
2380 * include/freetype/fterrdef.h (FT_Err_Glyph_Too_Big): New error
2381 code.
2382 * include/freetype/internal/fttrace.h: Add `cf2blues', `cf2hints',
2383 and `cf2interp'.
2384
2385 * src/cff/cffgload.h (CFF_SubFont): New member `current_subfont'.
2386 * src/cff/cffobjs.h (CFF_DriverRec): New members `hinting_engine'
2387 and `no_stem_darkening'.
2388 * src/cff/cfftypes.h (CFF_FontRec): New member `cf2_instance'.
2389
2390 * src/cff/cff.c: Include new files.
2391 * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
2392 `hinting-engine' and `no-stem-darkening' properties (only the Adobe
2393 engine listens to them).
2394 * src/cff/cffgload.c: Include `cf2ft.h'.
2395 (cff_decoder_prepare): Initialize `current_subfont'.
2396 (cff_build_add_point): Handle Adobe engine which uses 16.16
2397 coordinates.
2398 (cff_slot_load): Handle FT_LOAD_NO_SCALE and FT_LOAD_NO_HINTING
2399 separately.
2400 Choose rendering engine based on `hinting_engine' property.
2401 * src/cff/cffload.c (cff_font_done): Call finalizer of the Adobe
2402 engine.
2403 * src/cff/cffobjs.c: Include FT_CFF_DRIVER_H.
2404 (cff_driver_init): Set default property values.
2405
2406 * src/cff/rules.mk (CFF_DRV_SRC, CFF_DRV_H): Add new files.
2407
2408 * src/cff/cf2*.*: New files, containing the Adobe engine.
2409
Werner Lembergfc185ef2013-04-12 19:48:06 +020024102013-04-12 Werner Lemberg <wl@gnu.org>
2411
Werner Lemberg831dac82013-04-12 21:13:49 +02002412 [cff] Minor code administration issues.
2413
2414 * src/cff/cffgload.c (check_points): Rename to...
2415 (cff_check_points): ...this and make it FT_LOCAL.
2416 (cff_builder_add_point, cff_builder_add_point1,
2417 cff_builder_start_point, cff_builder_close_contour,
2418 cff_lookup_glyph_by_stdcharcode, cff_get_glyph_data,
2419 cff_free_glyph_data): Make them FT_LOCAL.
2420
2421 * src/cff/cffgload.h: Updated.
2422
24232013-04-12 Werner Lemberg <wl@gnu.org>
2424
Werner Lemberg2dc26622013-04-12 20:11:38 +02002425 Add output bitmap checksums.
2426
2427 Use `FT2_DEBUG=bitmap:3' for tracing.
2428
2429 * src/base/md5.c, src/base/md5.h: New files, taken from
2430
2431 http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
2432
2433 * include/freetype/internal/fttrace.h: Add `bitmap'.
2434
2435 * src/base/ftobjs.c [FT_DEBUG_LEVEL_TRACE]: Include `md5.c'
2436
2437 (FT_Render_Glyph_Internal) [FT_DEBUG_LEVEL_TRACE]: For tracing,
2438 convert resulting bitmap to a uniform format and compute a checksum.
2439 Use `bitmap' category for the tracing message.
2440
2441 * src/base/rules.mk (BASE_H): Updated.
2442
2443 * docs/LICENSE.TXT: Updated.
2444
24452013-04-12 Werner Lemberg <wl@gnu.org>
2446
Werner Lemberg831dac82013-04-12 21:13:49 +02002447 [cff] Add framework for CFF properties.
Werner Lembergfc185ef2013-04-12 19:48:06 +02002448
2449 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC7):
2450 New macro.
2451
2452 * src/cff/cffdrivr.c: Include FT_SERVICE_PROPERTIES_H.
Werner Lembergcd888752013-05-12 15:08:57 +02002453 (cff_property_set, cff_property_get): New functions, still empty.
Werner Lembergfc185ef2013-04-12 19:48:06 +02002454 Define `cff_service_properties' service.
2455 Update `cff_services'.
2456
2457 * src/cff/cffpic.h: Include FT_SERVICE_PROPERTIES_H.
2458 (CFF_SERVICE_PROPERTIES_GET): New macro.
Werner Lembergcd888752013-05-12 15:08:57 +02002459 (CffModulePIC): Add `cff_service_properties'.
Werner Lembergfc185ef2013-04-12 19:48:06 +02002460
Werner Lemberg04e547b2013-04-03 07:37:56 +020024612013-04-03 Werner Lemberg <wl@gnu.org>
2462
Werner Lemberg831dac82013-04-12 21:13:49 +02002463 [bdf] Fix Savannah bug #38589.
Werner Lemberg04e547b2013-04-03 07:37:56 +02002464
2465 * src/bdf/bdflib.c (_bdf_readstream): Thinko.
2466
Werner Lemberg2f7ccb22013-03-31 09:04:38 +020024672013-03-31 Werner Lemberg <wl@gnu.org>
2468
2469 * configure: Use egrep, not grep.
2470
2471 Problem reported Mojca Miklavec <mojca.miklavec.lists@gmail.com>.
2472
Werner Lemberga7059272013-03-29 19:35:39 +010024732013-03-29 Werner Lemberg <wl@gnu.org>
2474
2475 * include/freetype/ftlcdfil.h: Add description of color filtering.
2476
Werner Lemberg94720c22013-03-29 19:37:49 +01002477 Based on a contribution from Antti S. Lankila <alankila@bel.fi>
2478 (Savannah bug #38607).
Werner Lemberga7059272013-03-29 19:35:39 +01002479
Werner Lembergfbb07732013-03-23 14:06:54 +010024802013-03-23 Werner Lemberg <wl@gnu.org>
2481
2482 [autofit] Minor.
2483
2484 * src/autofit/afmodule.c (af_property_set): Typo.
2485 (af_autofitter_init, af_autofitter_done): Use cast.
2486
Werner Lembergeb624d72013-03-21 22:58:28 +010024872013-03-21 Werner Lemberg <wl@gnu.org>
2488
2489 * configure: Automatically test for `gmake' also.
2490
2491 Suggested by Mojca Miklavec <mojca.miklavec.lists@gmail.com>.
2492
Peter Breitenlohner63463b932013-03-21 19:58:40 +010024932013-03-21 Peter Breitenlohner <peb@mppmu.mpg.de>
2494
2495 Respect CONFIG_SHELL from the environment.
2496
2497 Some large packages using FreeType have to use a broken (deficient)
2498 /bin/sh. The configure scripts (as generated by Autoconf) are
2499 clever enough to find a better shell and put that one into the
2500 environment variable CONFIG_SHELL. If that environment variable is
2501 already set the script skips the test and assumes to be already
2502 running under a good shell.
2503
2504 * builds/unix/detect.mk: Honour CONFIG_SHELL.
2505 * builds/unix/unix-def.in (SHELL): Define.
2506
Werner Lemberg6f1e3452013-03-21 09:00:27 +010025072013-03-21 Werner Lemberg <wl@gnu.org>
2508
2509 Fix Savannah patch #7971.
2510
2511 * configure: Handle MAKE environment variable also.
2512
Werner Lemberg8b4459b2013-03-17 07:44:35 +010025132013-03-17 Werner Lemberg <wl@gnu.org>
2514
Werner Lembergb114b7c2013-03-17 22:42:07 +01002515 Fix Savannah bug #38538.
2516
2517 * builds/amiga/src/base/ftdebug.c, builds/win32/ftdebug.c,
2518 builds/wince/ftdebug.c (FT_Throw): Add function.
2519
25202013-03-17 Werner Lemberg <wl@gnu.org>
2521
Werner Lemberg831dac82013-04-12 21:13:49 +02002522 [raster] Remove dead code.
Werner Lemberg706fc832013-03-17 08:09:17 +01002523
2524 * src/raster/rastpic.c (ft_raster1_renderer_class_pic_init)
2525 src/smooth/ftspic.c (ft_smooth_renderer_class_pic_init): Do it.
2526
25272013-03-17 Werner Lemberg <wl@gnu.org>
2528
Werner Lemberg8b4459b2013-03-17 07:44:35 +01002529 * src/pshinter/pshpic.h (GET_PIC): Use correct container.
2530
Werner Lembergf619abf2013-03-15 08:16:25 +010025312013-03-15 Werner Lemberg <wl@gnu.org>
2532
2533 * include/freetype/ftmoderr.h: Fix commit from 2013-03-11.
2534
2535 The previous version was not backwards compatible. Reported by
2536 Behdad.
2537
Werner Lemberge3c93012013-03-14 11:21:17 +010025382013-03-14 Werner Lemberg <wl@gnu.org>
2539
Werner Lemberg89f50642013-03-14 17:50:49 +01002540 */*: Use FT_ERR_EQ, FT_ERR_NEQ, and FT_ERR where appropriate.
2541
2542 FT_Err_XXX and friends are no longer directly used in the source
2543 code.
2544
25452013-03-14 Werner Lemberg <wl@gnu.org>
2546
Werner Lemberg52339dc2013-03-14 15:49:49 +01002547 New error management macros.
2548
2549 * include/freetype/fterrors.h (FT_ERR_XCAT, FT_ERR_CAT): Move to...
2550 * include/freetype/fttypes.h: ... this file.
2551 (FT_ERR, FT_ERR_EQ, FT_ERR_NEQ, FT_MODERR_EQ, FT_MODERR_NEQ): New
2552 macros.
2553
2554 * include/freetype/freetype.h: Updated.
2555
25562013-03-14 Werner Lemberg <wl@gnu.org>
2557
Werner Lemberge3c93012013-03-14 11:21:17 +01002558 */*: Use FT_Err_Ok only.
2559
2560 This is a purely mechanical conversion.
2561
25622013-03-14 Werner Lemberg <wl@gnu.org>
Werner Lembergc58ce3b2013-03-13 11:06:39 +01002563
Werner Lemberg059bc332013-03-14 10:27:35 +01002564 */*: Use `FT_THROW'.
2565
2566 This is essentially a mechanical conversion, adding inclusion of
2567 `FT_INTERNAL_DEBUG_H' where necessary, and providing the macros for
2568 stand-alone compiling modes of the rasterizer modules.
2569
2570 To convert the remaining occurrences of FT_Err_XXX and friends it is
2571 necessary to rewrite the code. Note, however, that it doesn't harm
2572 if some cases are not handled since FT_THROW is a no-op.
2573
25742013-03-13 Werner Lemberg <wl@gnu.org>
2575
Werner Lembergc58ce3b2013-03-13 11:06:39 +01002576 Introduce `FT_THROW' macro.
2577
2578 The idea is to replace code like
2579
2580 return FT_Err_Foo_Bar;
2581
2582 or
2583
2584 return CFF_Err_Foo_Bar;
2585
2586 with
2587
2588 return FT_THROW( Foo_Bar );
2589
2590 The FT_THROW macro has two functions:
2591
2592 . It hides the module specific prefix.
2593
2594 . In debug mode, it calls the empty function `FT_Throw' which can
2595 be thus used to set a breakpoint.
2596
2597 * include/freetype/internal/ftdebug.h (FT_THROW): New macro.
2598 (FT_Throw): New prototype.
2599 * src/base/ftdebug.c (FT_Throw): New function.
2600
Werner Lembergdbc6e3f2013-03-12 11:42:20 +010026012013-03-12 Werner Lemberg <wl@gnu.org>
2602
2603 Remove `FT_KEEP_ERR_PREFIX'.
2604
2605 The idea is to always have FT_ERR_PREFIX available internally.
2606
2607 * include/freetype/fterrors.h: Use FT2_BUILD_LIBRARY to guard
2608 undefinition of FT_ERR_PREFIX
2609
2610 * src/gxvalid/gxverror.h, src/otvalid/otverror.h,
2611 src/sfnt/sferrors.h: Updated.
2612
Werner Lembergd6bc5242013-03-11 09:50:53 +010026132013-03-11 Werner Lemberg <wl@gnu.org>
2614
Werner Lembergc879f242013-03-11 10:11:57 +01002615 [gxvalid] Fix module error.
2616
2617 * src/gxvalid/gxverror.h (FT_ERR_BASE): Define as
2618 FT_Mod_Err_GXvalid.
2619 * include/freetype/ftmoderr.h: Add module error for `GXvalid'.
2620
26212013-03-11 Werner Lemberg <wl@gnu.org>
2622
Werner Lembergd6bc5242013-03-11 09:50:53 +01002623 Always use module related error codes.
2624
2625 * src/cff/cffobjs.c (cff_face_init), src/type1/t1objs.c
2626 (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Use
2627 `FT_ERROR_BASE'.
2628
2629 * src/type1/t1load.c (parse_encoding): Use
2630 T1_Err_Unknown_File_Format.
2631
Werner Lemberg2d882542013-03-08 21:23:45 +010026322013-03-08 Werner Lemberg <wl@gnu.org>
2633
2634 [cff] Set `linear{Hori,Vert}Advance' for embedded bitmaps also.
2635
Werner Lemberg737bbb02013-03-08 21:25:45 +01002636 Problem reported by Khaled Hosny <khaledhosny@eglug.org>.
2637
Werner Lemberg2d882542013-03-08 21:23:45 +01002638 * src/cff/cffgload.c (cff_slot_load): Implement it.
2639
Alexei Podtelezhnikov2ba18ba2013-02-22 23:58:57 -050026402013-02-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2641
2642 [base] Fix commit ab02d9e8.
2643
2644 * src/base/ftbbox.c (BBox_Cubic_Check): Change scaling to msb of 22.
2645
Alexei Podtelezhnikovf9434db2013-02-19 21:27:18 -050026462013-02-19 Alexei Podtelezhnikov <apodtele@gmail.com>
2647
2648 [base] New bisecting BBox_Cubic_Check (disabled).
2649
2650 * src/base/ftbbox.c (BBox_Cubic_Check): New bisecting algorithm
2651 for extremum search built around simple condition that defines
2652 which half contains the extremum.
2653
Alexei Podtelezhnikov0e536672013-02-18 20:41:56 -050026542013-02-18 Alexei Podtelezhnikov <apodtele@gmail.com>
2655
2656 [tools] Update BBox testing tool.
2657
2658 * src/tools/test_bbox.c: Add another cubic outline with exact BBox.
2659 (REPEAT): Increase the number of benchmarking cycles.
2660 (profile_outline): Tweak output formatting.
2661
Werner Lembergbcca86a2013-02-08 12:49:41 +010026622013-02-02 Werner Lemberg <wl@gnu.org>
2663
2664 Fix Savannah bug #38235.
2665
2666 * builds/unix/configure.raw: Don't generate `freetype-config' and
2667 `freetype.pc'.
2668
2669 * builds/unix/unix-def.in (FT2_EXTRA_LIBS, LIBBZ2, LIBZ,
2670 build_libtool_libs, ft_version): New variables to be substituted.
2671 (freetype-config, freetype.pc): New rules to generate those files.
2672
2673 * builds/unix/freetype-config.in: Remove code for handling `rpath'.
2674 The use of $rpath has been accidentally removed in a patch from
2675 2009-12-22, and apparently noone has missed it since.
2676 Use `%' instead of `@' as a variable substitution marker.
2677 Use quotes.
2678
2679 * builds/unix/freetype.in: Use `%' instead of `@' as a variable
2680 substitution marker.
2681 Use quotes.
2682
Werner Lemberga2c7eb12013-02-07 19:49:12 +010026832013-02-07 Werner Lemberg <wl@gnu.org>
2684
2685 * src/truetype/ttobjs.c (tt_size_run_prep): Reset more GS variables.
2686
2687 BTW, Greg agrees that the OpenType specification is missing the list
2688 of GS variables which will always be reset to the default values
2689 after the `prep' table has been executed.
2690
Werner Lembergbfcc3752013-02-06 08:47:29 +010026912013-02-06 Werner Lemberg <wl@gnu.org>
2692
2693 * src/truetype/ttobjs.c (tt_size_run_prep): Reset reference points.
2694
2695 Up to now, we simply took a snapshot of the Graphics State after the
2696 `prep' table has been executed, and right before a glyph's bytecode
2697 was run it got reloaded. However, as Greg Hitchcock has told us in
2698 private communication, reference points get reset to zero in the MS
2699 rasterizer and we follow in due course. While reasonable, this is
2700 undocumented behaviour.
2701
2702 Most notably, this fixes the rendering of Arial's `x' glyph in
2703 subpixel hinting mode.
2704
Werner Lemberg00dfa332013-02-05 19:23:16 +010027052013-02-05 Werner Lemberg <wl@gnu.org>
2706
2707 [truetype] A better fix for Savannah bug #38211.
2708
2709 * src/truetype/ttinterp.c (Ins_IP): Implement identical behaviour to
2710 MS rasterizer if rp1 == rp2 (confirmed by Greg Hitchcock).
2711
Alexei Podtelezhnikov0eb63162013-02-01 20:24:00 -050027122013-02-01 Alexei Podtelezhnikov <apodtele@gmail.com>
2713
2714 [pcf] Streamline parsing of PCF encoding table.
2715
2716 * src/pcf/pcfread.c (pcf_get_encodings): Use simpler double for-loop.
2717 Reallocate array instead of using temporary storage.
2718
Werner Lemberg40633202013-02-01 12:55:44 +010027192013-02-01 Werner Lemberg <wl@gnu.org>
2720
Werner Lemberg3b1f2062013-02-01 23:45:04 +01002721 Fix Savannah bug #38227.
2722
2723 * builds/unix/freetype-config.in: Set LC_ALL.
2724
27252013-02-01 Werner Lemberg <wl@gnu.org>
2726
Werner Lemberg30f1e6c2013-02-01 14:50:08 +01002727 Fix Savannah bug #38221.
2728
2729 This complements commit 83c0ebab.
2730
2731 * src/base/ftcalc.c (FT_MulDiv_No_Round): Don't enclose with
2732 `TT_USE_BYTECODE_INTERPRETER'.
2733
27342013-02-01 Werner Lemberg <wl@gnu.org>
2735
Werner Lemberg40633202013-02-01 12:55:44 +01002736 [truetype] Fix Savannah bug #38211.
2737
2738 * src/truetype/ttinterp.c (Ins_IP): Make FreeType behave identical
2739 to other interpreters if rp1 == rp2 (which is invalid).
2740
Alexei Podtelezhnikovab02d9e2013-01-28 06:35:19 -050027412013-01-28 Alexei Podtelezhnikov <apodtele@gmail.com>
2742
2743 [base] Small optimization of BBox calculation.
2744
2745 * src/base/ftbbox.c (BBox_Cubic_Check): Use FT_MSB function in
2746 scaling algorithm.
2747
Infinalitya5fe3592013-01-26 12:29:52 -060027482013-01-26 Infinality <infinality@infinality.net>
2749
Infinalityc574d722013-01-26 17:40:44 -06002750 [truetype] Minor formatting fix.
2751
2752 * src/truetype/ttinterp.c: Updated.
2753 (DO_RS): Fix indentation.
2754
27552013-01-26 Infinality <infinality@infinality.net>
2756
Infinality97ba5102013-01-26 17:05:40 -06002757 [truetype] Fix rasterizer_version logic in sph.
2758
2759 * src/truetype/ttsubpix.c: Updated.
2760 (ALWAYS_SKIP_DELTAP_Rules): Remove rule for Trebuchet MS.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002761 (sph_set_tweaks): Fix `rasterizer_version' logic.
Infinality97ba5102013-01-26 17:05:40 -06002762
27632013-01-26 Infinality <infinality@infinality.net>
2764
Infinalitya5fe3592013-01-26 12:29:52 -06002765 [truetype] Align more to ClearType whitepaper for sph.
2766
2767 * include/freetype/internal/tttypes.h (TT_FaceRec): Add flags
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002768 for detected opcode patterns and compatibility mode.
Infinalitya5fe3592013-01-26 12:29:52 -06002769
2770 * src/truetype/ttgload.c (tt_loader_init): Complete conditional.
2771
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002772 * src/truetype/ttinterp.c: Updated.
2773 Remove SPH_DEBUG and replace with FT_TRACE7.
Infinalitya5fe3592013-01-26 12:29:52 -06002774 (DO_RS): More conditions.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002775 (Ins_FDEF): Add more opcode detection patterns.
2776 More specific conditions when flagging an fdef.
2777 Make compatibility mode only turn on when delta fdefs are found.
2778 (Ins_CALL, Ins_LOOPCALL): Set flags for currently executed fdef.
2779 (Ins_SHPIX): Remove logic to handle ttfautohinted fonts.
2780 Simplify conditionals where possible.
2781 Use `&' instead of `%' operator for dumb compilers.
2782 (Ins_MIAP): Adjust twilight zone conditional.
2783 Ensure `ignore_x_mode' is on when testing sph conditionals.
2784 (Ins_MIRP): Ensure `ignore_x_mode' is on when testing sph
2785 conditionals.
2786 Do cvt cutin always when `ignore_x_mode' is active.
2787 Remove test for ttfautohinted fonts.
2788 (Ins_DELTAP): Ensure `ignore_x_mode' is on when testing sph
2789 conditionals.
2790 Do cvt cutin always when `ignore_x_mode' is active.
2791 Remove test for ttfautohinted fonts.
2792 Use `&' instead of `%' operator for dumb compilers.
Infinalitya5fe3592013-01-26 12:29:52 -06002793 (Ins_GETINFO): Remove SPH_DEBUG and replace with FT_TRACE7.
2794
2795 * src/truetype/ttinterp.h: Updated.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002796 (TT_ExecContextRec): Remove compatibility_mode variable.
2797 Add variable to indicate when executing in special fdefs for sph.
Infinalitya5fe3592013-01-26 12:29:52 -06002798
2799 * src/truetype/ttobjs.h: Updated.
2800 (TT_DefRecord): Add flags to identify special fdefs for sph.
2801 (TT_SizeRec): Remove unnecessary ttfautohinted variable.
2802
2803 * src/truetype/ttsubpix.c: Updated.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002804 (COMPATIBILITY_MODE_Rules): Remove all. Auto-detected now.
2805 (PIXEL_HINTING_Rules): Remove all. Unnecessary after fixes.
Infinalitya5fe3592013-01-26 12:29:52 -06002806 (SKIP_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
2807 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Arial Bold `N'.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002808 (SKIP_OFFPIXEL_Y_MOVES_Rules): Remove all. Happens automatically
2809 now.
Infinalitya5fe3592013-01-26 12:29:52 -06002810 (ROUND_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
2811 (ROUND_NONPIXEL_Y_MOVES_Rules_Exceptions): Remove all.
2812 (NORMAL_ROUND_Rules): Remove Verdana.
2813 (NO_DELTAP_AFTER_IUP_Rules): Remove all.
Werner Lemberg6b9034f2013-01-28 13:56:23 +01002814 (sph_set_tweaks): Performance fix. Don't run prep always.
2815 Adjust conditional for sph_compatibility_mode.
Infinalitya5fe3592013-01-26 12:29:52 -06002816
2817 * src/truetype/ttsubpix.h: Add new fdef flags for sph.
2818
Alexei Podtelezhnikov610ee582013-01-25 23:33:00 -050028192013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2820
2821 [base] Fix broken emboldening at small sizes.
2822
2823 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Do not attempt to
2824 normalize zero-length vectors.
2825
Werner Lembergf41ee052013-01-25 16:41:24 +010028262013-01-25 Werner Lemberg <wl@gnu.org>
2827
2828 Fix Savannah bug #38167.
2829
2830 This fixes commit 83c0ebab from 2012-06-27.
2831
2832 * src/truetype/ttinterp.h:
2833 s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.
2834
Xi Wangba931be2013-01-25 00:57:09 +010028352013-01-25 Xi Wang <xi.wang@gmail.com>
2836
2837 [sfnt] Fix broken pointer overflow checks.
2838
2839 Many compilers such as gcc and clang optimize away pointer overflow
Werner Lemberg77c39b12013-05-04 18:04:07 +02002840 checks `p + n < p', because pointer overflow is undefined behavior.
Xi Wangba931be2013-01-25 00:57:09 +01002841 Use a safe form `n > p_limit - p' instead.
2842
2843 Also avoid possible integer overflow issues, for example, using
2844 `num_glyphs > ( p_limit - p ) / 2' rather than `num_glyphs * 2'
2845 given a large `num_glyphs'.
2846
2847 * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Implement it.
2848
Werner Lemberg817caa92013-01-25 00:40:56 +010028492013-01-25 Werner Lemberg <wl@gnu.org>
2850
Xi Wangba931be2013-01-25 00:57:09 +01002851 [base] Fix `make multi'.
Werner Lemberg817caa92013-01-25 00:40:56 +01002852
2853 * src/base/ftoutln.c, src/base/fttrigon.c: Include
2854 FT_INTERNAL_CALC_H.
2855
David 'Digit' Turner72447192013-01-25 00:36:35 +010028562013-01-25 David 'Digit' Turner <digit@google.com>
2857
2858 [truetype] Fix C++ compilation.
2859
2860 * src/truetype/ttsubpix.h: Updated.
2861 (SPH_X_SCALING_RULES_SIZE): Moved and renamed to...
2862 * src/truetype/ttsubpix.c (X_SCALING_RULES_SIZE): This.
2863 (sph_X_SCALING_Rules): Removed.
2864 (scale_test_tweak): Make function static.
2865 (sph_test_tweak_x_scaling): New function.
2866
2867 * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Updated.
2868
Werner Lemberg87dc86d2013-01-24 08:39:43 +010028692013-01-23 Werner Lemberg <wl@gnu.org>
2870
Werner Lemberge9f330a2013-01-24 09:12:56 +01002871 [base] Make `FT_Hypot' really internal.
2872
2873 * include/freetype/fttrigon.h (FT_Hypot): Move to...
2874 * include/freetype/internal/ftcalc.h: This file.
2875
2876 * src/base/fttrigon.c (FT_Hypot): Move to...
2877 * src/base/ftcalc.c: This file.
2878 Include FT_TRIGONOMETRY_H.
2879
2880 * src/truetype/ttgload.c: Don't include FT_TRIGONOMETRY_H.
2881
28822013-01-23 Werner Lemberg <wl@gnu.org>
2883
Werner Lemberg87dc86d2013-01-24 08:39:43 +01002884 [truetype] Revert change from 2013-01-22.
2885
2886 FreeType's `height' value is the baseline-to-baseline distance...
2887
2888 * src/truetype/ttobjs.c (tt_size_reset): Undo.
2889
Alexei Podtelezhnikov869fb8c2013-01-23 19:43:28 -050028902013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2891
Werner Lemberge9f330a2013-01-24 09:12:56 +01002892 [base, truetype] New internal `FT_Hypot' function.
Alexei Podtelezhnikovb6de8e62013-01-23 23:31:41 -05002893
2894 * include/freetype/fttrigon.h (FT_Hypot): Declare it.
2895 * src/base/fttrigon.c (FT_Hypot): Define it.
2896 * src/truetype/ttgload.c (TT_Process_Composite_Component): Use it
2897 instead of explicit expressions.
2898 * src/truetype/ttinterp.c (Current_Ratio, Normalize): Use it instead
2899 of TT_VecLen.
2900 (TT_VecLen): Removed.
2901
29022013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2903
Alexei Podtelezhnikove1a2ac12013-01-23 19:51:28 -05002904 [base] Fix integer overflow.
2905
Alexei Podtelezhnikovda11e5e2013-01-23 20:11:40 -05002906 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Normalize incoming and
2907 outgoing vectors and use fixed point arithmetic.
2908
29092013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2910
2911 [base] Fix integer overflow.
2912
Alexei Podtelezhnikove1a2ac12013-01-23 19:51:28 -05002913 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Scale the
2914 coordinates down to avoid overflow.
2915
29162013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
2917
Alexei Podtelezhnikov869fb8c2013-01-23 19:43:28 -05002918 [base] Split out MSB function.
2919
2920 * src/base/fttrigon.c (ft_trig_prenorm): Borrow from here.
2921 * include/freetype/internal/ftcalc.h (FT_MSB): Declare here.
2922 * src/base/ftcalc.c (FT_MSB): Define here.
2923
Werner Lemberge0469372013-01-22 11:07:07 +010029242013-01-22 Werner Lemberg <wl@gnu.org>
2925
2926 [truetype] Fix font height.
2927
2928 * src/truetype/ttobjs.c (tt_size_reset): The Windows rendering
2929 engine uses rounded values of the ascender and descender to compute
2930 the TrueType font height.
2931
Werner Lembergcd3f8712013-01-16 19:56:08 +010029322013-01-16 Behdad Esfahbod <behdad@behdad.org>
2933
2934 [sfnt] Fix optimized sbit loader.
2935
2936 It was not taking bit_depth into consideration when blitting!
2937
2938 * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_byte_aligned,
2939 * tt_sbit_decoder_load_bit_aligned): Handle bit
2940 depth.
2941
David Turner3a406122013-01-16 19:48:31 +010029422013-01-16 David 'Digit' Turner <digit@google.com>
2943
2944 [truetype] Improve sub-pixel code.
2945
2946 This patches fixes many issues with the ttsubpix implementation.
2947
2948 1. Data tables are defined, instead of declared, in the header, and
2949 thus copied into each source file that includes it.
2950
2951 2. These tables were defined as global, mutable, visible variables,
2952 and thus costing private RAM to every process that loads the
2953 library (> 50 KB / process, this is huge!).
2954
2955 Additionally, this also made the library export the symbols
2956 completely needlessly.
2957
2958 3. Missing `sph_' and `SPH_' prefixes to some of the definitions.
2959
2960 Note that this doesn't try to fix the incredibly inefficient storage
2961 format for the data tables used by the code. This one will require
2962 another pass in the future.
2963
2964 * src/truetype/ttinterp.h (MAX_NAME_SIZE, MAX_CLASS_MEMBERS):
2965 Renamed to...
2966 (SPH_MAX_NAME_SIZE, SPH_MAX_CLASS_MEMBERS): This.
2967 Update all users.
2968
2969 (SPH_TweakRule, SPH_ScaleRule): Decorate with `const' where
2970 appropriate.
2971
2972 (Font_Class): Rename to...
2973 (SPH_Font_Class): This. Decorate with `const' where appropriate.
2974
2975 * src/truetype/ttsubpix.h (scale_test_tweak, sph_test_tweak):
2976 Decorate arguments with `const' where appropriate.
2977
2978 Move font tweaking tables to...
2979
2980 * src/truetype/ttsubpic.c: This file and decorate them with `static'
2981 and `const' where appropriate.
2982
2983 (X_SCALING_Rules, X_SCALING_RULES_SIZE): Renamed to...
2984 (spu_X_SCALING_Rules, SPH_X_SCALING_RULES_SIZE): This.
2985 Update all users.
2986
Alexei Podtelezhnikov081aba32013-01-12 22:36:37 -050029872013-01-12 Alexei Podtelezhnikov <apodtele@gmail.com>
2988
Alexei Podtelezhnikov0e0fdc52013-01-12 23:05:55 -05002989 [truetype] Improve accuracy of normalization of short vectors.
2990
2991 Unit vector components are stored as 2.14 fixed-point numbers. In
2992 order to calculate all 14 bits accurately, a short vector to be
2993 normalized has to be upscaled to at least 14 bits before its length
2994 is calculated. This has been safe since accurate CORDIC algorithms
2995 were adopted.
2996
2997 * src/truetype/ttinterp.c (Normalize): Scale short vectors by 0x4000.
2998
29992013-01-12 Alexei Podtelezhnikov <apodtele@gmail.com>
3000
Alexei Podtelezhnikov081aba32013-01-12 22:36:37 -05003001 [truetype] Kill very old vector normalization hacks.
3002
3003 Back in the days, vector length calculations were not very accurate
3004 and the vector normalization function, Normalize, had to meticulously
3005 correct the errors for long vectors [commit b7ef2b096867]. It was no
3006 longer necessary after accurate CORDIC algorithms were adopted, but
3007 the code remained. It is time to kill it.
3008
3009 * src/truetype/ttinterp.c (Normalize): Remove error compensation.
3010 (TT_VecLen): Remove any mention of old less accurate implementation.
3011
Werner Lemberge4ecce32013-01-11 09:02:22 +010030122013-01-11 Werner Lemberg <wl@gnu.org>
3013
3014 Disable FT_CONFIG_OPTION_OLD_INTERNALS.
3015
3016 After the next release we are going to remove the code completely.
3017
3018 * devel/ftoption.h, include/freetype/config/ftoption.h
3019 (FT_CONFIG_OPTION_OLD_INTERNALS): Comment out.
3020 * docs/CHANGES: Document it.
3021
Alexei Podtelezhnikovad9d5c92013-01-10 22:29:07 -050030222013-01-10 Alexei Podtelezhnikov <apodtele@gmail.com>
3023
3024 [base] Update the overflow protection bit.
3025
Werner Lemberg53c0cb52013-01-11 08:29:22 +01003026 The recent optimizations of CORDIC iterations drastically reduce the
3027 expansion factor. Vector components with MSB of 29 are now safe
3028 from overflow.
Alexei Podtelezhnikovad9d5c92013-01-10 22:29:07 -05003029
3030 * src/base/fttrigon.c (FT_TRIG_SAFE_MSB): New macro.
3031 (ft_trig_prenorm): Use it and remove dead code.
3032
Alexei Podtelezhnikov6b83a362013-01-09 00:25:32 -050030332013-01-09 Alexei Podtelezhnikov <apodtele@gmail.com>
3034
3035 [base, pshinter] Use FT_ABS, FT_MIN, and FT_MAX for readability.
3036
3037 * src/base/ftbbox.c: Updated.
3038 * src/base/ftobjs.c: Updated.
3039 * src/base/fttrigon.c: Updated.
3040 * src/pshinter/pshalgo.c: Updated.
3041 * src/pshinter/pshrec.c: Updated.
3042
Alexei Podtelezhnikov09dbb052013-01-08 23:29:44 -050030432013-01-08 Alexei Podtelezhnikov <apodtele@gmail.com>
3044
3045 [base] Clean up trigonometric core.
3046
3047 * src/base/fttrigon.c: Document the algorithm in a large comment.
3048 (FT_TRIG_COSCALE): Remove macro.
3049 (FT_Tan: Use `FT_TRIG_SCALE' instead.
3050 (FT_Cos, FT_Vector_Unit): Ditto and round the return values.
3051
Alexei Podtelezhnikovb4ac30b2013-01-02 22:21:37 -050030522013-01-02 Alexei Podtelezhnikov <apodtele@gmail.com>
3053
Alexei Podtelezhnikov5dd96572013-01-02 23:45:14 -05003054 [base] Use rounding in CORDIC iterations.
3055
3056 * src/base/fttrigon.c (ft_trig_pseudo_rotate,
3057 ft_trig_pseudo_polarize): Improve accuracy by rounding.
3058
30592013-01-02 Alexei Podtelezhnikov <apodtele@gmail.com>
3060
Alexei Podtelezhnikovb4ac30b2013-01-02 22:21:37 -05003061 [base] Reduce trigonometric algorithms.
3062
3063 After we get within 45 degrees by means of true 90-degree rotations,
3064 we can remove initial 45-degree CORDIC iteration and start from
3065 atan(1/2) pseudorotation, reducing expansion factor thereby.
3066
3067 * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macros.
3068 (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Update.
3069
3070 * src/tools/cordic.py: Bring up to date with trigonometric core.
3071
3072 * docs/CHANGES: Old typo.
3073
30742013-01-02 Alexei Podtelezhnikov <apodtele@gmail.com>
Alexei Podtelezhnikov50e634a2013-01-02 20:31:56 -05003075
3076 * src/pshinter/pshalgo.h: Remove unused code.
3077
Werner Lemberg7d6dc902012-12-27 01:08:24 +010030782012-12-27 Werner Lemberg <wl@gnu.org>
3079
3080 * src/truetype/ttgload.c (tt_loader_init): Add more tracing.
3081
Werner Lemberg2ef0a192012-12-23 21:14:37 +010030822012-12-23 Werner Lemberg <wl@gnu.org>
3083
3084 [type1] Fix handling of /FontBBox in MM fonts.
3085 Problem reported by Del Merritt <del@alum.mit.edu>
3086
3087 If we have
3088
3089 /FontBBox { { 11 12 13 14 15 16 17 18 }
3090 { 21 22 23 24 25 26 27 28 }
3091 { 31 32 33 34 35 36 37 38 }
3092 { 41 42 43 44 45 46 47 48 } }
3093
3094 in the /Blend dictionary, then the first BBox is { 11 21 31 41 },
3095 the second { 12 22 32 42 }, etc.
3096
3097 * include/freetype/internal/psaux.h (T1_FieldType): Add
3098 `T1_FIELD_TYPE_MM_BBOX' (for temporary use).
3099
3100 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
3101 Implement it.
3102
Alexei Podtelezhnikovcbf3fb32012-12-21 14:20:25 -050031032012-12-21 Alexei Podtelezhnikov <apodtele@gmail.com>
3104
3105 * src/tools/cordic.py: Bring up to date with trigonometric core.
3106
Werner Lemberg3ffb8222012-12-21 16:45:27 +010031072012-12-21 Werner Lemberg <wl@gnu.org>
3108
3109 Check parameters of `FT_Outline_New'.
3110 Problem reported by Robin Watts <robin.watts@artifex.com>.
3111
3112 * src/base/ftoutln.c (FT_Outline_New_Internal): Ensure that
3113 `numContours' and `numPoints' fit into FT_Outline's `n_points' and
3114 `n_contours', respectively.
3115
Werner Lembergc6a66b42012-12-20 08:31:56 +010031162012-12-20 Werner Lemberg <wl@gnu.org>
3117
3118 * Version 2.4.11 released.
3119 ==========================
3120
3121
3122 Tag sources with `VER-2-4-11'.
3123
3124 * docs/CHANGES, docs/release: Updated.
3125
3126 * docs/VERSION.DLL: Update documentation and bump version number to
3127 2.4.11.
3128
3129 * README, Jamfile (RefDoc),
3130 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
3131 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
3132 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
3133 builds/win32/visualc/freetype.dsp,
3134 builds/win32/visualc/freetype.vcproj,
3135 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
3136 builds/win32/visualce/freetype.vcproj,
3137 builds/win32/visualce/index.html,
3138 builds/wince/vc2005-ce/freetype.vcproj,
3139 builds/wince/vc2005-ce/index.html,
3140 builds/wince/vc2008-ce/freetype.vcproj,
3141 builds/wince/vc2008-ce/index.html: s/2.4.10/2.4.11/, s/2410/2411/.
3142
Werner Lembergcecf93e2013-05-08 11:39:16 +02003143 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 11.
Werner Lembergc6a66b42012-12-20 08:31:56 +01003144
3145 * builds/unix/configure.raw (version_info): Set to 16:0:10.
3146
3147 * builds/toplevel.mk (dist): Don't include `.mailmap'.
3148
Alexei Podtelezhnikovd7383b72012-12-20 01:03:22 -050031492012-12-20 Alexei Podtelezhnikov <apodtele@gmail.com>
3150
3151 [base] Improve trigonometric core.
3152
3153 FreeType used to rely on a 24-step iteration CORDIC algorithm to
3154 calculate trigonometric functions and rotate vectors. It turns out
3155 that once the vector is in the right half-plane, the initial rotation
3156 by 63 degrees is not necessary. The algorithm is perfectly capable
3157 to converge to any angle starting from the second 45 degree rotation.
3158 This patch removes the first rotation and makes it a 23-step CORDIC
3159 algorithm.
3160
3161 * src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macro
3162 values.
3163 (ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Remove initial
3164 rotation.
3165
Werner Lemberg768590a2012-12-20 06:08:23 +010031662012-12-19 Werner Lemberg <wl@gnu.org>
3167
3168 * src/base/ftobjs.c (ft_property_do): Fix compiler warning.
3169
Alexei Podtelezhnikov06174db2012-12-19 22:46:27 -050031702012-12-19 Alexei Podtelezhnikov <apodtele@gmail.com>
3171
Alexei Podtelezhnikov32fc4162012-12-19 23:05:32 -05003172 * src/base/ftrfork.c (FT_Raccess_Guess): Switch to FT_Int counters.
3173
31742012-12-19 Alexei Podtelezhnikov <apodtele@gmail.com>
3175
Alexei Podtelezhnikov06174db2012-12-19 22:46:27 -05003176 [base] Clean up trigonometric core.
3177
3178 * src/base/fttrrigon.c (ft_trig_pseudo_polarize): Align algorithm
3179 with `ft_trig_pseudo_rotate'.
3180
Infinality1749ae22012-12-18 07:23:09 -060031812012-12-18 Infinality <infinality@infinality.net>
3182
3183 [truetype] Minor performance enhancement.
3184
3185 * src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Use FT_MulFix
3186 instead of FT_MulDiv.
3187
Infinality94b79e72012-12-17 19:17:30 -060031882012-12-17 Infinality <infinality@infinality.net>
3189
3190 [truetype] Remove unusued code and variables.
3191
3192 * src/truetype/ttinterp.c: Updated.
3193 (Ins_FDEF): Remove opcode patterns that are not being used.
3194
Werner Lemberga9f6f852012-12-17 09:08:09 +010031952012-12-16 Werner Lemberg <wl@gnu.org>
3196
3197 Various compiler warning fixes.
3198
3199 * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Use
3200 `logical not' operator instead of negation. The idea is that `~'
3201 returns exactly the data type enforced by the cast to a pointer (be
3202 it 32bit or 64bit or whatever), while a negative integer has not
3203 this flexibility.
3204 * src/cache/ftccmap.c (FTC_CMAP_UNKNOWN): Ditto.
3205 * src/truetype/ttgxvar.c (ALL_POINTS, TT_Get_MM_Var): Ditto.
3206 * src/type/t1load.c (T1_Get_MM_Var): Ditto.
3207 (parse_blend_axis_types): Use cast.
3208 * src/bdf/bdflib.c (_bdf_readstream): Use cast.
3209
Infinality71f242c2012-12-16 19:52:01 -060032102012-12-16 Infinality <infinality@infinality.net>
3211
3212 [truetype] Remove unusued code and variables. Add minor fixes.
3213
3214 * src/truetype/ttsubpix.h: Updated.
3215 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Trebuchet MS.
3216 (ALLOW_X_DMOVEX_Rules): Remove Arial characters.
3217 (ALLOW_X_DMOVE_Rules): Remove Arial characters.
3218 (RASTERIZER_35_Rules): Verdana no longer needs to be here.
3219 (SKIP_IUP_Rules): Formatting fix.
3220 (DELTAP_SKIP_EXAGGERATED_VALUES_Rules): Remove Segoe UI.
3221 (COMPATIBLE_WIDTHS_Rules): Add Monaco and Trebuchet MS.
3222 (X_SCALING_Rules): Add misc. corrective fixes.
3223
3224 * src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Adjust correction
3225 factor for emboldening during scaling.
3226
3227 * src/truetype/ttinterp.h: Updated.
3228 (TT_ExecContextRec): Remove unused variables.
3229
3230 * src/truetype/ttobjs.h: Updated.
3231 (TT_SizeRec): Add ttfautohinted variable.
3232
3233 * src/truetype/ttinterp.c: Updated.
3234 (Ins_FDEF): Rework code to fix bugs and add more detection.
3235 (Ins_CALL): Remove unused code.
3236 (Ins_LOOPCALL): Remove unused code.
3237 (TT_RunIns): Remove unusued code.
3238 (Ins_SHPIX): Add logic to handle ttfautohinted fonts.
3239 (Ins_MIRP): Don't round x in cut-in calculation. Add logic to handle
3240 ttfautohinted fonts.
3241
Werner Lemberga9f6f852012-12-17 09:08:09 +010032422012-12-16 Werner Lemberg <wl@gnu.org>
Werner Lemberg309b8b32012-12-16 19:08:36 +01003243
3244 [sfnt] Fix Savannah bug #37936.
3245
3246 * src/sfnt/ttload.c (tt_face_load_gasp): Avoid memory leak.
3247
Alexei Podtelezhnikov8ac5c5c2012-12-15 23:33:55 -050032482012-12-15 Alexei Podtelezhnikov <apodtele@gmail.com>
3249
3250 [base] Fix 11-year old bug.
3251
3252 Since the initial commit (ebe85f59) the value of FT_TRIG_SCALE has
3253 always been slightly less than the correct value, which has been
3254 given in the comment as a hexadecimal. As a result, vector lengths
3255 were underestimated and rotated vectors were shortened.
3256
3257 * src/base/fttrigon.c (FT_TRIG_SCALE): Fix macro value.
3258
Werner Lemberg9b6b5752012-12-15 01:34:41 +010032592012-12-15 Werner Lemberg <wl@gnu.org>
3260
Werner Lemberg7f2e4f42012-12-15 09:39:41 +01003261 [bdf] Fix Savannah bug #37907.
3262
3263 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
3264 negative second parameter of `ENCODING' field also.
3265
32662012-12-15 Werner Lemberg <wl@gnu.org>
3267
Werner Lemberg07bdb6e2012-12-15 02:02:23 +01003268 [bdf] Fix Savannah bug #37906.
3269
Werner Lemberg7f2e4f42012-12-15 09:39:41 +01003270 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Use correct array
3271 size for checking `glyph_enc'.
Werner Lemberg07bdb6e2012-12-15 02:02:23 +01003272
32732012-12-15 Werner Lemberg <wl@gnu.org>
3274
Werner Lemberg9b6b5752012-12-15 01:34:41 +01003275 [bdf] Fix Savannah bug #37905.
3276
Werner Lemberg7f2e4f42012-12-15 09:39:41 +01003277 * src/bdf/bdflib.c (_bdf_parse_start) <STARTPROPERTIES>: Reset
3278 `props_size' to zero in case of allocation error; this value gets
3279 used in a loop in `bdf_free_font'.
Werner Lemberg9b6b5752012-12-15 01:34:41 +01003280
Alexei Podtelezhnikov65d65722012-12-10 06:59:29 -050032812012-12-10 Alexei Podtelezhnikov <apodtele@gmail.com>
3282
3283 [truetype] Scale F_dot_P down.
3284
3285 The dot product between freeVector and projVector or cosine of
3286 the angle between these FT_F2Dot14 unit vectors used to be scaled up
3287 by 4 and routinely occupied 32 bits in an FT_Long field F_dot_P.
Werner Lemberg53c0cb52013-01-11 08:29:22 +01003288 This patch scales the value down by 2^14 instead, which simplifies
Alexei Podtelezhnikov65d65722012-12-10 06:59:29 -05003289 its use throughout the bytecode interpreter.
3290
3291 This does not lead to the loss of precision because the lower bits
3292 are unreliable anyway. Consider two unit vectors (1,0) and (.6,.8)
3293 for which the true value of F_dot_P is .6 * 0x40000000 = 0x26666666.
3294 These vectors are stored as (0x4000,0) and (0x2666,0x3333) after
3295 rounding and F_dot_P is assigned 0x26660000. The lower bits were
3296 already lost while rounding the unit vector components.
3297
3298 Besides code simplification, this change can lead to better
3299 performance when FT_MulDiv with the scaled-down F_dot_P is less
3300 likely to use the costly 64-bit path. We are not changing the type
Werner Lemberg53c0cb52013-01-11 08:29:22 +01003301 of F_dot_P to FT_F2Dot14 at this point.
Alexei Podtelezhnikov65d65722012-12-10 06:59:29 -05003302
3303 * src/truetype/ttinterp.c (Compute_Funcs): Scale F_dot_P down by 14
3304 bits and modify its use accordingly.
3305 (Direct_Move, Direct_Move_Orig, Compute_Point_Displacement): Modify
3306 the use of F_dot_P field.
3307 * src/truetype/ttobjs.c (tt_size_run_fpgm): Change arbitrary
3308 assignment of F_dot_P to its theoretical maximum in case we decide
3309 to scale back its type later.
3310
Johnson Y. Yan06d69162012-12-09 00:07:51 +010033112012-12-09 Johnson Y. Yan <yinsen_yan@foxitsoftware.com>
3312
3313 [type1] Another fix for 2012-09-17 commit.
3314
3315 * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Correctly set
3316 `limit' value.
3317
Alexei Podtelezhnikov5ad05f92012-12-06 00:27:20 -050033182012-12-06 Alexei Podtelezhnikov <apodtele@gmail.com>
3319
Alexei Podtelezhnikovcece4d32012-12-06 20:23:38 -05003320 [truetype] Tweak the previous commit.
3321
3322 * src/truetype/ttinterp.c (Current_Ratio): Put unit vector
3323 components as the second TT_MulFix14 arguments. This is required
3324 on 16-bit systems.
3325
33262012-12-06 Alexei Podtelezhnikov <apodtele@gmail.com>
3327
Alexei Podtelezhnikov5ad05f92012-12-06 00:27:20 -05003328 [truetype] Microoptimizations in bytecode interpreter.
3329
3330 * src/truetype/ttinterp.c (TT_DivFix14): New macro.
3331 (Normalize): Use it here.
3332 (Current_Ratio): Use TT_MulFix14 instead of FT_MulDiv.
3333 (Ins_SHPIX): Cancel out two TT_MulFix14 calls.
3334
Alexei Podtelezhnikovb50088b2012-12-05 23:05:47 -050033352012-12-05 Alexei Podtelezhnikov <apodtele@gmail.com>
3336
3337 [truetype] Cosmetic improvement in bytecode interpreter.
3338
3339 * src/truetype/ttinterp.c: Use explicit calls to FT_MulDiv,
3340 FT_MulFix, and FT_DivFix instead of macros.
3341
John Tytgat54d43a32012-12-05 11:14:41 +010033422012-12-03 John Tytgat <John.Tytgat@esko.com>
3343
3344 [pshinter] Clamp BlueScale value.
3345
3346 This is Savannah bug #37856.
3347
3348 * src/pshinter/pshglob.c (psh_calc_max_height): New function.
3349 (psh_globals_new): Use it to limit BlueScale value to
3350 `1 / max_of_blue_zone_heights'.
3351
Alexei Podtelezhnikov4ae9cbb2012-12-01 23:36:02 -050033522012-12-01 Alexei Podtelezhnikov <apodtele@gmail.com>
3353
3354 [truetype, type1] Revise the use of FT_MulDiv.
3355
3356 * src/truetype/ttgxvar.c: Updated.
3357 * src/truetype/ttobjs.c: Updated.
3358 * src/type1/t1load.c: Updated.
3359
Werner Lemberg7e8e1762012-11-30 13:45:47 +010033602012-11-30 Werner Lemberg <wl@gnu.org>
3361
3362 [configure] Preserve customized `ftoption.h'.
3363
3364 Problem reported by Del Merritt <del@alum.mit.edu>.
3365
3366 * builds/unix/configure.raw <cpp computation of bit length>: Don't
3367 remove existing FreeType configuration files.
3368
Werner Lembergb731c822012-11-30 15:22:03 +010033692012-11-29 John Tytgat <John.Tytgat@esko.com>
Werner Lemberg337fcb62012-11-29 21:10:10 +01003370
3371 [type1] Fix Savannah bug #37831.
3372
3373 The bug report also contains a patch.
3374
3375 * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Really fix
3376 change from 2012-09-17.
3377
Alexei Podtelezhnikov6a126e12012-11-28 23:32:02 -050033782012-11-28 Alexei Podtelezhnikov <apodtele@gmail.com>
3379
3380 [truetype] Fix formatting and typo.
3381
Alexei Podtelezhnikov72e976d2012-11-27 21:18:34 -050033822012-11-27 Alexei Podtelezhnikov <apodtele@gmail.com>
3383
Alexei Podtelezhnikov79180ad2012-11-27 21:36:20 -05003384 [cid, type1, type42] Clean up units_per_EM calculations.
3385
3386 * src/cid/cidload.c (cid_parse_font_matrix): Updated.
3387 * src/type1/t1load.c (t1_parse_font_matrix): Updated.
3388 * src/type42/t42parse.c (t42_parse_font_matrix): Updated.
3389
Alexei Podtelezhnikov79180ad2012-11-27 21:36:20 -050033902012-11-27 Alexei Podtelezhnikov <apodtele@gmail.com>
3391
Alexei Podtelezhnikov72e976d2012-11-27 21:18:34 -05003392 [ftstroke] Minor improvement.
3393
3394 * src/base/ftstroke.c: Replace nested FT_DivFix and FT_MulFix with
3395 FT_MulDiv.
3396
Werner Lembergfa22ec12012-11-17 11:45:24 +010033972012-11-17 Werner Lemberg <wl@gnu.org>
3398
3399 * src/base/fttrigon.c (ft_trig_downscale): Make 64bit version work.
3400
Alexei Podtelezhnikov0690d3d2012-11-15 20:50:59 -050034012012-11-15 Alexei Podtelezhnikov <apodtele@gmail.com>
3402
3403 [base] Fix integer overflows in dd5718c7d67a.
3404
3405 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use FT_MulDiv.
3406
Werner Lemberg3a553402012-11-15 16:37:05 +010034072012-11-15 Werner Lemberg <wl@gnu.org>
3408
3409 [autofit] Trace stem widths.
3410
3411 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Add some
3412 FT_TRACE calls.
3413
Werner Lemberg55127272012-11-13 09:22:11 +010034142012-11-13 Werner Lemberg <wl@gnu.org>
3415
3416 [cff] Add support for OpenType Collections (OTC).
3417
3418 * src/cff/cffload.c (cff_font_load): Separate subfont and face
3419 index handling to load both pure CFFs with multiple subfonts and
3420 OTCs (with multiple faces where each face holds exactly one
3421 subfont).
3422 * src/cff/cffobjs.c (cff_face_init): Updated.
3423
Werner Lemberg1a37e412012-11-12 11:01:07 +010034242012-11-12 Werner Lemberg <wl@gnu.org>
3425
3426 [autofit] Minor improvement.
3427
3428 * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Fix
3429 loop.
3430
Werner Lembergf966da82012-11-10 12:42:18 +010034312012-11-10 Werner Lemberg <wl@gnu.org>
3432
3433 [autofit] Improve tracing.
3434
3435 * src/autofit/aflatin.c (af_latin_hint_edges)
3436 [FT_DEBUG_LEVEL_TRACE]: Count number of actions and emit something
3437 if there weren't any.
3438
Alexei Podtelezhnikovdd5718c2012-11-04 00:57:57 -040034392012-11-04 Alexei Podtelezhnikov <apodtele@gmail.com>
3440
3441 [base] Fortify emboldening code against egregious distortions.
3442
3443 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Threshold emboldening
3444 strength when it leads to segment collapse.
3445
Alexei Podtelezhnikov48ce2262012-11-03 22:27:27 -040034462012-11-03 Alexei Podtelezhnikov <apodtele@gmail.com>
3447
3448 [base] Clean up emboldening code and improve comments there.
3449
3450 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Replace sequential
3451 calls to FT_MulFix and FT_DivFix with FT_MulDiv.
3452 Mention that bisectors are used to figure out the shift direction.
3453
Werner Lemberg118c6022012-10-24 12:26:20 +020034542012-10-24 Werner Lemberg <wl@gnu.org>
3455
Werner Lemberg553bb3c2012-10-24 14:22:14 +02003456 [autofit] Add standard character to `AF_ScriptClassRec' structure.
3457
3458 * src/autofit/aftypes.h (AF_ScriptClassRec): Add `standard_char'
3459 member.
3460 (AF_DEFINE_SCRIPT_CLASS): Updated.
3461
3462 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Use it.
3463 (af_latin_metrics_init, af_latin_script_class): Updated.
3464
3465 * src/autofit/aflatin.c (af_latin2_metrics_init_widths): Use it.
3466 (af_latin2_metrics_init, af_latin2_script_class): Updated.
3467
3468 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Use it.
3469 (af_cjk_metrics_init, af_cjk_script_class): Updated.
3470
3471 * src/autofit/afindic.c (af_indic_metrics_init,
3472 af_indic_script_class): Updated.
3473
3474 * src/autofit/afcjk.h, src/autofit/aflatin.h: Updated.
3475
3476 * src/autofit/afdummy.c: Updated.
3477
34782012-10-24 Werner Lemberg <wl@gnu.org>
3479
Werner Lemberg118c6022012-10-24 12:26:20 +02003480 [autofit] Only use Unicode CMap.
3481
3482 * src/autofit/aflatin.c (af_latin_metrics_init): Implement it, to be
Werner Lemberg553bb3c2012-10-24 14:22:14 +02003483 in sync with `af_face_globals_compute_script_coverage'.
Werner Lemberg118c6022012-10-24 12:26:20 +02003484
Werner Lembergfdcbaf12012-10-21 10:40:12 +020034852012-10-21 Werner Lemberg <wl@gnu.org>
3486
Werner Lemberg8e82a962012-10-21 11:02:50 +02003487 [psaux] Improve parsing of invalid numbers.
3488
3489 * src/psaux/psconv.c (PS_Conv_Strtol): Always parse complete number,
3490 even in case of overflow.
3491 (PS_Conv_ToInt): Only increase cursor if parsing was successful.
3492 (PS_Conv_ToFixed): Ditto.
3493 Trace underflow and data error.
3494
34952012-10-21 Werner Lemberg <wl@gnu.org>
3496
Werner Lembergfdcbaf12012-10-21 10:40:12 +02003497 [smooth] Improve tracing.
3498
3499 * src/smooth/ftgrays.c (gray_sweep): Trace last sweep line of
3500 current band also.
3501
Alexei Podtelezhnikov24e897d2012-10-20 22:23:01 -040035022012-10-20 Alexei Podtelezhnikov <apodtele@gmail.com>
3503
Werner Lembergfdcbaf12012-10-21 10:40:12 +02003504 [truetype] Cheaper way to threshold angles between vectors.
Alexei Podtelezhnikov24e897d2012-10-20 22:23:01 -04003505
3506 * src/truetype/ttinterp.c (Ins_ISECT): Thresholding tangent is a lot
Werner Lemberg53c0cb52013-01-11 08:29:22 +01003507 cheaper than thresholding sine.
Werner Lembergfdcbaf12012-10-21 10:40:12 +02003508
Werner Lembergad4eecc2012-10-20 21:27:17 +020035092012-10-20 Werner Lemberg <wl@gnu.org>
3510
3511 [cff] Improve parsing of invalid real numbers.
3512
3513 * src/cff/cffparse.c (cff_parse_real): Always parse complete number,
3514 even in case of overflow or underflow.
3515 Also trace one more underflow.
3516
Andreas Pehnack1e168832012-10-20 11:42:22 +020035172012-10-20 Andreas Pehnack <andreas.pehnack@me.com>
3518
3519 [sfnt] Load pure CFF fonts wrapped in SFNT container.
3520
3521 Such fonts only have a `cmap' and a `CFF' table.
3522
3523 * src/sfnt/ttload.c (tt_face_load_font_dir): Don't call
3524 `check_table_dir' if font signature is `OTTO'.
3525
Werner Lembergdda1e932012-10-20 08:34:57 +020035262012-10-20 Werner Lemberg <wl@gnu.org>
3527
Werner Lembergeaf0afb2012-10-20 11:27:25 +02003528 [psaux] Fix some value overflows and improve tracing.
3529
3530 * src/psaux/psconv.c: Include FT_INTERNAL_DEBUG_H.
3531 (FT_COMPONENT): Define.
3532 (PS_Conv_Strtol): Return FT_Long.
3533 Handle bad data and overflow.
3534 Emit some tracing messages in case of error.
3535 (PS_Conv_ToInt): Return FT_Long.
3536 (PS_Conv_ToFixed): Updated.
3537 * src/psaux/psconv.h: Updated.
3538
3539 * include/freetype/internal/fttrace.h: Add `psconv'.
3540
35412012-10-20 Werner Lemberg <wl@gnu.org>
3542
Werner Lembergdda1e932012-10-20 08:34:57 +02003543 [autofit] Fix `make multi CC=c++'.
3544
3545 * src/autofit/aflatin.c, src/autofit/aflatin2.c: Include
3546 `afglobal.h'.
3547 * src/autofit/afloader.c: Fix order of header files.
3548 * src/autofit/afmodule.c: Include `afglobal.h' and `aferrors.h'.
3549
Werner Lemberg4404ec42012-10-19 09:06:53 +020035502012-10-19 Werner Lemberg <wl@gnu.org>
3551
3552 [cff] Fix more value errors and improve tracing.
3553
3554 * src/cff/cffparse.c (cff_parse_integer): Emit tracing message in
3555 case of error.
3556 (cff_parse_real): Handle and trace overflow, underflow, and bad data
3557 consistently.
3558 (do_fixed): New helper function, handling and tracing overflow.
3559 (cff_parse_fixed, cff_parse_fixed_scaled): Use `do_fixed'.
3560
Werner Lemberg0708b232012-10-17 21:38:19 +020035612012-10-17 Werner Lemberg <wl@gnu.org>
3562
3563 [psaux] Fix some value overflows.
3564
3565 * src/psaux/psconv.c (PS_Conv_ToFixed): Implement it.
3566
Bram Tassyns76accc12012-10-17 19:55:20 +020035672012-10-17 Bram Tassyns <BramT@enfocus.com>
3568
3569 [cff] Fix value overflow.
3570
3571 * src/cff/cffparse.c (cff_parse_fixed_scaled): Implement it.
3572
Werner Lemberg2df16762012-10-17 11:34:22 +020035732012-10-17 Werner Lemberg <wl@gnu.org>
3574
3575 [truetype] Fix Savannah bug #37572.
3576
3577 * src/truetype/ttinterp.c (Ins_ISECT): Use angle between vectors to
3578 avoid grazing intersections. The previous threshold was too coarse,
3579 incorrectly rejecting short but valid vectors.
3580
Gilles Espinassebe81ec22012-09-30 08:42:30 +020035812012-09-30 Gilles Espinasse <g.esp@free.fr>
3582
3583 Remove useless `rm' detection.
3584
3585 `rm -f' is directly used in the `configure' script created by
3586 autoconf, thus no availability test is necessary.
3587
3588 * builds/unix/configure.raw (RMF): Remove test.
3589 * builds/unix/unix-def.in (DELETE): Updated.
3590
Werner Lemberg156ba422012-09-29 10:08:01 +020035912012-09-29 Werner Lemberg <wl@gnu.org>
3592
Werner Lembergbf745002012-09-29 22:40:40 +02003593 [autofit] Minor optimization.
3594
3595 * src/autofit/afglobals.c (af_face_globals_compute_script_coverage):
3596 Add loop condition.
3597
35982012-09-29 Werner Lemberg <wl@gnu.org>
3599
Werner Lemberg156ba422012-09-29 10:08:01 +02003600 [autofit] Fix thinko.
3601
3602 * src/autofit/aftypes.h (AF_SCRIPT):
3603 s/AF_SCRIPT_NONE/AF_SCRIPT_DUMMY/. We already use `AF_SCRIPT_NONE'
3604 as a bit mask.
3605
3606 * src/autofit/afdummy.c: Updated.
3607
Werner Lemberg842c4ea2012-09-18 15:23:41 +020036082012-09-18 Werner Lemberg <wl@gnu.org>
3609
Werner Lemberg3683fb52012-09-18 23:31:05 +02003610 [autofit] Implement `increase-x-height' property.
3611
3612 * include/freetype/ftautoh.h (FT_Prop_IncreaseXHeight): New
3613 structure.
3614
3615 * include/autofit/afmodule.c (af_property_get_face_globals): New
3616 function, re-using code from `af_property_get'.
3617 (af_property_set, af_property_get): Handle `increase-x-height'.
3618 Updated.
3619
36202012-09-18 Werner Lemberg <wl@gnu.org>
3621
Werner Lembergd180ac72012-09-18 23:26:37 +02003622 [autofit] Implement Infinality's `increase glyph heights'.
3623
3624 This is an improved version of a similar fix contained in the
3625 so-called `Infinality patch', taken from
3626
3627 http://www.infinality.net/fedora/linux/zips/freetype-infinality-2.4.10-20120616_01-x86_64.tar.bz2
3628
3629 which addresses various enhancements of the auto-hinter. Without
3630 properties to control a module's metadata it wasn't possible to
3631 adapt the patches because everything was originally controlled by
3632 environment variables which I consider not suitable in general.
3633
3634 A patch to control `increase_x_height' follows.
3635
3636 * src/autofit/afglobal.h (AF_PROP_INCREASE_X_HEIGHT_MIN,
3637 AF_PROP_INCREASE_X_HEIGHT_MAX): New macros.
3638 (AF_FaceGlobalsRec): Add `increase_x_height' member.
3639 * src/autofit/afglobal.c (af_face_globals_new): Initialize it.
3640
3641 * src/autofit/aflatin.c (af_latin_metrics_scale_dim),
3642 * src/autofit/aflatin2.c (af_latin2_metrics_scale_dim): Implement
3643 handling of `increase_x_height'.
3644
36452012-09-18 Werner Lemberg <wl@gnu.org>
3646
Werner Lemberg842c4ea2012-09-18 15:23:41 +02003647 [autofit] Add hierarchical property access to some structures.
3648
3649 * src/autofit/afglobal.h: Include `afmodule.h'.
3650 (AF_FaceGlobalsRec): Add `module' member.
3651 (AF_FaceGlobals): Typedef moved to...
3652 * src/autofit/aftypes.h: Here.
3653 (AF_ScriptMetricsRec): Add `globals' member.
3654
3655 * src/autofit/afglobal.c (af_face_globals_new,
3656 af_face_globals_compute_script_coverage,
3657 af_face_globals_get_metrics): Updated.
3658
3659 * src/autofit/afloader.c (af_loader_reset), src/autofit/afmodule.c
3660 (af_property_get): Updated.
3661
Werner Lembergebda8b32012-09-17 20:59:31 +020036622012-09-17 Werner Lemberg <wl@gnu.org>
3663
Werner Lemberg273e2b72012-09-18 13:27:27 +02003664 [type1] Fix Savannah bug #37350.
Werner Lembergebda8b32012-09-17 20:59:31 +02003665
3666 * src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Check for ASCII
3667 storage only if we actually have at least four bytes.
3668
Werner Lemberg073a4ce2012-09-15 09:10:06 +020036692012-09-15 Werner Lemberg <wl@gnu.org>
3670
Werner Lembergd4ec0072012-09-15 18:26:28 +02003671 [autofit] Implement `fallback-script' property.
3672
3673 * src/autofit/afglobal.c: s/default_script/fallback_script/.
3674 * src/autofit/afglobal.h: s/AF_SCRIPT_DEFAULT/AF_SCRIPT_FALLBACK/.
3675
3676 * src/autofit/afmodule.c: s/default_script/fallback_script/.
3677 (af_property_set, af_property_get): Implement `fallback-script'.
3678 * src/autofit/afmodule.h: s/default_script/fallback_script/.
3679
3680 * include/freetype/ftautoh.h: Document it.
3681
36822012-09-15 Werner Lemberg <wl@gnu.org>
3683
Werner Lemberg44e1f0d2012-09-15 11:11:18 +02003684 [autofit] Correct previous Unicode 6.1.0 change.
3685
3686 The auto-hinter's latin module only handles latin ligatures in the
3687 `Alphabetical Presentation Forms' block.
3688
3689 * src/autofit/aflatin.c (af_latin_uniranges): Fix it.
3690
36912012-09-15 Werner Lemberg <wl@gnu.org>
3692
Werner Lembergce92c5f2012-09-15 10:56:15 +02003693 * src/autofit/afmodule.c: s/FT_Err_/AF_Err_/.
3694
36952012-09-15 Werner Lemberg <wl@gnu.org>
3696
Werner Lembergd0014f22012-09-15 10:33:43 +02003697 [autofit] Make default script a global property.
3698
3699 * src/autofit/afmodule.h (AF_ModuleRec): Add `default_script' field.
3700
3701 * src/autofit/afglobal.c (af_face_globals_compute_script_coverage,
3702 af_face_globals_new), src/autofit/afloader.c (af_loader_reset),
3703 src/autofit/afmodule.c (af_property_get) <glyph-to-script-map>,
3704 af_autofitter_init:
3705 Handle default script.
3706
3707 * src/autofit/afglobal.h: Updated.
3708
37092012-09-15 Werner Lemberg <wl@gnu.org>
3710
Werner Lemberg073a4ce2012-09-15 09:10:06 +02003711 Use `FT_Module' instead of `FT_Library' argument in property funcs.
3712
3713 This internal change simplifies access to global module data.
3714
3715 * include/freetype/internal/services/svprop.h
3716 (FT_Properties_SetFunc, FT_Properties_GetFunc): Change accordingly.
3717
3718 * src/base/ftobjs.c (ft_property_do), src/autofit/afmodule.c
3719 (af_property_set, af_property_get): Updated.
3720
Werner Lemberg688da8e2012-09-14 07:55:15 +020037212012-09-14 Werner Lemberg <wl@gnu.org>
3722
Werner Lemberg8ae2a652012-09-14 14:10:01 +02003723 [autofit] Update to Unicode 6.1.0.
3724
3725 * src/autofit/afcjk.c (af_cjk_uniranges), src/autofit/aflatin.c
3726 (af_latin_uniranges): Add and fix ranges.
3727
37282012-09-14 Werner Lemberg <wl@gnu.org>
3729
Werner Lemberg95dae1c2012-09-14 12:26:57 +02003730 [autofit] Pass `AF_Module' instead of `AF_Loader'.
3731
3732 We want to access the (not yet existing) module's global data later
3733 on.
3734
3735 * src/autofit/afloader.c: Include `afmodule.h'.
3736 (af_loader_init, af_loader_reset, af_loader_done,
3737 af_loader_load_glyph): Change accordingly.
3738 * src/autofit/afmodule.c (AF_ModuleRec): Move to `afmodule.h'.
3739 Updated.
3740
3741 * src/autofit/afmodule.h: Include `afloader.h'.
3742 (AF_ModuleRec): Define here.
3743 * src/autofit/afloader.h (AF_Module): Define here.
3744 Updated.
3745
37462012-09-14 Werner Lemberg <wl@gnu.org>
3747
Werner Lemberg6d29c5c2012-09-14 11:57:36 +02003748 [autofit] Fix `make multi'.
3749
3750 * include/freetype/internal/fttrace.h: Add `afmodule'.
3751 * src/autofit/afmodule.c: Include FT_INTERNAL_DEBUG_H.
3752 (FT_COMPONENT): Define.
3753
37542012-09-14 Werner Lemberg <wl@gnu.org>
3755
Werner Lemberg688da8e2012-09-14 07:55:15 +02003756 * src/autofit/afmodule.c: s/FT_Autofitter/AF_Module/.
3757
Werner Lemberg7bbbcbf2012-09-12 17:45:39 +020037582012-09-12 Werner Lemberg <wl@gnu.org>
3759
3760 [autofit] Minor reorganization.
3761
3762 * src/autofit/afglobal.c (AF_SCRIPT_LIST_DEFAULT,
3763 AF_SCRIPT_LIST_NONE, AF_DIGIT): Move to...
3764 * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT, AF_SCRIPT_LIST_NONE,
3765 AF_DIGIT): This and update code.
3766
Werner Lemberg2be60cf2012-09-01 22:31:43 +020037672012-09-01 Werner Lemberg <wl@gnu.org>
3768
3769 [autofit] Implement `glyph-to-script-map' property.
3770
3771 * include/freetype/ftautoh.h: New public header file.
3772 * include/freetype/config/ftheader.h (FT_AUTOHINTER_H): New macro.
3773
3774 * src/autofit/afglobal.c (AF_FaceGlobalsRec): Move structure to...
3775 * src/autofit/afglobal.h: This header file.
3776 * src/autofit/afmodule.c: Include FT_AUTOHINTER_H.
3777 (af_property_get): Handle `glyph-to-script-map'.
3778
Werner Lemberg7f316f22012-08-31 00:20:29 +020037792012-08-31 Werner Lemberg <wl@gnu.org>
3780
3781 [autofit] Implement properties service framework.
3782
3783 No properties are added yet.
3784
3785 * src/autofit/afmodule.c: Include FT_SERVICE_PROPERTIES_H.
3786 (af_property_set, af_property_get): New dummy functions.
3787 (af_service_properties, af_services, af_get_interface): Provide
3788 service setup.
3789 (autofit_moduleclass): Add service interface.
3790
3791 * src/autofit/afpic.c: Add necessary forward declarations.
3792 (autofit_module_class_pic_init): Add code for service addition.
3793 (autofit_module_pic_free): Add code for service removal.
3794 * src/autofit/afpic.h (AF_SERVICES_GET, AF_SERVICE_PROPERTIES_GET):
3795 New macros which provide necessary syntactical sugar for PIC
3796 support.
3797
Werner Lemberg0f8fd882012-08-30 23:31:55 +020037982012-08-30 Werner Lemberg <wl@gnu.org>
3799
3800 Implement properties to control FreeType modules.
3801
3802 * include/freetype/fterrdef.h (FT_Err_Missing_Property): New error
3803 code.
3804 * include/freetype/ftmodapi.h (FT_Property_Set, FT_Property_Get):
3805 New API.
3806
3807 * include/freetype/internal/services/svprop.h: New file.
3808 * include/freetype/internal/ftserv.h (FT_SERVICE_PROPERTIES_H): New
3809 macro.
3810
3811 * src/base/ftobjs.c: Include FT_SERVICE_PROPERTIES_H.
3812 (ft_property_do, FT_Property_Set, FT_Property_Get): New functions.
3813
Werner Lemberg590344c2012-08-29 09:16:56 +020038142012-08-29 Werner Lemberg <wl@gnu.org>
3815
3816 [docmaker] Allow `-' in tags and identifiers.
3817
3818 * src/tools/docmaker/content.py (re_identifier),
3819 src/tools/docmaker/sources.py (re_markup_tag1, re_markup_tag2,
3820 re_crossref): Add `-' in patterns.
3821
Werner Lembergd0841ea2012-08-27 06:57:05 +020038222012-08-27 Werner Lemberg <wl@gnu.org>
3823
Werner Lemberg328aa3b2012-08-27 11:23:41 +02003824 [FT_CONFIG_OPTION_PIC] Fix g++ 4.6.2 compiler warnings.
3825
3826 * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER),
3827 include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
3828 FT_DEFINE_MODULE), include/freetype/internal/ftserv.h
3829 (FT_DEFINE_SERVICEDESCREC1, FT_DEFINE_SERVICEDESCREC2,
3830 FT_DEFINE_SERVICEDESCREC3, FT_DEFINE_SERVICEDESCREC4,
3831 FT_DEFINE_SERVICEDESCREC5, FT_DEFINE_SERVICEDESCREC6),
3832 src/autofit/afpic.c (autofit_module_class_pic_init),
3833 src/base/basepic.c (ft_base_pic_init), src/base/ftinit.c
3834 (ft_create_default_module_classes), src/cff/cffparse.c
3835 (FT_Create_Class_cff_field_handlers), src/cff/cffpic.c
3836 (cff_driver_class_pic_init), src/pshinter/pshpic.c
3837 (pshinter_module_class_pic_init), src/psnames/pspic.c
3838 (psnames_module_class_pic_init), src/raster/rastpic.c
3839 (ft_raster1_renderer_class_pic_init), src/sfnt/sfntpic.c
3840 (sfnt_module_class_pic_init), src/sfnt/ttcmap.c
3841 (FT_Create_Class_tt_cmap_classes), src/smooth/ftspic.c
3842 (ft_smooth_renderer_class_pic_init), src/truetype/ttpic.c
3843 (tt_driver_class_pic_init): Initialize allocation variable.
3844
38452012-08-27 Werner Lemberg <wl@gnu.org>
3846
Werner Lemberg06e31e92012-08-27 09:35:22 +02003847 [truetype] Fix compilation warning.
3848
3849 * src/truetype/ttgload.c (IS_HINTED): Move macro to...
3850 * src/truetype/ttobjs.h: This header file.
3851
38522012-08-27 Werner Lemberg <wl@gnu.org>
3853
Werner Lembergd9bf44a2012-08-27 08:41:43 +02003854 [autofit, cff, pshinter, psnames] More renamings for orthogonality.
3855
3856 * src/autofit/afmodule.c, src/autofit/afpic.h:
3857 s/AF_AUTOFITTER_/AF_/.
3858
3859 * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffparse.c,
3860 src/cff/cffpic.h: s/FT_CFF_/CFF_/.
3861
3862 * src/pshinter/pshmod.c, src/pshinter/pshpic.h:
3863 s/FT_PSHINTER_/PSHINTER_/.
3864
3865 * src/psnames/psmodule.c, src/psnames/pspic.h:
3866 s/FT_PSCMAPS/PSCMAPS_/.
3867
38682012-08-27 Werner Lemberg <wl@gnu.org>
3869
Werner Lemberg0c633e32012-08-27 07:43:28 +02003870 [sfnt, truetype] More renamings for orthogonality.
3871
3872 * src/sfnt/sfdriver.c, src/sfnt/sfntpic.h, src/sfnt/ttcmap.c,
3873 src/truetype/ttdriver.c, src/truetype/ttpic.h: s/FT_SFNT_/SFNT_/,
3874 s/FT_TT_/TT_/, s/GET_CMAP_INFO_GET/CMAP_INFO_GET/.
3875
38762012-08-27 Werner Lemberg <wl@gnu.org>
3877
Werner Lembergd0841ea2012-08-27 06:57:05 +02003878 [autofit] Some macro and variable renamings for orthogonality.
3879
3880 * include/freetype/internal/autohint.h, src/base/ftobjs.c,
3881 src/autofit/afmodule.c, src/autofit/afpic.c, src/autofit/afpic.h:
3882 s/SERVICE/INTERFACE/, s/service/interface/, s/Service/Interface/.
3883
Werner Lembergb355b562012-08-26 14:00:11 +020038842012-08-26 Werner Lemberg <wl@gnu.org>
3885
3886 Fix Savannah bug #37178.
3887
3888 * src/base/ftobjs.c (FT_Open_Face): Initialize `error' with
3889 `FT_Err_Missing_Module' before loop to indicate `no valid drivers'.
3890
Werner Lemberg04affa22012-08-17 09:28:28 +020038912012-08-17 Werner Lemberg <wl@gnu.org>
3892
3893 * src/base/ftsynth.c (FT_GlyphSlot_Oblique): Fix shear angle.
3894
3895 The old value was far too large (more than 20°). The new one
3896 corresponds to 12°, quite common in typography.
3897
Alexei Podtelezhnikov9ea55c72012-08-12 11:14:46 -040038982012-08-12 Alexei Podtelezhnikov <apodtele@gmail.com>
3899
Werner Lemberg273e2b72012-09-18 13:27:27 +02003900 [smooth] Fix Savannah bug #37017.
Alexei Podtelezhnikov9ea55c72012-08-12 11:14:46 -04003901
3902 * src/smooth/ftgrays.c (gray_render_cubic): Use a different set of
3903 checks when detecting super curvy splines to be split.
3904
Werner Lemberge194d7c2012-08-05 10:58:02 +020039052012-08-05 Werner Lemberg <wl@gnu.org>
3906
Werner Lemberg5b995a82012-08-05 11:11:44 +02003907 [autofit] Improve recognition of flat segments.
3908
3909 Problem reported by Brad Dunzer <BDunzer@extensis.com>.
3910
3911 * src/autofit/aflatin.c (af_latin_metrics_init_blues): We have
3912 a flat segment if the horizontal distance of best on-points is
3913 larger than a given threshold.
3914
39152012-08-05 Werner Lemberg <wl@gnu.org>
3916
Werner Lemberge194d7c2012-08-05 10:58:02 +02003917 [autofit] Variable renamings.
3918
3919 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Replace
3920 `glyph' with `outline'.
3921 s/best_first/best_contour_first/.
3922 s/best_last/best_contour_last/.
3923
Werner Lemberg5cdeb3c2012-07-31 20:17:13 +020039242012-07-31 Werner Lemberg <wl@gnu.org>
3925
Werner Lemberg273e2b72012-09-18 13:27:27 +02003926 [type1] Fix Savannah bug #37000.
Werner Lemberg5cdeb3c2012-07-31 20:17:13 +02003927
3928 * src/type1/t1load.c (parse_encoding): Fix order of checks.
3929
Werner Lemberg6b440422012-07-18 10:39:18 +020039302012-07-17 Werner Lemberg <wl@gnu.org>
3931
Werner Lemberg273e2b72012-09-18 13:27:27 +02003932 [psaux] Fix Savannah bug #36833.
Werner Lemberg6b440422012-07-18 10:39:18 +02003933
3934 * src/psaux/t1decode.c (t1operator_seac): `seac' is not a valid
3935 operator if we want metrics only.
3936
Werner Lemberg01b508f2012-07-18 10:38:54 +020039372012-07-16 Werner Lemberg <wl@gnu.org>
3938
Werner Lemberg273e2b72012-09-18 13:27:27 +02003939 [type1] Fix Savannah bug #36832.
Werner Lemberg01b508f2012-07-18 10:38:54 +02003940
3941 * src/type1/t1load.c (parse_charstrings): Reject negative number of
3942 glyphs.
3943
Werner Lemberga8c24352012-07-18 10:38:37 +020039442012-07-13 Werner Lemberg <wl@gnu.org>
3945
Werner Lemberg273e2b72012-09-18 13:27:27 +02003946 [type1] Fix Savannah bug #36829.
Werner Lemberga8c24352012-07-18 10:38:37 +02003947
3948 * src/type1/t1load.c (parse_encoding): Check cursor position after
3949 call to T1_Skip_PS_Token.
3950
Alexei Podtelezhnikov9ea55c72012-08-12 11:14:46 -040039512012-07-12 Alexei Podtelezhnikov <apodtele@gmail.com>
3952
3953 Revert the last commit 45337b07.
3954
Werner Lemberg309b8b32012-12-16 19:08:36 +01003955 * src/base/ftstroke.c (FT_Stroker_New): Revert the previous change.
Alexei Podtelezhnikov9ea55c72012-08-12 11:14:46 -04003956
Alexei Podtelezhnikov45337b02012-07-11 22:12:13 -040039572012-07-11 Alexei Podtelezhnikov <apodtele@gmail.com>
3958
3959 [ftstroke] Fix uninitialized return value.
3960
3961 * src/base/ftstroke.c (FT_Stroker_New): Return FT_Err_Ok instead.
3962
Werner Lemberge7454a42012-07-11 12:05:58 +020039632012-07-11 Werner Lemberg <wl@gnu.org>
3964
Werner Lemberg6b440422012-07-18 10:39:18 +02003965 [smooth] Avoid memory leak in case of failure.
Werner Lemberge7454a42012-07-11 12:05:58 +02003966
3967 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use flags to
3968 indicate what to clean up after finishing the function, with and
3969 without errors.
3970
Werner Lemberg5a0af492012-07-09 08:19:25 +020039712012-07-09 Werner Lemberg <wl@gnu.org>
3972
Werner Lemberg26472b42012-07-09 09:55:50 +02003973 Fix compilation with MSVC 5.0.
3974
3975 Problem reported by Peter Breitenlohner and Akira Kakuto.
3976
3977 * include/freetype/config/ftstdlib.h (ft_setjmp): Updated.
3978 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove cast.
3979
39802012-07-09 Werner Lemberg <wl@gnu.org>
3981
Werner Lemberg5a0af492012-07-09 08:19:25 +02003982 [autofit] Improve debugging messages; do some code cleanup.
3983
3984 * src/autofit/aflatin.c (af_latin_align_linked_edge,
3985 af_latin_hint_edges): Synchronize with formatting used in the
3986 ttfautohint project.
3987
Gilles Espinasse9123404c2012-07-07 11:17:02 +020039882012-07-07 Gilles Espinasse <g.esp@free.fr>
3989
3990 Fix strict-aliasing warning.
3991
3992 * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Avoid double cast.
3993
Dave Thomasfec113d2012-07-07 10:57:30 +020039942012-07-07 Dave Thomas <dave.thomas@metaforic.com>
3995
3996 [ARM] Fix FT_MulFix_arm.
3997
3998 * include/freetype/config/ftconfig.h (FT_MulFix_arm) [__arm__]:
3999 Avoid ADDS instruction to clobber condition codes.
4000
Werner Lembergb6978dd2012-07-06 19:38:44 +020040012012-07-06 Werner Lemberg <wl@gnu.org>
4002
4003 [autofit] Do some code cleanup.
4004
4005 * src/autofit/afglobal.c (af_face_globals_new): Simplify.
4006
4007 * src/autofit/afhints.c: Use `FT_TRACE7' instead of `printf'
4008 everywhere.
4009 (FT_COMPONENT): New macro.
4010 (af_glyph_hints_done): Simplify.
4011
4012 * include/freetype/internal/fttrace.h: Updated.
4013
Werner Lembergfd5ae952012-07-05 10:30:41 +020040142012-07-05 Werner Lemberg <wl@gnu.org>
4015
4016 [autofit] Improve output of debugging information.
4017
4018 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Print more
4019 data; report no data.
4020 (af_glyph_hints_dump_edges): Report no data.
4021
Werner Lemberg09e9b592012-07-04 13:00:06 +020040222012-07-04 Werner Lemberg <wl@gnu.org>
4023
Werner Lemberg273e2b72012-09-18 13:27:27 +02004024 [autofit] Fix Savannah bug #36091.
Werner Lemberg52103062012-07-04 17:20:33 +02004025
4026 * src/autofit/aflatin.c (af_latin_metrics_init_blues),
4027 src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Change the
4028 constraint for testing round vs. flat segment: Accept either a
4029 small distance or a small angle.
4030
40312012-07-04 Werner Lemberg <wl@gnu.org>
4032
Werner Lemberg09e9b592012-07-04 13:00:06 +02004033 [autofit] Beautify blue zone tracing.
4034
4035 * src/autofit/aflatin.c (af_latin_metrics_init_blues),
4036 src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Implement it.
4037
Werner Lembergd4cbbf32012-07-03 11:01:53 +020040382012-07-03 Werner Lemberg <wl@gnu.org>
4039
Werner Lemberg2a9c4552012-07-03 11:54:12 +02004040 [autofit] Quantize stem widths.
4041
4042 * src/autofit/afangles.c (af_sort_widths): Rename to...
4043 (af_sort_and_quantize_widths): This.
4044 Add code to avoid stem widths which are almost identical.
4045 * src/autofit/aftypes.h, src/autofit/aflatin.c, src/autofit/afcjk.c:
4046 Updated.
4047
40482012-07-03 Werner Lemberg <wl@gnu.org>
4049
Werner Lembergd4cbbf32012-07-03 11:01:53 +02004050 [autofit] Minor speed-up.
4051
4052 * src/autofit/afangles (af_sort_pos, af_sort_widths): Don't swap
4053 elements if they are equal.
4054
Werner Lembergad866e22012-06-30 07:59:28 +020040552012-06-30 Gilles Espinasse <g.esp@free.fr>
4056
4057 Fix `checking if gcc static flag -static works' test.
4058
4059 On my linux build tree, I receive yes answer in in every package I
4060 build except freetype for this test checking if gcc static flag
4061 `-static' works
4062
4063 On freetype, no is received, unless bzip2 and zlib are disabled using
4064
4065 ./configure --without-bzip2 --without-zlib
4066
4067 The reason is that bzip2 and zlib tests add `-lz' and `-lbz2' to
4068 LDFLAGS and this broke static flag test.
4069
4070 * builds/unix/configure.raw: Update CFLAGS and LDFLAGS only after
4071 LT_INIT has run.
4072
Infinalityd0a827b2012-06-28 20:34:26 -050040732012-06-28 Infinality <infinality@infinality.net>
4074
4075 [truetype] Fix various artifacts.
4076
4077 Verdana was broken in the original Infinality commit. Also
4078 includes other minor fixes.
4079
4080 * src/truetype/ttsubpix.h: Updated. Removed unused macros.
4081 (RASTERIZER_35_Rules): Add Verdana.
4082 (SKIP_NONPIXEL_Y_MOVES_Rules): Add Tahoma `s'.
4083 (MIRP_CVT_ZERO_Rules): Remove Verdana.
4084 (ALWAYS_SKIP_DELTAP_Rules): Add Russian char 0x438.
4085 (COMPATIBLE_WIDTHS_Rules): Rearrange some rules.
4086 (X_SCALING_Rules): Adjust Verdana `a' at 12 and 13 ppem.
Alexei Podtelezhnikov5ad05f92012-12-06 00:27:20 -05004087
Infinalityd0a827b2012-06-28 20:34:26 -05004088 * src/truetype/ttsubpix.c: Updated.
4089 (sph_set_tweaks): Re-execute fpgm always.
4090
Gilles Espinasse34de9d22012-06-28 06:45:26 +020040912012-06-28 Gilles Espinasse <g.esp@free.fr>
4092
4093 Fix CFLAGS and LDFLAGS share configure test.
4094
4095 * builds/unix/configure.raw: Fix typo.
4096
Werner Lembergb3953aa2012-06-28 06:23:12 +020040972012-06-28 Werner Lemberg <wl@gnu.org>
4098
4099 [truetype] Set the `subpixel_positioned' flag unconditionally.
4100
4101 This is how the code currently behaves.
4102
4103 * src/truetype/ttgload.c (tt_loader_init): Do it.
4104
Werner Lemberg83c0eba2012-06-27 08:16:06 +020041052012-06-27 Werner Lemberg <wl@gnu.org>
4106
4107 Fix conditional compilation.
4108
Werner Lemberg12470962012-06-27 08:44:30 +02004109 * src/base/basepic.c: Use FT_CONFIG_OPTION_MAC_FONTS.
4110
41112012-06-27 Werner Lemberg <wl@gnu.org>
4112
4113 Fix conditional compilation.
4114
Werner Lemberg83c0eba2012-06-27 08:16:06 +02004115 * include/freetype/internal/ftcalc.h (FT_MulDiv_No_Round): Don't
4116 enclose with `TT_USE_BYTECODE_INTERPRETER'; we now need the function
4117 elsewhere also.
4118
4119 * src/autofit/afcjk.h: Use AF_CONFIG_OPTION_CJK.
4120
4121 * src/truetype/ttgload.c (tt_loader_init): Fix compiler warning.
4122
4123 * src/truetype/ttinterp.c (Ins_MSIRP): Fix compiler warning.
4124
4125 * src/truetype/ttinterp.h: Use
4126 TT_CONFIG_OPTION_BYTECODE_INTERPRETER.
4127
Infinalityed6508c2012-06-26 17:20:27 -050041282012-06-26 Infinality <infinality@infinality.net>
4129
4130 [truetype] Remove unused rounding functionality.
4131
4132 The subpixel hinting patch contained the concept of an adjustable
4133 number of gridlines per pixel. This is no longer used due to x
4134 being completely ignored instead. This will return some of the
4135 code to its existing state prior to the original Infinality
4136 commit.
4137
4138 * include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
4139 FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): Removed.
4140
4141 * src/truetype/ttinterp.c: Updated.
4142 (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
4143 Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, Round_Super_45,
4144 SetSuperRound): Remove parameter to handle the number of grid lines per
4145 pixel.
4146 (SET_SuperRound, ROUND_None, CUR_Func_round): Updated.
4147 (DO_SROUND, DOS45ROUND, DO_ODD, DO_EVEN): Updated.
4148 (DO_ROUND, DO_NROUND): Updated.
4149 (Move_Zp2_Point, Ins_SHPIX, Ins_MSIRP, Ins_MDAP, Ins_MIAP,
4150 Ins_MDRP, Ins_MIRP): Perform Round_None instead of calling a modified
4151 rounding function. Remove gridlines_per_pixel. Create a local
Werner Lemberg83c0eba2012-06-27 08:16:06 +02004152 variable to store control value cutin. Simplify the conditional for
Infinalityed6508c2012-06-26 17:20:27 -05004153 ignore_x_mode. Adjust rounding calls to pass only two values.
4154
Werner Lemberg56751532012-06-25 10:58:20 +020041552012-06-25 Werner Lemberg <wl@gnu.org>
4156
4157 [cff] Fix Savannah bug #36705.
4158
4159 Handle numbers like 2.001 correctly.
4160
4161 * src/cff/cffparse.c (cff_parse_real): Avoid negative values for
4162 `shift'.
4163
Infinality79e36ba2012-06-18 10:36:06 +020041642012-06-18 Infinality <infinality@infinality.net>
4165
4166 [truetype] Support subpixel hinting.
4167
4168 This is the large, famous `Infinality' patch to support ClearType
4169 bytecode which has been available from
4170 http://www.infinality.net/blog/ for some time, and which has been
4171 refined over the last years. While still experimental, it is now
4172 mature enough to be included directly into FreeType.
4173
4174 Most of the code is based on the ClearType whitepaper written by
4175 Greg Hitchcock
4176
4177 http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
4178
4179 which gives a detailed overview of the necessary changes to the
4180 Microsoft rasterizer so that older fonts are supported. However, a
4181 lot of details are still missing, and this patches provides a
4182 framework to easily handle rendering issues down to the glyph level
4183 of certain fonts.
4184
4185 Note that ClearType support is not completely implemented! In
4186 particular, full support for the options `compatible_widths',
4187 `symmetrical_smoothing, and `bgr' (via the GETINFO bytecode
4188 instruction) is missing.
4189
4190 * src/truetype/ttsubpix.c: New file, providing code to handle
4191 `tweaks', this is, rules for certain glyphs in certain fonts
4192 (including wildcards) which need a special treatment.
4193
4194 * src/truetype/ttsubpix.h: New file, holding the tweaking rules.
4195
4196 * include/freetype/config/ftoption.h, src/devel/ftoption.h
4197 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): New macro.
4198
4199 * include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
4200 FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): New macros.
4201
4202 * src/truetype/truetype.c [TT_USE_BYTECODE_INTERPRETER]: Include
4203 `ttsubpix.c'.
4204
4205 * src/truetype/ttgload.c: Include `ttsubpix.h'.
4206 [All changes below are guarded by TT_CONFIG_OPTION_SUBPIXEL_HINTING.]
4207
4208 (tt_get_metrics): Set tweak flags.
4209 (TT_Hint_Glyph): Call `FT_Outline_EmboldenXY' if necessary.
4210 (TT_Process_Simple_Glyph): Compensate emboldening if necessary.
4211 (compute_glyph_metrics): Handle `compatible widths' option.
4212 (tt_loader_init): Handle ClearType GETINFO information bits.
4213
4214 * src/truetype/rules.mk (TT_DRC_SRC): Updated.
4215
4216 * src/truetype/ttinterp.c: Include `ttsubpix.h'.
4217 [Where necessary, changes below are guarded by
4218 TT_CONFIG_OPTION_SUBPIXEL_HINTING.]
4219
4220 (Direct_Move, Direct_Move_X): Extended.
4221 (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
4222 Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, Round_Super_45,
4223 SetSuperRound): Add parameter to handle the number of grid lines per
4224 pixel.
4225 (SET_SuperRound, ROUND_None, CUR_Func_round): Updated.
4226 (DO_SROUND, DOS45ROUND, DO_ODD, DO_EVEN): Updated.
4227 (DO_ROUND, DO_NROUND): Updated.
4228 (DO_RS): Take care of `Typeman' bytecode patterns.
4229 (Ins_FDEF): Add some debugging code. Commented out.
4230 (Ins_ENDF): Restore state.
4231 (Ins_CALL, Ins_LOOPCALL): Handle inline delta functions.
4232 (Ins_MD): Handle `Vacuform' rounds.
4233 (Move_Zp2_Point, Ins_SHPIX, Ins_MSIRP, Ins_MDAP, Ins_MIAP,
4234 Ins_MDRP, Ins_MIRP): Handle tweaks.
4235 (Ins_ALIGNRP): Add tweak guard.
4236 (Ins_IUP, Ins_DELTAP): Handle tweaks.
4237 (Ins_GETINFO): Handle new ClearType bits.
4238 (TT_RunIns): Handle tweaks.
4239
4240 * src/truetype/ttinterp.h: Updated.
4241 (SPH_TweakRule, SPH_ScaleRule): New structures for tweaks.
4242 (TT_ExecContextRec): Add members for subpixel hinting support.
4243
4244 * src/truetype/ttobjs.h (TT_DefRecord): Add `inline_delta' member.
4245
Werner Lemberg320613e2012-06-15 06:45:12 +020042462012-06-15 Werner Lemberg <wl@gnu.org>
4247
4248 * Version 2.4.10 released.
4249 =========================
4250
4251
4252 Tag sources with `VER-2-4-10'.
4253
4254 * docs/VERSION.DLL: Update documentation and bump version number to
4255 2.4.10.
4256
4257 * README, Jamfile (RefDoc),
4258 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
4259 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
4260 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
4261 builds/win32/visualc/freetype.dsp,
4262 builds/win32/visualc/freetype.vcproj,
4263 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
4264 builds/win32/visualce/freetype.vcproj,
4265 builds/win32/visualce/index.html,
4266 builds/wince/vc2005-ce/freetype.vcproj,
4267 builds/wince/vc2005-ce/index.html,
4268 builds/wince/vc2008-ce/freetype.vcproj,
4269 builds/wince/vc2008-ce/index.html: s/2.4.9/2.4.10/, s/249/2410/.
4270
4271 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.
4272
4273 * builds/unix/configure.raw (version_info): Set to 15:0:9.
4274
Alexei Podtelezhnikovcea9d7a2012-06-15 06:33:46 +020042752012-06-15 Alexei Podtelezhnikov <apodtele@gmail.com>
4276
4277 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Improve spacing.
4278
4279 * docs/CHANGES: Updated.
4280
suzuki toshiyaa03cb012012-06-14 17:56:01 +090042812012-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4282
4283 * builds/exports.mk: Add CCexe_CFLAGS and CCexe_LDFLAGS.
4284
4285 to pass special compiler/linker flags under cross development.
4286 Suggested by Savannah bug #36367.
4287
4288 ChangeLog on 2010-07-15 saying as they were removed was wrong
4289 for the official trunk of FreeType2. This commit is the first
4290 introduction of them.
4291
Werner Lemberg2d67e9b2012-06-14 08:46:04 +020042922012-06-14 Werner Lemberg <wl@gnu.org>
4293
4294 * docs/CHANGES: Updated.
4295
suzuki toshiya6c7c3de2012-06-14 01:38:20 +090042962012-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4297
4298 [truetype] Add new versions of NEC FA family to tricky font list.
4299
4300 NEC FA family dated in 1996 have different checksum.
4301 Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>; see
4302
4303 http://lists.gnu.org/archive/html/freetype-devel/2012-06/msg00023.html
4304
4305 * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): 4 sets
4306 of fpgm & prep table checksums for FA-Gothic, FA-Minchou,
4307 FA-RoundedGothicM, FA-RoundedGothicB are added. The family
4308 names in sample PDF are truncated, thus the list of the
4309 family names in tt_check_trickyness_family() is not updated yet.
4310
Werner Lemberg495bd3c2012-06-06 13:24:04 +020043112012-06-06 Werner Lemberg <wl@gnu.org>
4312
4313 [ftraster] Fix rounding issue causing visual artifacts.
4314
4315 Problem reported by jola <hans-jochen.lau@lhsystems.com>; see
4316
4317 http://lists.gnu.org/archive/html/freetype-devel/2012-05/msg00036.html
4318
4319 * src/raster/ftraster.c (SMulDiv_No_Round): New macro.
4320 (Line_Up): Use it.
4321 * src/raster/ftmisc.h (FT_MulDiv_No_Round): Copied from `ftcalc.c'.
4322
Alexei Podtelezhnikov2bdd0942012-05-28 23:11:03 +020043232012-05-28 Alexei Podtelezhnikov <apodtele@gmail.com>
4324
4325 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Simplify.
4326
4327 We now use the cross product of the direction vectors to compute the
4328 outline's orientation.
4329
Werner Lembergaa6895c2012-05-28 22:55:54 +020043302012-05-28 Werner Lemberg <wl@gnu.org>
4331
4332 * docs/CHANGES: Updated.
4333
Alexei Podtelezhnikovf875fc72012-05-28 22:34:58 +020043342012-05-28 Alexei Podtelezhnikov <apodtele@gmail.com>
4335
4336 New function FT_Outline_EmboldenXY.
4337
4338 * include/freetype/ftoutln.h (FT_Outline_EmboldenXY): Define it.
4339
4340 * src/base/ftoutln.c (FT_Outline_EmboldenXY): Implement it, using a
4341 simplified embolding algorithm.
4342 (FT_Outline_Embolden): Make it a special case of
4343 `FT_Outline_EmboldenXY'
4344
Werner Lemberg8dc17bb2012-05-07 11:24:48 +020043452012-05-07 Werner Lemberg <wl@gnu.org>
4346
4347 [type1] Fix Savannah bug #36386.
4348
4349 * src/type1/t1load.c (t1_load_keyword): Ignore keyword if context is
4350 not valid.
4351
Werner Lemberg9c6d1ac2012-04-07 06:39:25 +020043522012-04-07 Werner Lemberg <wl@gnu.org>
4353
4354 Remove compiler warning.
4355
4356 * src/truetype/ttgload.c (TT_Load_Glyph)
4357 [!TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Access `glyph->face' directly.
4358
Werner Lemberg8be32d22012-03-28 12:21:50 +020043592012-03-28 Werner Lemberg <wl@gnu.org>
4360
4361 [autofit] Properly copy scaler flags to script metrics object.
4362
4363 Without this patch, only the dummy and cjk autohinter modules get
4364 them (since they copy the whole scaler object).
4365
4366 * src/autofit/aflatin.c (af_latin_metrics_scale),
4367 src/autofit/aflatin2.c (af_latin2_metrics_scale): Implement it.
4368
Alexei Podtelezhnikov0c5789f2012-03-22 07:05:40 +010043692012-03-22 Alexei Podtelezhnikov <apodtele@gmail.com>
4370
4371 [bdflib] Remove redundant macro.
4372
4373 * src/bdf/bdflib.c (isdigok): Remove and replace with sbitset, which
4374 is exactly the same.
4375
suzuki toshiyaf0b19412012-03-21 15:42:14 +090043762012-03-20 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4377
Werner Lemberg2d67e9b2012-06-14 08:46:04 +02004378 [configure] Fix Savannah bug #35644.
suzuki toshiyaf0b19412012-03-21 15:42:14 +09004379
4380 * builds/unix/configure.raw: Check `-ansi' flag works even if gcc
4381 is used. Bionic libc headers for Android lose the consistency
4382 when they are parsed with __STDC_VERSION__ older than 199901L or
4383 __STRICT_ANSI__.
4384
Werner Lemberg37b5c922012-03-20 07:23:12 +010043852012-03-20 Werner Lemberg <wl@gnu.org>
4386
4387 [bdf] Improvement to Savannah bug #35656.
4388
4389 * src/bdf/bdflib.c (isdigok): Add cast, as suggested in report.
4390
Werner Lembergb43e0f42012-03-17 07:42:43 +010043912012-03-17 Chris Liddell <chris.liddell@artifex.com>
4392
4393 [type1] Fix Savannah bug #35847.
4394
4395 * src/type1/t1load.c (parse_subrs): Fix the loop exit condition;
4396 we want to exit when we have run out of data.
4397
Werner Lemberg649c6732012-03-16 21:12:41 +010043982012-03-16 Werner Lemberg <wl@gnu.org>
4399
Werner Lembergb43e0f42012-03-17 07:42:43 +01004400 [bdf] Really fix Savannah bug #35658.
Werner Lemberg649c6732012-03-16 21:12:41 +01004401
4402 * src/bdf/bdflib.c (_bdf_list_split): Add one more `field' initializer.
4403
Werner Lembergad05bac2012-03-14 18:34:36 +010044042012-03-14 Yann Droneaud <yann@droneaud.fr>
4405
4406 [sfnt] Make arrays static like all others.
4407
4408 * src/sfnt/ttload.c (tt_face_load_maxp, tt_face_load_os2),
4409 src/sfnt/ttmtx.c (tt_face_load_hhea): Add `static' keyword to frame
4410 fields.
4411
Huw Daviesbf06b622012-03-14 14:44:46 +010044122012-03-14 Huw Davies <huw@codeweavers.com>
4413
Huw Davies3650f802012-03-14 18:29:57 +01004414 [sfnt] A refinement of the previous commit.
4415
4416 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
4417 tt_name_entry_ascii_from_other): Stop at null byte.
4418
44192012-03-14 Huw Davies <huw@codeweavers.com>
4420
Huw Daviesbf06b622012-03-14 14:44:46 +01004421 [sfnt] Add `name' table compatibility to MS Windows.
4422
4423 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
4424 tt_name_entry_ascii_from_other): Don't replace `\0' with question
4425 marks when converting strings.
4426
Werner Lemberg9a55cb72012-03-14 14:40:03 +010044272012-03-14 Werner Lemberg <wl@gnu.org>
4428
Werner Lemberg273e2b72012-09-18 13:27:27 +02004429 [type1] Fix Savannah bug #35833.
Werner Lemberg9a55cb72012-03-14 14:40:03 +01004430
4431 Based on the patch given in the bug report.
4432
4433 * src/type1/t1load.c (IS_INCREMENTAL): New macro.
4434 (read_binary_data): Add parameter `incremental'.
4435 Update all callers using `IS_INCREMENTAL'.
4436
Werner Lemberg10364092012-03-11 15:20:32 +010044372012-03-11 Werner Lemberg <wl@gnu.org>
4438
4439 [autofit] Return correct linear advance width values.
4440
4441 This was quite a subtle bug which accidentally showed up with glyph
4442 `afii10023' of arial.ttf (version 2.76). This glyph is a composite;
4443 the first component, `E', has an advance width of 1366 font units,
4444 while the advance width of the composite itself (which looks like
4445 uppercase `E' with dieresis) is 1367 font units. I think this is
4446 actually a bug in the font itself, because there is no reason that
4447 this glyph has not the same width as uppercase `E' without the
4448 dieresis. Anyway, it helped identify this problem.
4449
4450 Using the TrueType hinter, the correct value (1367) of `afii10023'
4451 was returned, but the autohinter mysteriously returned 1366.
4452
4453 Digging in the code showed that the autohinter recursively calls
4454 FT_Load_Glyph to load the glyph, adding the FT_LOAD_NO_SCALE load
4455 flag. However, the `linearHoriAdvance' field is still returned as a
4456 scaled value. To avoid scaling twice, the old code in autofit reset
4457 `linearHoriAdvance', using the `horiAdvance' field. This seemed to
4458 work since FT_LOAD_NO_SCALE was in use, but it failed actually,
4459 because `horiAdvance' is defined as the distance of the first
4460 subglyph's phantom points, which in turn are initialized using the
4461 advance width of the first subglyph. And as the given example
4462 shows, these widths can differ.
4463
4464 * src/autofit/afloader.c (af_loader_load_g): Temporarily set
4465 FT_LOAD_LINEAR_DESIGN while calling FT_Load_Glyph to get unscaled
4466 values for the linear advance widths.
4467
Werner Lemberge1899bc2012-03-10 09:28:24 +010044682012-03-10 Werner Lemberg <wl@gnu.org>
4469
4470 [truetype] Fix SSW instruction.
4471
4472 * src/truetype/ttinterp.c (DO_SSW): SSW *does* use font units. For
4473 verification, it took some time to find a font which actually uses
4474 this instruction.
4475
Vinnie Falco9e287892012-03-10 07:31:58 +010044762012-03-09 Vinnie Falco <vinnie.falco@gmail.com>
4477
4478 Prepare source code for amalgamation.
4479
Werner Lemberge1899bc2012-03-10 09:28:24 +01004480 * include/freetype/freetype.h: Swap order of preprocessor blocks.
Vinnie Falco9e287892012-03-10 07:31:58 +01004481
Werner Lembergc4cad302012-03-08 20:11:37 +010044822012-03-08 Werner Lemberg <wl@gnu.org>
4483
Werner Lemberg50ed33e2012-03-08 21:02:06 +01004484 * Version 2.4.9 released.
4485 =========================
4486
4487
4488 Tag sources with `VER-2-4-9'.
4489
4490 * docs/CHANGES: Updated.
4491
4492 * docs/VERSION.DLL: Update documentation and bump version number to
4493 2.4.9.
4494
4495 * README, Jamfile (RefDoc),
4496 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
4497 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
4498 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
4499 builds/win32/visualc/freetype.dsp,
4500 builds/win32/visualc/freetype.vcproj,
4501 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
4502 builds/win32/visualce/freetype.vcproj,
4503 builds/win32/visualce/index.html,
4504 builds/wince/vc2005-ce/freetype.vcproj,
4505 builds/wince/vc2005-ce/index.html,
4506 builds/wince/vc2008-ce/freetype.vcproj,
4507 builds/wince/vc2008-ce/index.html: s/2.4.8/2.4.9/, s/248/249/.
4508
4509 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 9.
4510
4511 * builds/unix/configure.raw (version_info): Set to 14:1:8.
4512
45132012-03-08 Werner Lemberg <wl@gnu.org>
4514
Werner Lembergc4cad302012-03-08 20:11:37 +01004515 [bdf] Add missing overflow check.
4516
4517 * src/bdf/bdflib.c (_bdf_parse_glyphs) <BITMAP>: Add threshold for
4518 `glyph->bpr'.
4519
Vinnie Falco26dfeb62012-03-08 06:04:03 +010045202012-03-07 Vinnie Falco <vinnie.falco@gmail.com>
4521
4522 Prepare source code for amalgamation.
4523
Werner Lemberge1899bc2012-03-10 09:28:24 +01004524 * src/autofit/aferrors.h, src/bdf/bdferror.h, src/bzip2/ftbzip2.c,
4525 src/cache/ftcerror.h, src/cff/cfferrs.h, src/cid/ciderrs.h,
4526 src/gxvalid/gxverror.h, src/gzip/ftgzip.c, src/lzw/ftlzw.c,
4527 src/otvalid/otverror.h, src/pcf/pcferror.h, src/pfr/pfrerror.h,
4528 src/psaux/psauxerr.h, src/pshinter/pshnterr.h,
4529 src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h,
4530 src/smooth/ftsmerrs.h, src/truetype/tterrors.h,
4531 src/type1/t1errors.h, src/type42/t42error.h, src/winfonts/fnterrs.h:
Vinnie Falco26dfeb62012-03-08 06:04:03 +01004532 Add #undef FT_ERR_PREFIX before #define FT_ERR_PREFIX.
4533
Werner Lembergceed93e2012-03-03 07:03:08 +010045342012-03-03 Werner Lemberg <wl@gnu.org>
4535
Werner Lembergba679572012-03-03 12:27:18 +01004536 Fix Savannah bug #35660.
4537
4538 For some divisions, we use casts to 32bit entities. Always guard
4539 against division by zero with these casts also.
4540
4541 * src/base/ftcalc.c (ft_div64by32): Remove redundant cast.
4542 (FT_MulDiv, FT_MulDiv_No_Round): Add 32bit cast.
4543 (FT_DivFix): Add 32bit cast (this omission triggered the bug).
4544
45452012-03-03 Werner Lemberg <wl@gnu.org>
4546
Werner Lembergceed93e2012-03-03 07:03:08 +01004547 [psaux] Fix handling of track kerning.
4548
4549 * src/psaux/afmparse.c (afm_parse_track_kern): Don't inverse sign
4550 for `min_kern'. It is indeed quite common that track kerning
4551 *increases* spacing for very small sizes.
4552
Werner Lemberg0fc8deb2012-03-02 16:09:51 +010045532012-03-02 Werner Lemberg <wl@gnu.org>
4554
4555 [truetype] Fix Savannah bug #35689.
4556
4557 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check first outline
4558 point.
4559
Werner Lemberga33c0132012-03-01 14:04:30 +010045602012-03-01 Werner Lemberg <wl@gnu.org>
4561
Werner Lemberg6ac022d2012-03-01 16:43:20 +01004562 [bdf] Fix Savannah bug #35656.
4563
4564 * src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity
4565 of nibble characters instead of accessing `a2i' array.
4566
45672012-03-01 Werner Lemberg <wl@gnu.org>
4568
Werner Lemberg7d35a7d2012-03-01 16:11:33 +01004569 [winfonts] Fix Savannah bug #35659.
4570
4571 * src/winfonts/winfnt.c (FNT_Face_Init): Check number of glyphs.
4572
45732012-03-01 Werner Lemberg <wl@gnu.org>
4574
Werner Lembergd9c16592012-03-01 15:15:00 +01004575 [bdf] Fix Savannah bug #35658.
4576
4577 * src/bdf/bdflib.c (_bdf_list_split): Initialize `field' elements
4578 properly.
4579
45802012-03-01 Werner Lemberg <wl@gnu.org>
4581
Werner Lemberg292144b2012-03-01 14:54:47 +01004582 [psaux] Fix Savannah bug #35657.
4583
4584 If in function `skip_spaces' the routine `skip_comment' comes to the
4585 end of buffer, `cur' is still increased by one, so we need to check
4586 for `p >= limit' and not `p == limit'.
4587
4588 * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed,
4589 PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Fix boundary checking.
4590
45912012-03-01 Werner Lemberg <wl@gnu.org>
4592
Werner Lemberga33c0132012-03-01 14:04:30 +01004593 [truetype] Fix Savannah bug #35646.
4594
4595 * src/truetype/ttinterp.c (Ins_MIRP): Typo, present since ages. The
4596 code is now in sync with the other operators (e.g. MSIRP) which
4597 modify twilight points.
4598
45992012-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg9eacbb82012-02-29 14:47:47 +01004600
Werner Lembergcee5d592012-03-01 09:26:03 +01004601 [bdf] Fix Savannah bug #35643.
4602
4603 * src/bdf/bdflib.c (_bdf_list_ensure): Bring code in sync with
4604 comment before `_bdf_list_split', this is, really allocate at least
4605 five `field' elements.
4606
Werner Lemberga33c0132012-03-01 14:04:30 +010046072012-03-01 Werner Lemberg <wl@gnu.org>
Werner Lembergcee5d592012-03-01 09:26:03 +01004608
Werner Lemberg4086fb72012-03-01 08:55:40 +01004609 [bdf] Fix Savannah bug #35641.
4610
4611 * src/bdf/bdflib.c (_bdf_parse_glyphs) <DWIDTH, BBX>: Abort if
4612 _BDF_ENCODING isn't set. We need this because access to the `glyph'
4613 variable might be undefined otherwise.
4614
Werner Lemberga33c0132012-03-01 14:04:30 +010046152012-03-01 Werner Lemberg <wl@gnu.org>
Werner Lemberg4086fb72012-03-01 08:55:40 +01004616
Werner Lemberg5dddcc42012-03-01 07:52:24 +01004617 [truetype] Fix Savannah bug #35640.
4618
4619 * src/truetype/ttinterp.c (SkipCode, TT_RunIns): Fix boundary check
4620 for NPUSHB and NPUSHW instructions.
4621
46222012-02-29 Werner Lemberg <wl@gnu.org>
4623
Werner Lemberg96cddb82012-02-29 17:58:57 +01004624 [truetype] Fix Savannah bug #35601.
4625
4626 * src/truetype/ttinterp.c (Ins_SHZ): Use number of points instead of
4627 last point for loop.
4628 Also remove redundant boundary check.
4629
46302012-02-29 Werner Lemberg <wl@gnu.org>
4631
Werner Lemberg9290fa92012-02-29 17:29:07 +01004632 [truetype] Remove redundant check.
4633
Werner Lemberg96cddb82012-02-29 17:58:57 +01004634 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
Werner Lemberg9290fa92012-02-29 17:29:07 +01004635 second check for ordered contour start points.
4636
46372012-02-29 Werner Lemberg <wl@gnu.org>
4638
Werner Lemberg9eacbb82012-02-29 14:47:47 +01004639 [truetype] Make SHC instruction behave similar to MS rasterizer.
4640
4641 * src/truetype/ttinterp.c (Ins_SHC): Handle virtual contour in
4642 twilight zone.
4643
Alexei Podtelezhnikovb25265c2012-02-29 13:45:24 +010046442012-02-29 Alexei Podtelezhnikov <apodtele@gmail.com>
4645
4646 Avoid modulo operators against a power-of-two denominator.
4647
4648 * src/afcjk.c (af_hint_normal_stem), src/base/ftoutln.c
4649 (ft_contour_has), src/cff/cffgload.c (cff_decoder_parse_charstrings)
4650 <cff_op_vvcurveto, cff_op_hhcurveto, cff_op_hvcurveto>,
4651 src/gxvalid/gxvcommn.c (GXV_32BIT_ALIGNMENT_VALIDATE),
4652 src/gxvalid/gxvfeat.c (gxv_feat_setting_validate): Replace `%' with
4653 `&' operator.
4654
Werner Lemberg5621fdd2012-02-29 13:33:33 +010046552012-02-29 Werner Lemberg <wl@gnu.org>
4656
4657 [autofit] Don't synchronize digit widths for light rendering mode.
4658
4659 We don't hint horizontally in this mode.
4660
4661 * src/autofit/afloader.c (af_loader_load_g) <Hint_Metrics>:
4662 Implement it.
4663
Alexei Podtelezhnikovc18c1882012-02-28 07:52:04 +010046642012-02-26 Alexei Podtelezhnikov <apodtele@gmail.com>
4665
4666 [type42] Minor code optimization (again).
4667
4668 * src/type42/t42parse.c (t42_parse_sfnts): Simplify previous change.
4669
Werner Lembergfcbc82e2012-02-26 20:54:19 +010046702012-02-26 Mateusz Jurczyk <mjurczyk@google.com>
4671 Werner Lemberg <wl@gnu.org>
4672
4673 [smooth] Fix Savannah bug #35604.
4674
4675 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `FT_Pos'
4676 instead of `FT_UInt' for some variables and update comparisons
4677 accordingly. A detailed analysis can be found in the bug report.
4678
Werner Lembergc42848e2012-02-26 19:44:04 +010046792012-02-26 Alexei Podtelezhnikov <apodtele@gmail.com>
4680
4681 [type42] Minor code optimization.
4682
4683 * src/type42/t42parse.c (t42_parse_sfnts): Use bitmask instead of
4684 modulo operator.
4685
Werner Lemberg58cbc462012-02-26 05:26:56 +010046862012-02-26 Werner Lemberg <wl@gnu.org>
4687
Werner Lembergbd633342012-02-26 08:46:05 +01004688 * docs/CHANGES: Updated.
4689
46902012-02-26 Werner Lemberg <wl@gnu.org>
4691
Werner Lembergd9577ad2012-02-26 08:03:57 +01004692 [type1] Fix Savannah bug #35608.
4693
4694 * src/type1/t1parse.c (T1_Get_Private_Dict): Reject too short
4695 dictionaries.
4696
46972012-02-26 Werner Lemberg <wl@gnu.org>
4698
Werner Lemberg03242f52012-02-26 06:52:56 +01004699 [bdf] Support `ENCODING -1 <n>' format.
4700
4701 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Implement it.
4702
47032012-02-26 Werner Lemberg <wl@gnu.org>
4704
Werner Lemberg28dd2c42012-02-26 06:18:58 +01004705 [bdf] Fix Savannah bug #35607.
4706
4707 * src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
4708 negative encoding values.
4709
47102012-02-26 Werner Lemberg <wl@gnu.org>
4711
Werner Lemberg58cbc462012-02-26 05:26:56 +01004712 [type1] Fix Savannah bug #35606.
4713
4714 * src/type1/t1load.c (parse_subrs): Add proper guards for `strncmp'.
4715
4716 * src/psaux/psobjs.c (ps_parser_skip_PS_token): Emit error message
4717 only if cur < limit.
4718
Werner Lemberg0b1c0c62012-02-25 10:23:04 +010047192012-02-25 Werner Lemberg <wl@gnu.org>
4720
Werner Lembergc776fc12012-02-25 14:21:01 +01004721 [pcf] Fix Savannah bug #35603.
4722
4723 * src/pcf/pcfread.c (pcf_get_properties): Assure final zero byte in
4724 `strings' array.
4725
47262012-02-25 Werner Lemberg <wl@gnu.org>
4727
Werner Lemberg82365c02012-02-25 13:22:40 +01004728 [type42] Fix Savannah bug #35602.
4729
4730 * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size' more
4731 thoroughly.
4732
47332012-02-25 Werner Lemberg <wl@gnu.org>
4734
Werner Lemberg0b1c0c62012-02-25 10:23:04 +01004735 [bdf] Fix Savannah bugs #35599 and #35600.
4736
4737 * src/bdf/bdflib.c (ACMSG16): New warning message.
4738 (_bdf_parse_glyphs) <_BDF_BITMAP>: Check line length.
4739
Werner Lemberg320d4972012-02-24 18:06:46 +010047402012-02-24 Werner Lemberg <wl@gnu.org>
4741
4742 [bdf] Fix Savannah bugs #35597 and #35598.
4743
4744 * src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value.
4745
Werner Lemberg1b99d0a2012-02-24 10:54:07 +010047462012-02-24  Vinnie Falco <vinnie.falco@gmail.com>
4747
Werner Lemberg6b5b6f32012-02-24 12:26:25 +01004748 Prepare source code for amalgamation (6/6).
4749
4750 * src/cff/cffdrivr.c: s/Load_Glyph/cff_glyph_load/.
4751
4752 * src/cid/cidload.c: s/parse_font_matrix/cid_parse_font_matrix/.
4753 s/t1_init_loader/cid_init_loader/.
4754 s/t1_done_loader/cid_done_loader/.
4755
4756 * src/pxaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/.
4757
4758 * src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/.
4759
4760 * src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/.
4761
47622012-02-24  Vinnie Falco <vinnie.falco@gmail.com>
4763
Werner Lemberg1b99d0a2012-02-24 10:54:07 +01004764 Prepare source code for amalgamation (5/6).
4765
4766 * include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after
4767 using it.
4768
Vinnie Falco95111432012-02-22 07:01:35 +010047692012-02-22  Vinnie Falco <vinnie.falco@gmail.com>
4770
4771 Prepare source code for amalgamation (4/6).
4772
4773 * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine RAS_ARG,
4774 RAS_ARGS, RAS_VAR, and RAS_VARS before defining it.
4775
4776 * src/smooth/ftgrays.c: s/TRaster/black_TRaster/,
4777 s/PRaster/black_PRaster/.
4778 * src/raster/ftraster.c: s/TRaster/gray_TRaster/,
4779 s/PRaster/gray_PRaster/.
4780
Vinnie Falco126405a2012-02-21 08:48:39 +010047812012-02-20  Vinnie Falco <vinnie.falco@gmail.com>
4782
Vinnie Falcod55f16d2012-02-21 09:21:19 +01004783 Prepare source code for amalgamation (3/6).
4784
4785 * src/smooth/ftgrays.c: s/TWorker/black_TWorker/,
4786 s/PWorker/black_PWorker/.
4787 * src/raster/ftraster.c: s/TWorker/gray_TWorker/,
Vinnie Falco95111432012-02-22 07:01:35 +01004788 s/PWorker/gray_PWorker/.
Vinnie Falcod55f16d2012-02-21 09:21:19 +01004789
47902012-02-20  Vinnie Falco <vinnie.falco@gmail.com>
4791
Vinnie Falco5ccebc42012-02-21 08:54:55 +01004792 Prepare source code for amalgamation (2/6).
4793
4794 * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR,
4795 CEILING, TRUNC, and SCALED before defining it.
4796
47972012-02-20  Vinnie Falco <vinnie.falco@gmail.com>
4798
Vinnie Falco126405a2012-02-21 08:48:39 +01004799 Prepare source code for amalgamation (1/6).
4800
4801 See discussion starting at
4802
4803 http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00037.html
4804
4805 * src/smooth/ftgrays.c: s/TBand/gray_TBand/.
4806 * src/raster/ftraster.c: s/TBand/black_TBand/.
4807
Werner Lemberg63486782012-02-17 14:55:27 +010048082012-02-17 Alexei Podtelezhnikov <apodtele@gmail.com>
4809
4810 [autofit] Fix outline flags.
4811
4812 * src/autofit/afloader.c (af_loader_load_g): Don't reassign
4813 `outline.flags' so that this information is preserved. See
4814 discussion starting at
4815
4816 http://lists.gnu.org/archive/html/freetype-devel/2012-02/msg00046.html
4817
Werner Lembergf24d0792012-02-11 09:37:46 +010048182012-02-11 Werner Lemberg <wl@gnu.org>
4819
Werner Lembergb4e06812012-02-11 20:56:10 +01004820 [truetype] Fix Savannah bug #35466.
4821
4822 Jump instructions are now bound to the current function. The MS
4823 Windows rasterizer behaves the same, as confirmed by Greg Hitchcock.
4824
4825 * src/truetype/ttinterp.h (TT_CallRec): Add `Cur_End' element.
4826 * src/truetype/ttobjs.h (TT_DefRecord): Add `end' element.
4827
4828 * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Check upper
4829 bound of jump address.
4830 (Ins_FDEF, Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns): Updated.
4831
48322012-02-11 Werner Lemberg <wl@gnu.org>
4833
Werner Lemberg185606a2012-02-11 14:34:05 +01004834 We don't use `extensions'.
4835
4836 * include/freetype/internal/ftobjs.h (FT_DriverRec): Remove
4837 `extensions' field.
4838
48392012-02-11 Werner Lemberg <wl@gnu.org>
4840
Werner Lembergf24d0792012-02-11 09:37:46 +01004841 Clean up `generic' fields.
4842
4843 * include/freetype/internal/ftobjs.h (FT_ModuleRec, FT_LibraryRec):
4844 Remove `generic' field since users can't access it.
4845
4846 * src/base/ftobjs.c (FT_Done_GlyphSlot): Call `generic.finalizer' as
4847 advertised in the documentation of FT_Generic.
4848 (Destroy_Module, FT_Done_Library): Updated to changes in `ftobjs.h'.
4849
Werner Lemberg0b7daff2012-02-07 08:52:41 +010048502012-02-07 Werner Lemberg <wl@gnu.org>
4851
Werner Lemberge343e872012-02-07 09:40:11 +01004852 [autofit] Harmonize function arguments.
4853
4854 * src/autofit/afloader.c, src/autofit/afloader.h: Use `FT_Int32' for
4855 `load_flags'.
4856
48572012-02-07 Werner Lemberg <wl@gnu.org>
4858
Werner Lemberg0b7daff2012-02-07 08:52:41 +01004859 * src/cff/cffobjs.c (cff_face_init): Remove unnecessary casts.
4860
suzuki toshiyac7c4d682012-01-17 15:13:50 +090048612012-01-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4862
suzuki toshiya7b02b702012-01-17 16:20:02 +09004863 [gxvalid] Fix Savannah bug #35286.
4864
4865 Patch submitted by anonymous reporter.
4866
4867 * src/gxvalid/gxvcommn.c (gxv_XStateTable_subtable_setup):
4868 gxv_set_length_by_ulong_offset() must be called with 3, not 4,
4869 the number of the subtables in the state tables; classTable,
4870 stateArray, entryTable.
4871
48722012-01-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4873
suzuki toshiyac7c4d682012-01-17 15:13:50 +09004874 [raccess] Modify for PIC build.
4875
4876 Based on the patch provided by Erik Dahlstrom <ed@opera.com>,
4877 http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00010.html
4878
4879 Also `raccess_guess_table[]' and `raccess_rule_by_darwin_vfs()'
4880 are renamed with `ft_' suffixes.
4881
4882 * src/base/ftbase.h: `raccess_rule_by_darwin_vfs()' is renamed
4883 to `ft_raccess_rule_by_darwin_vfs()'.
4884 * src/base/ftobjs.c: Ditto.
4885
4886 * src/base/ftrfork.c: Declarations of FT_RFork_Rule,
4887 raccess_guess_rec, are moved to...
4888 * include/freetype/internal/ftrfork.h: Here.
4889
4890 * include/freetype/internal/ftrfork.h:
4891 FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END} macros are defined
4892 to replace raccess_guess_table[] in both of PIC and non-PIC
4893 modes.
4894 * src/base/ftrfork.c: raccess_guess_table[] array is rewritten
4895 by FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END}.
4896
4897 * src/base/basepic.h (BasePIC): Add `ft_raccess_guess_table'
4898 storage. (FT_RACCESS_GUESS_TABLE_GET): New macro to retrieve
4899 the function pointer from `ft_raccess_guess_table' storage in
4900 `BasePIC' structure.
4901 * src/base/ftrfork.c (FT_Raccess_Guess): Rewritten with
4902 FT_RACCESS_GUESS_TABLE_GET.
4903 (raccess_get_rule_type_from_rule_index): Add `library' as the
4904 first argument to the function, to retrieve the storage of
4905 `ft_raccess_guess_table' from it. Also `raccess_guess_table'
4906 is replaced by FT_RACCESS_GUESS_TABLE_GET.
4907 (ft_raccess_rule_by_darwin_vfs): Ditto.
4908
suzuki toshiya4880a0e2012-01-16 18:51:15 +090049092012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4910
suzuki toshiya1749d8b2012-01-17 02:00:24 +09004911 Remove trailing spaces.
4912
49132012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4914
suzuki toshiyac24f77a2012-01-16 21:13:05 +09004915 Formatting PIC related sources.
4916
4917 * src/autofit/afpic.c: Harmonize to FT2 coding conventions.
4918 * src/base/basepic.c: Ditto.
4919 * src/base/ftpic.c: Ditto.
4920 * src/cff/cffpic.c: Ditto.
4921 * src/pshinter/pshpic.c: Ditto.
4922 * src/psnames/pspic.c: Ditto.
4923 * src/raster/rastpic.c: Ditto.
4924 * src/sfnt/sfntpic.c: Ditto.
4925 * src/smooth/ftspic.c: Ditto.
4926 * src/truetype/ttpic.c: Ditto.
4927
49282012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4929
Werner Lembergbd633342012-02-26 08:46:05 +01004930 [autofit] Fix the inclusion of `aflatin2.h' in PIC file.
suzuki toshiya8a5cea22012-01-16 20:41:53 +09004931
Werner Lembergbd633342012-02-26 08:46:05 +01004932 * src/autofit/afpic.c: Include `aflatin2.h' when
suzuki toshiya8a5cea22012-01-16 20:41:53 +09004933 FT_OPTION_AUTOFIT2 is defined, as afglobal.c does so.
4934 Unconditionally inclusion causes declared but unimplemented
4935 warning by GCC 4.6.
4936
49372012-01-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4938
suzuki toshiya4880a0e2012-01-16 18:51:15 +09004939 [cff] Remove redundant declarations of cff_cmap_XXX_class_rec.
4940
4941 * src/cff/cffpic.c: The declarations of
4942 FT_Init_Class_cff_cmap_encoding_class_rec() and
4943 FT_Init_Class_cff_cmap_unicode_class_rec() are removed.
4944 They can be obtained by the inclusion of cffcmap.h.
4945 cffcmap.h invokes FT_DECLARE_CMAP_CLASS() and it declares
4946 FT_Init_Class_cff_cmap_encoding_class_rec() etc in PIC mode.
4947
suzuki toshiyae38acb02012-01-15 20:05:22 +090049482012-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4949
suzuki toshiya3c966812012-01-15 23:35:31 +09004950 Fix redundant declaration warning in PIC mode.
4951
4952 Originally FT_DEFINE_{DRIVER,MODULE,RENDERER}() macros were
4953 designed to declare xxx_pic_{free,init} by themselves.
4954 Because these macros are used at the end of the module
4955 interface (e.g. ttdriver.c) and the wrapper source to build
4956 a module as a single object (e.g. truetype.c) includes
4957 the PIC file (e.g. ttpic.c) before the module interface,
4958 these macros are expanded AFTER xxx_pic_{free,init} body
4959 when the modules are built as single object.
4960 The declaration after the implementation causes the redundant
4961 declaration warnings, so the declarations are moved to module
4962 PIC headers (e.g. ttpic.h). Separating to other header files
4963 are needed for multi build.
4964
4965 * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER):
4966 Remove class_##_pic_free and class_##_pic_init declarations.
4967 * include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
4968 FT_DEFINE_MODULE): Ditto.
4969
4970 * src/base/basepic.h: Insert a comment and fix coding style.
4971 * src/autofit/afpic.h: Declare autofit_module_class_pic_{free,
4972 init}.
4973 * src/cff/cffpic.h: Declare cff_driver_class_pic_{free,init}.
4974 * src/pshinter/pshpic.h: Declare pshinter_module_class_pic_{free,
4975 init}.
4976 * src/psnames/pspic.h: Declare psnames_module_class_pic_{free,
4977 init}.
4978 * src/raster/rastpic.h: Declare
4979 ft_raster{1,5}_renderer_class_pic_{free,init}
4980 * src/sfnt/sfntpic.h: Declare sfnt_module_class_pic_{free,init}.
4981 * src/smooth/ftspic.h: Declare
4982 ft_smooth_{,lcd_,lcdv_}renderer_class_pic_{free,init}.
4983 * src/truetype/ttpic.h: Declare tt_driver_class_pic_{free,init}.
4984
49852012-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4986
suzuki toshiyae38acb02012-01-15 20:05:22 +09004987 Make pspic.c to include module error header to fix multi build.
4988
4989 * src/psnames/pspic.c: Include `psnamerr.h'.
4990
suzuki toshiya0614feb2012-01-15 01:29:41 +090049912012-01-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
4992
suzuki toshiya09f3e412012-01-15 02:48:47 +09004993 [base] Fix a dereference of uninitialized variable in PIC mode.
4994
4995 * src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be
4996 set before derefering to obtain `library'. The initialization
4997 of `clazz', `glyph', `library' and NULL pointer check are
4998 reordered to minimize PIC conditonals.
4999
50002012-01-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5001
suzuki toshiyae38acb02012-01-15 20:05:22 +09005002 [base] Insert explicit cast for GCC 4.6 in PIC mode.
suzuki toshiya0614feb2012-01-15 01:29:41 +09005003
5004 * src/base/ftinit.c (FT_Add_Default_Modules): Under PIC
5005 configuration, FT_DEFAULT_MODULES_GET returns
5006 FT_Module_Class** pointer, GCC 4.6 warns that
5007 const FT_Module_Class* const* variable is warned as
5008 inappropriate to store it. To calm it, explicit cast is
5009 inserted. Also `library' is checked to prevent the NULL
5010 pointer dereference in FT_DEFAULT_MODULES_GET.
5011
suzuki toshiya4b733512012-01-14 06:32:50 +090050122012-01-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5013
suzuki toshiya226f3612012-01-14 06:40:03 +09005014 Fix PIC build broken by d9145241fe378104ba4c12a42534549faacc92e6.
5015
5016 Under PIC configuration, FT_{CFF,PSCMAPS,SFNT,TT}_SERVICES_GET
5017 take no arguments but derefer the variable named `library'
5018 internally.
5019
5020 * src/cff/cffdrivr.c (cff_get_interface): Declare `library' and
5021 set it if non-NULL driver is passed.
5022 * src/truetype/ttdriver.c (tt_get_interface): Ditto.
5023
5024 * src/sfnt/sfdriver.c (sfnt_get_interface): Declare `library'
5025 under PIC configuration, and set it if non-NULL module is given.
5026 * src/psnames/psmodule.c (psnames_get_interface): Ditto.
5027
50282012-01-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5029
Werner Lembergbd633342012-02-26 08:46:05 +01005030 Make PIC files include module error headers, to use the error codes
5031 with per-module prefix.
suzuki toshiya4b733512012-01-14 06:32:50 +09005032
5033 * src/autofit/afpic.c: Include `aferrors.h'.
5034 * src/cff/cffpic.c: Include `cfferrs.h'.
5035 * src/pshinter/pshpic.c: Include `pshnterr.h'.
5036 * src/raster/rastpic.c: Include `rasterrs.h'.
5037 * src/sfnt/sfntpic.c: Include `sferrors.h'.
5038 * src/smooth/ftspic.c: Include `ftsmerrs.h'.
5039 * src/truetype/ttpic.c: Include `tterrors.h'.
5040
Tobias Ringström21472de2012-01-04 18:27:16 +010050412012-01-04 Tobias Ringström <tobias@ringis.se>
5042
5043 [truetype] Fix IP instruction if x_ppem != y_ppem.
5044
5045 * src/truetype/ttinterp.c (Ins_IP): Scale `orus' coordinates
5046 properly.
5047
Werner Lembergc017f072012-01-02 22:33:42 +010050482012-01-02 Werner Lemberg <wl@gnu.org>
5049
5050 Fix tracing message for `loca' table.
5051
5052 * src/truetype/ttpload.c (tt_face_get_location): Don't emit a
5053 warning message if the last `loca' entry references an empty glyph.
5054
Werner Lemberg5cb35642011-12-10 23:16:04 +010050552011-12-10 Werner Lemberg <wl@gnu.org>
5056
5057 Add some variable initializations.
5058 Reported by Richard COOK <rscook@unicode.org>.
5059
5060 * src/type1/t1driver.c (t1_ps_get_font_value): Initialize `val'.
5061 * src/smooth/ftgrays.c (gray_render_conic): Initialize `levels'
5062 earlier.
5063
Werner Lemberg96fcf872011-12-08 11:22:07 +010050642011-12-08 Werner Lemberg <wl@gnu.org>
5065
Werner Lemberg2fb22d52011-12-08 11:55:06 +01005066 Fix serious scaling bug in `FT_Get_Advances'.
5067
5068 * src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by
5069 `FT_Load_Glyph' must be simply multiplied by 1024.
5070
50712011-12-08 Werner Lemberg <wl@gnu.org>
5072
Werner Lemberg96fcf872011-12-08 11:22:07 +01005073 * src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing.
5074
suzuki toshiya714ee562011-12-02 21:14:18 +090050752011-12-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5076
5077 [mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH.
5078
5079 Originally FT_MACINTOSH was a pure auto macro and DARWIN_NO_CARBON
5080 was a configurable macro to disable Carbon-dependent code. Because
5081 now configure script sets DARWIN_NO_CARBON by default and disables
5082 Darwin & Carbon-dependent codes, these macros can be unified.
5083 FT_MACINTOSH (undefined by default) is kept and DARWIN_NO_CARBON
5084 (defined by default) is removed, because DARWIN_NO_CARBON violates
Vinnie Falco26dfeb62012-03-08 06:04:03 +01005085 FT_XXX naming convention of public macros, and a macro configured by
suzuki toshiya714ee562011-12-02 21:14:18 +09005086 default is not portable for the building without configure (e.g.
5087 make devel).
5088
5089 * builds/unix/configure.raw: Define FT_MACINTOSH if Carbon-based
5090 old Mac font support is requested and Carbon is available.
5091 * builds/unix/ftconfig.in: Undefine FT_MACINTOSH when the support
5092 for Mac OS X without Carbon (e.g. Mac OS X 10.4 for ppc64) is
5093 requested.
5094 * include/freetype/config/ftconfig.in: Ditto.
5095 * builds/vms/ftconfig.h: Ditto.
5096
5097 * src/base/ftbase.h: Remove DARWIN_NO_CARBON.
5098 * src/base/ftbase.c: Ditto.
5099 * src/base/ftobjs.c: Ditto.
5100 * src/base/ftrfork.c: Ditto.
5101
5102 * src/base/ftmac.c: Compile the body if FT_MACINTOSH is defined
5103 (same with TT_USE_BYTECODE_INTERPRETER in ttinterp.c).
5104 * builds/mac/ftmac.c: Ditto.
5105
5106 * builds/mac/FreeType.m68k_cfm.make.txt: Define FT_MACINTOSH.
5107 * builds/mac/FreeType.m68k_far.make.txt: Ditto.
5108 * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
5109 * builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
5110
suzuki toshiyaeba27812011-11-30 22:40:43 +090051112011-11-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5112
suzuki toshiya2968bd62011-11-30 23:25:38 +09005113 Fix Savannah bug #34728 (`make devel' on Mac OS X).
5114
5115 * builds/toplevel.mk: Check `/dev/null' to identify the Unix-
5116 like systems without `init' nor `hurd' (e.g. Mac OS X >= 10.4).
5117 * builds/unix/detect.mk: Ditto.
5118
51192011-11-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5120
suzuki toshiyaeba27812011-11-30 22:40:43 +09005121 [apinames] Fix the overflow of signed integer hash.
5122
5123 * src/tools/apinames.c (names_add): Change the type of `h' from
5124 int to unsigned int, to prevent undefined behaviour in the
5125 overflow of signed integers (overflow of unsigned int is defined
5126 to be wrap around). Found by clang test suggested by Sean
5127 McBride.
5128
Werner Lemberg910b5442011-11-30 13:08:28 +010051292011-11-30 Werner Lemberg <wl@gnu.org>
5130
Werner Lemberg628bebe2011-11-30 13:55:56 +01005131 [winfonts] Remove casts.
5132
5133 * src/winfonts/winfnt.c (winfnt_driver_class): Remove all casts and
5134 update affected functions.
5135 (FNT_Size_Select): Fix number of arguments.
5136
51372011-11-30 Werner Lemberg <wl@gnu.org>
5138
Werner Lemberg5a7a5932011-11-30 13:38:51 +01005139 [type42] Remove casts.
5140
5141 * src/type42/t42driver.c (t42_driver_class): Remove all casts and
5142 update affected functions.
5143
5144 * src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42driver
5145 changes.
5146
51472011-11-30 Werner Lemberg <wl@gnu.org>
5148
Werner Lemberg910b5442011-11-30 13:08:28 +01005149 [type1] Remove casts.
5150
5151 * src/type1/t1driver.c (t1_driver_class): Remove all casts and
5152 update affected functions.
5153
5154 * src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1objs.c:
5155 Updated for t1driver changes.
5156 src/type1/t1objs.h (T1_Driver): Remove unused typedef.
5157 Updated for t1driver changes.
5158
Werner Lemberg6e0d4cd2011-11-27 09:21:03 +010051592011-11-27 Werner Lemberg <wl@gnu.org>
5160
Werner Lemberged54e432011-11-27 16:39:53 +01005161 [bdf] Fix Savannah bug #34896.
5162
5163 ENCODING now covers the whole Unicode range.
5164
5165 Note, however, that this change is quite expensive since it
5166 increases the size of three arrays by almost 400kByte in total. The
5167 right fix is to replace the logic with something smarter.
5168 Additionally, there exist very old BDFs for three-byte CCCII
5169 encoding which exceeds the range of Unicode (another reason to have
5170 a smarter logic).
5171
5172 * src/bdf/bdf.h (bdf_font_t): Increase size of `nmod' and `umod'
5173 arrays.
5174 * src/bdf/bdflib.c (bdf_parse_t): Increase size of `have' array.
5175
51762011-11-27 Werner Lemberg <wl@gnu.org>
5177
Werner Lemberg6e0d4cd2011-11-27 09:21:03 +01005178 [bdf] Improve tracing.
5179
5180 * src/bdf/bdflib.c (DBGMSG1, DBGMSG2): New macros.
5181 (_bdf_parse_glyphs): Use them.
5182
Werner Lemberg930e9bf2011-11-26 13:38:26 +010051832011-11-26 Werner Lemberg <wl@gnu.org>
5184
Werner Lemberg70cf8c52011-11-26 20:09:39 +01005185 Improve tracing.
5186
5187 * src/bdf/bdfdrivr.c (BDF_Face_Done), src/pcf/pcfdrivr.c
5188 (PCF_Face_Done): Remove tracing message.
5189
5190 * src/bdf/bdfdrivr.c (BDF_Face_Init), src/cff/cffobjs.c
5191 (cff_face_init), src/cid/cidobjs.c (cid_face_init),
5192 src/pfr/pfrobjs.c (pfr_face_init), src/sfnt/sfobjs.c
5193 (sfnt_init_face), src/truetype/ttobjs.c (tt_face_init),
5194 src/type1/t1objs.c (T1_Face_Init), src/type42/t42objs.c
5195 (T42_Face_Init), src/winfonts/winfnt.c (FNT_Face_Init): Add
5196 `greeting' message.
5197
5198 * src/sfnt/sfobjs.c (sfnt_open_font), src/type42/t42objs.c
5199 (T42_Open_Face): Improve tracing.
5200
52012011-11-26 Werner Lemberg <wl@gnu.org>
5202
Werner Lemberg3630bf72011-11-26 18:20:24 +01005203 [cid] Fix error code.
5204
5205 * src/cid/cidparse.c (cid_parser_new): Do it.
5206
52072011-11-26 Werner Lemberg <wl@gnu.org>
5208
Werner Lembergd05d56f2011-11-26 18:13:09 +01005209 [cff] Fix error code.
5210
5211 * src/cff/cffload.c (cff_font_load): Do it.
5212
52132011-11-26 Werner Lemberg <wl@gnu.org>
5214
Werner Lemberg930e9bf2011-11-26 13:38:26 +01005215 Add new error code FT_Err_Missing_Module.
5216
5217 Previously, FreeType misleadingly returned
5218 FT_Err_Unknown_File_Format if a module was missing (or a test was
5219 missing completely).
5220
5221 * include/freetype/fterrdef.h (FT_Err_Missing_Module): Define.
5222
Werner Lembergf8f576d2011-11-26 18:07:30 +01005223 * src/cff/cffobjs.c (cff_face_init), src/cff/cffdrivr.c
5224 (cff_get_glyph_name), src/cid/cidobjs.c (cid_face_init),
5225 src/sfnt/sfobjs.c (sfnt_init_face), src/truetype/ttobjs.c
5226 (tt_face_init), src/type1/t1objs.c (T1_Face_Init),
5227 src/type42/t42objs.c (T42_Face_Init, T42_Driver_Init): Updated.
Werner Lemberg930e9bf2011-11-26 13:38:26 +01005228
5229 * src/type1/t1afm.c (T1_Read_Metrics), src/type/t1objs.c
5230 (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Remove now
5231 redundant test for `psaux'.
5232
Werner Lemberge01406b2011-11-25 09:44:28 +010052332011-11-25 Werner Lemberg <wl@gnu.org>
5234
5235 [bdf] Add more error messages.
5236
5237 * src/bdf/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
5238 Add line number argument.
5239 Update all callers.
5240 (ERRMSG5, ERRMSG6, ERRMSG7, ERRMSG8, ERRMSG9): New macros.
5241 (_bdf_readstream, _bdf_set_default_spacing, _bdf_add_property,
5242 _bdf_parse_glyphs, _bdf_parse_start): Add error messages.
5243
Werner Lembergfd905c02011-11-24 12:53:38 +010052442011-11-24 Werner Lemberg <wl@gnu.org>
5245
5246 * include/freetype/fterrors.h: Remove dead code.
5247
Werner Lemberg9d7f0952011-11-14 20:37:12 +010052482011-11-15 Werner Lemberg <wl@gnu.org>
5249
Werner Lembergbb18bf72011-11-15 08:34:54 +01005250 * docs/releases: Updated.
5251
52522011-11-15 Werner Lemberg <wl@gnu.org>
5253
Werner Lemberg9d7f0952011-11-14 20:37:12 +01005254 * Version 2.4.8 released.
5255 =========================
5256
5257
5258 Tag sources with `VER-2-4-8'.
5259
5260 * docs/CHANGES: Updated.
5261
5262 * docs/VERSION.DLL: Update documentation and bump version number to
5263 2.4.8.
5264
5265 * README, Jamfile (RefDoc),
5266 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5267 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5268 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
5269 builds/win32/visualc/freetype.dsp,
5270 builds/win32/visualc/freetype.vcproj,
5271 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5272 builds/win32/visualce/freetype.vcproj,
5273 builds/win32/visualce/index.html,
5274 builds/wince/vc2005-ce/freetype.vcproj,
5275 builds/wince/vc2005-ce/index.html,
5276 builds/wince/vc2008-ce/freetype.vcproj,
5277 builds/wince/vc2008-ce/index.html: s/2.4.7/2.4.8/, s/247/248/.
5278
5279 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.
5280
5281 * builds/unix/configure.raw (version_info): Set to 14:0:8.
5282
Chris Liddell8b90cf02011-11-13 16:30:59 +010052832011-11-13 Chris Liddell <chris.liddell@artifex.com>
5284
5285 Add FT_Get_PS_Font_Value() API.
5286
5287 This allows a Type 1 font face to be interrogated to retrieve most
5288 of the dictionary keys (keys not relevant to FreeType's Type 1
5289 interpreter are not available).
5290
5291 * include/freetype/internal/services/svpsinfo.h
5292 (PS_GetFontValueFunc): New typedef.
5293 (PSInfo): Add `ps_get_font_value'.
5294 (FT_DEFINE_SERVICE_PSINFOREC): Updated.
5295
5296 * include/freetype/internal/t1types.h (T1_EncodingType): Moved to...
5297 * include/freetype/t1tables.h: Here.
5298 (PS_Dict_Keys): New enumeration.
5299 (FT_Get_PS_Font_Value): New declaration.
5300
5301 * src/base/fttype1.c (FT_Get_PS_Font_Value): New function.
5302
5303 * src/type1/t1driver.c (t1_ps_get_font_value): This new function
5304 does the real job.
5305 (t1_service_ps_info): Add it.
5306
5307 * src/cff/cffdrivr.c (cff_service_ps_info), src/cid/cidriver.c
5308 (cid_service_ps_info), src/type42/t42drivr.c (t42_service_ps_info):
5309 Updated.
5310
Braden Thomas14a16e32011-11-08 08:27:42 +010053112011-11-08 Braden Thomas <bthomas@apple.com>
5312
5313 [cid] Various loading fixes.
5314
5315 * src/cid/cidload.c (cid_load_keyword) <default>,
5316 (parse_font_matrix, parse_expansion_factor): Correctly check number
5317 of dictionaries.
5318 (cid_read_subrs): Protect against invalid values of `num_subrs'.
5319 Assure that the elements of the `offsets' array are ascending.
5320
Werner Lembergb2874fd2011-11-05 08:39:58 +010053212011-11-05 Werner Lemberg <wl@gnu.org>
5322
5323 * README: We use copyright ranges also.
5324
5325 According to
5326
5327 http://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html
5328
5329 this should be mentioned explicitly.
5330
suzuki toshiyadbe330b2011-10-30 12:31:03 +090053312011-10-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5332
suzuki toshiya94ada3d2011-10-30 14:03:13 +09005333 [raccess] Supplement for previous fix.
5334
5335 * src/base/ftbase.h (raccess_rule_by_darwin_vfs): Do not declare
5336 it on native Mac OS X.
5337 * src/base/ftrfork.c (raccess_get_rule_type_from_rule_index):
5338 Hide raccess_get_rule_type_from_rule_index() on native Mac OS X
5339 too.
5340
53412011-10-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5342
suzuki toshiyadbe330b2011-10-30 12:31:03 +09005343 [raccess] Hide raccess_rule_by_darwin_vfs() on native Mac OS X.
5344
5345 * src/base/ftrfork.c (raccess_rule_by_darwin_vfs): Do not
5346 compile on native Mac OS X because it is not used.
5347
Werner Lembergf4ec60f2011-10-25 20:25:32 +020053482011-10-25 Werner Lemberg <wl@gnu.org>
5349
5350 [truetype] Fix MD instruction for twilight zone.
5351
5352 * src/truetype/ttinterp.c (Ins_MD): Without this fix, the MD
5353 instruction applied to original coordinates of twilight points
5354 always returns zero.
5355
Werner Lemberg016eba92011-10-18 13:34:32 +020053562011-10-18 Werner Lemberg <wl@gnu.org>
5357
5358 * Version 2.4.7 released.
5359 =========================
5360
5361
5362 Tag sources with `VER-2-4-7'.
5363
5364 * docs/CHANGES: Updated.
5365
5366 * docs/VERSION.DLL: Update documentation and bump version number to
5367 2.4.7.
5368
5369 * README, Jamfile (RefDoc),
5370 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5371 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5372 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
5373 builds/win32/visualc/freetype.dsp,
5374 builds/win32/visualc/freetype.vcproj,
5375 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5376 builds/win32/visualce/freetype.vcproj,
5377 builds/win32/visualce/index.html,
5378 builds/wince/vc2005-ce/freetype.vcproj,
5379 builds/wince/vc2005-ce/index.html,
5380 builds/wince/vc2008-ce/freetype.vcproj,
5381 builds/wince/vc2008-ce/index.html: s/2.4.6/2.4.7/, s/246/247/.
5382
Werner Lemberg9d7f0952011-11-14 20:37:12 +01005383 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7.
Werner Lemberg016eba92011-10-18 13:34:32 +02005384
5385 * builds/unix/configure.raw (version_info): Set to 13:2:7.
5386
Kal Conley298608d2011-10-15 09:09:59 +020053872011-10-15 Kal Conley <kcconley@gmail.com>
5388
Kal Conley72185cb2011-10-15 09:33:11 +02005389 Fix handling of transformations if no renderer is present.
5390
5391 * src/base/ftobjs.c (FT_Load_Glyph): Thinko.
5392
53932011-10-15 Kal Conley <kcconley@gmail.com>
5394
Kal Conley298608d2011-10-15 09:09:59 +02005395 Fix conditions for autohinting.
5396
5397 * src/base/ftobjs.c (FT_Load_Glyph): Handle
5398 FT_LOAD_IGNORE_TRANSFORM.
5399
suzuki toshiyafaddba42011-10-08 01:30:49 +090054002011-10-07 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5401
5402 [gxvalid] Fix a bug to detect too large offset in morx table.
5403
5404 * src/gxvalid/gxvmorx2.c
5405 (gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug
5406 that too large positive offset cannot be detected.
5407
Werner Lemberg9c98fbf2011-10-01 09:25:55 +020054082011-10-01 Braden Thomas <bthomas@apple.com>
5409
5410 Handle some border cases.
5411
5412 * include/freetype/config/ftstdlib.h (FT_USHORT_MAX): New macro.
5413
5414 * src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid
5415 value of `target->rows'.
5416
5417 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for
5418 flex start.
5419
5420 * src/raster/ftrend1.c (ft_raster1_render): Check `width' and
5421 `height'.
5422
5423 * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against
5424 invalid values in `localpoints' array.
5425
Werner Lemberg6ae8bde2011-10-01 08:55:20 +020054262011-10-01 Werner Lemberg <wl@gnu.org>
5427
5428 [psnames] Handle zapfdingbats.
5429 Problem reported by Nicolas Rougier <Nicolas.Rougier@inria.fr>.
5430
5431 * src/tools/glnames.py (adobe_glyph_list): Add data from AGL's
5432 `zapfdingbats.txt' file.
5433
5434 * src/psnames/pstables.h: Regenerated.
5435
54362011-09-27 Simon Bünzli <zeniko@gmail.com>
Werner Lembergbfc20c72011-09-27 17:35:09 +02005437
Werner Lemberg273e2b72012-09-18 13:27:27 +02005438 [type1] Fix Savannah bug #34189.
Werner Lembergbfc20c72011-09-27 17:35:09 +02005439
5440 * src/type1/t1load.c (T1_Open_Face): Initialize
5441 `face->len_buildchar'.
5442
Werner Lemberg34d28182011-09-26 08:59:21 +020054432011-09-26 Werner Lemberg <wl@gnu.org>
5444
5445 [cff] Dump SIDs while tracing.
5446
5447 * src/cff/cffobjs.c (cff_face_init): Do it.
5448
5449 * src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE]
5450 <cff_kind_string>: Identify as SID.
5451
Werner Lemberg34eca6e2011-09-17 09:46:46 +020054522011-09-17 Werner Lemberg <wl@gnu.org>
5453
5454 Remove unused FT_ALIGNMENT macro.
5455
5456 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
5457 include/freetype/config/ftconfig.h: Do it.
5458
Werner Lemberge9e93d12011-09-17 09:21:25 +020054592011-09-17 Alexei Podtelezhnikov <apodtele@gmail.com>
5460
5461 [smooth] Slightly optimize conic and cubic flatterners.
5462
5463 * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
5464 out some code from the main loop to speed it up.
5465
Tomas Hoger86c3c692011-09-11 09:08:40 +020054662011-09-11 Tomas Hoger <thoger@redhat.com>
5467
Tomas Hoger487913d2011-09-11 09:18:10 +02005468 Slightly improve LZW_CLEAR handling.
5469
5470 * src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_CODE>:
5471 Ensure that subsequent (modulo garbage byte(s)) LZW_CLEAR codes are
5472 handled as clear codes. This also re-sets old_code and old_char to
5473 predictable values, which is a little better than using `random'
5474 ones if the code following LZW_CLEAR is invalid.
5475
54762011-09-11 Tomas Hoger <thoger@redhat.com>
5477
Tomas Hoger83cb6c02011-09-11 09:13:45 +02005478 Add explicit LZW decompression stack size limit.
5479
5480 Stack larger than 1<<LZW_MAX_BITS is never needed if prefix table is
Werner Lemberged54e432011-11-27 16:39:53 +01005481 constructed correctly. It's even less than that, see e.g.
Tomas Hoger83cb6c02011-09-11 09:13:45 +02005482 libarchive code comment for a better size upper bound:
5483
5484 http://code.google.com/p/libarchive/source/browse/trunk/libarchive/archive_read_support_filter_compress.c?r=3635#121
5485
5486 This patch adds explicit stack size limit, enforced when stack is
5487 realloced.
5488
5489 An alternative is to ensure that code < state->prefix[code - 256]
5490 when traversing prefix table. Such check is less efficient and
5491 should not be required if prefix table is constructed correctly in
5492 the first place.
5493
5494 * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it.
5495
54962011-09-11 Tomas Hoger <thoger@redhat.com>
5497
Tomas Hoger86c3c692011-09-11 09:08:40 +02005498 Protect against loops in the prefix table.
5499
5500 LZW decompressor did not sufficiently check codes read from the
5501 input LZW stream. A specially-crafted or corrupted input could
5502 create a loop in the prefix table, which leads to memory usage
5503 spikes, as there's no decompression stack size limit.
5504
5505 * src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_START>: First
5506 code in valid LZW stream must be 0..255.
5507 <FT_LZW_PHASE_CODE>: In the special KwKwK case, code == free_ent,
5508 code > free_ent is invalid.
5509
Werner Lemberg57b6a612011-09-09 19:05:54 +020055102011-09-09 Werner Lemberg <wl@gnu.org>
5511
5512 Better tracing of metrics.
5513
5514 * src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with
5515 FT_TRACE.
5516
Werner Lembergbb211ce2011-09-07 15:01:20 +020055172011-09-07 Werner Lemberg <wl@gnu.org>
5518
Werner Lemberg273e2b72012-09-18 13:27:27 +02005519 [cff] Fix Savannah bug #33816.
Werner Lembergbb211ce2011-09-07 15:01:20 +02005520
5521 * src/cff/cfftypes.h (CFF_FontRecDictRec): New member
5522 `has_font_matrix'.
5523 * src/cff/cffparse.c (cff_parse_font_matrix): Set it.
5524 Update tracing output.
5525 * src/cff/cffobjs.c (cff_face_init): Use it so that the heuristics
5526 can be removed.
5527
Werner Lemberg51ca7712011-08-30 07:42:19 +020055282011-08-30 Werner Lemberg <wl@gnu.org>
5529
5530 Better tracing of metrics.
5531
5532 * src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics):
5533 Decorate with FT_TRACE.
5534
Werner Lemberg35ab70c2011-08-25 13:41:16 +020055352011-08-25 Werner Lemberg <wl@gnu.org>
5536
5537 [cff] Better tracing of the parsing process.
5538
5539 * src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with
5540 FT_TRACE.
5541
5542 * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
5543 cff_parse_private_dict, cff_parse_cid_ros): Updated.
5544 (CFF_FIELD_NUM, CFF_FIELD_FIXED, CFF_FIELD_FIXED_1000,
5545 CFF_FIELD_STRING, CFF_FIELD_BOOL, CFF_FIELD_CALLBACK, CFF_FIELD,
5546 CFF_FIELD_DELTA): Add argument for ID.
5547 (cff_parser_run): Decorate with FT_TRACE.
5548
5549 * src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add
5550 `id' member.
5551
5552 * src/cff/cfftoken.h: Add IDs to all fields.
5553
Werner Lembergc3fb9812011-08-16 16:04:33 +020055542011-08-16 Werner Lemberg <wl@gnu.org>
5555
5556 Fix Savannah bug #34022.
5557
5558 * README, docs/INSTALL: Remove references to UPGRADE.UNIX.
5559
Werner Lembergfa5c2e92011-08-15 17:46:40 +020055602011-08-15 Werner Lemberg <wl@gnu.org>
5561
5562 Fix Savannah bug #34018.
5563
Werner Lembergc3fb9812011-08-16 16:04:33 +02005564 * docs/UPGRADE.UNIX: Removed. Obsolete.
Werner Lembergfa5c2e92011-08-15 17:46:40 +02005565
David Bevan864c4262011-08-15 17:34:01 +020055662011-08-15 David Bevan <david.bevan@pb.com>
5567
5568 Fix Savannah bug #33992.
5569
5570 * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case.
5571
Werner Lembergbad01602011-08-12 19:50:13 +020055722011-08-12 Werner Lemberg <wl@gnu.org
5573
5574 [truetype] Fix degenerate case in S{P,F,DP}VTL opcodes.
5575
5576 * src/truetype/ttinterp.c (Ins_SxVTL): Handle p1 == p2 specially.
5577 (Ins_SDPVTL): Handle v1 == v2 specially.
5578
Werner Lembergb91e7852011-08-09 17:48:44 +020055792011-08-09 Werner Lemberg <wl@gnu.org>
5580
Werner Lemberg273e2b72012-09-18 13:27:27 +02005581 [cff] Fix Savannah bug #33975.
Werner Lembergb91e7852011-08-09 17:48:44 +02005582
5583 * src/cff/cffparse.c (cff_parse_font_matrix): Fix typo.
5584
Werner Lemberge7d42362011-07-29 06:15:20 +020055852011-07-29 Werner Lemberg <wl@gnu.org>
5586
Werner Lemberg29a79652011-07-29 06:23:27 +02005587 * Version 2.4.6 released.
5588 =========================
5589
5590
5591 Tag sources with `VER-2-4-6'.
5592
5593 * docs/CHANGES: Updated.
5594
5595 * docs/VERSION.DLL: Update documentation and bump version number to
5596 2.4.6.
5597
5598 * README, Jamfile (RefDoc),
5599 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5600 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5601 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
5602 builds/win32/visualc/freetype.dsp,
5603 builds/win32/visualc/freetype.vcproj,
5604 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5605 builds/win32/visualce/freetype.vcproj,
5606 builds/win32/visualce/index.html,
5607 builds/wince/vc2005-ce/freetype.vcproj,
5608 builds/wince/vc2005-ce/index.html,
5609 builds/wince/vc2008-ce/freetype.vcproj,
5610 builds/wince/vc2008-ce/index.html: s/2.4.5/2.4.6/, s/245/246/.
5611
5612 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.
5613
5614 * builds/unix/configure.raw (version_info): Set to 13:1:7.
5615
56162011-07-29 Werner Lemberg <wl@gnu.org>
5617
Werner Lemberge7d42362011-07-29 06:15:20 +02005618 [cff] Add some more tracing infos.
5619
5620 * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
5621 cff_parse_cid_ros): Add tracing.
5622
Dirk Müllerb03c4a02011-07-22 05:24:11 +020056232011-07-22 Dirk Müller <dmueller@suse.de>
5624
5625 [psaux, type1] Fix null pointer dereferences.
5626
5627 Found with font fuzzying.
5628
5629 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Check
5630 `decoder->buildchar'.
5631
5632 * src/type1/t1load.c (t1_load_keyword): Check `blend->num_designs'.
5633
Chris Morgan3abf6172011-07-20 06:48:08 +020056342011-07-20 Chris Morgan <cmorgan@cybexintl.com>
5635
5636 Add FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT.
5637
5638 Useful for embedded systems which don't need file stream support.
5639
5640 * src/base/ftsystem.c, src/base/ftobjs.c (FT_Stream_New): Implement
5641 it.
5642
Elton Chung77f04ce2011-07-20 06:30:20 +020056432011-07-20 Elton Chung <elton328@gmail.com>
5644
5645 * src/base/ftpatent.c (FT_Face_SetUnpatentedHinting): Fix typo.
5646
Steven Chub0962ac2011-07-16 09:12:42 +020056472011-07-16 Steven Chu <steven.f.chu@gmail.com>
5648
5649 [truetype] Fix metrics on size request for scalable fonts.
5650
5651 * src/truetype/ttdriver.c (tt_size_request): Fix copying metrics
5652 from TT_Size to FT_Size if scalable font.
5653
Werner Lemberge7d42362011-07-29 06:15:20 +02005654 See
5655
5656 http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00049.html
5657
5658 for some comparison images.
5659
Matthias Drochner143799d2011-07-14 07:35:51 +020056602011-07-14 Matthias Drochner <M.Drochner@fz-juelich.de>.
5661
5662 [psaux] Fix potential sign extension problems.
5663
5664 When shifting right a signed value, it is not defined by the
5665 C standard whether one gets a sign extension or not. Use a macro to
5666 do an explicit cast from a signed short (assuming that this is
5667 16bit) to an int.
5668
5669 * src/psaux/t1decode.c (Fix2Int): New macro.
5670 Use it where appropriate.
5671
Werner Lemberg60f83712011-07-14 07:34:12 +020056722011-07-14 Werner Lemberg <wl@gnu.org>
5673
5674 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
5675 <op_callothersubr>: Better handling of subroutine index 0.
5676 From Matthias Drochner <M.Drochner@fz-juelich.de>.
5677
Алексей Подтележниковdc33b4a2011-07-10 07:08:51 +020056782011-07-10 Алексей Подтележников <apodtele@gmail.com>
5679
5680 [psaux] Optimize previous commit.
5681
5682 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
5683 <op_callothersubr>: Move error check down to avoid testing twice for
5684 good cases.
5685
Werner Lembergc46b1e22011-07-08 13:46:42 +020056862011-07-08 Werner Lemberg <wl@gnu.org>
5687
5688 [psaux] Add better argument check for `callothersubr'.
5689
5690 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
5691 <op_callothersubr>: Reject negative arguments.
5692
Werner Lembergf0957442011-07-07 14:10:39 +020056932011-07-07 Werner Lemberg <wl@gnu.org>
5694
5695 [sfnt] Try harder to find non-zero values for ascender and descender.
5696
5697 * src/sfnt/sfobjs.c (sfnt_load_face): Consult `OS/2' table in case
5698 the `hhea' table's values are zero.
5699
Werner Lembergf4b63322011-07-03 11:24:46 +020057002011-07-03 Werner Lemberg <wl@gnu.org>
5701
5702 Fix previous commit.
5703
5704 We want to unset FT_FACE_FLAG_SCALABLE only if there are bitmap
5705 strikes in the font.
5706
5707 * src/truetype/ttobjs.c (tt_face_init): Implement it.
5708
5709 * docs/CHANGES: Updated.
5710
Just Fill Bugs07598332011-07-02 18:41:36 +020057112011-07-02 Just Fill Bugs <mozbugbox@yahoo.com.au>
5712
Werner Lemberg273e2b72012-09-18 13:27:27 +02005713 [truetype] Fix Savannah bug #33246.
Just Fill Bugs07598332011-07-02 18:41:36 +02005714
5715 * src/truetype/ttobjs.c (tt_check_single_notdef): New function.
5716 (tt_face_init): Use it to test FT_FACE_FLAG_SCALABLE.
5717
Werner Lemberg9ae6c7c2011-07-02 12:15:10 +020057182011-07-02 Werner Lemberg <wl@gnu.org>
5719
5720 * docs/CHANGES: Updated.
5721
David Bevanaecbfe12011-07-02 12:09:52 +020057222011-07-02 David Bevan <david.bevan@pb.com>
5723
5724 [ftstroke] Major revision.
5725
5726 The main problems
5727 -----------------
5728
5729 o If FT_STROKER_LINEJOIN_BEVEL was specified, unlimited miter
5730 joins (not bevel joins) were generated. Indeed, the meanings of
5731 `miter' and `bevel' were incorrectly reversed (consistently) in
5732 both the code and comments.
5733
5734 o The way bevel joins were constructed (whether specified
5735 explicitly, or created as a result of exceeding the miter limit)
5736 did not match what is required for stroked text in PostScript or
5737 PDF.
5738
5739 The main fixes
5740 --------------
5741
5742 o The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
5743
5744 o A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has been
5745 introduced to support PostScript and PDF miter joins.
5746
5747 o FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
5748 alias for FT_STROKER_LINEJOIN_MITER.
5749
5750 Additionally, a variety of stroking errors have been fixed. These
5751 would cause various artifacts (including points `at infinity'),
5752 especially when stroking poor quality fonts.
5753
5754 See
5755
5756 http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00001.html
5757
5758 for example documents. The FreeType stroker now produces results
5759 very similar to that produced by GhostScript and Distiller for these
5760 fonts.
5761
5762 Other problems
5763 --------------
5764
5765 The following problems have been resolved:
5766
5767 o Inside corners could be generated incorrectly. Intersecting the
5768 inside corner could cause a missing triangular area and other
5769 effects.
5770
5771 The intersection point can only be used if the join is between
5772 two lines and both lines are long enough. The `optimization'
5773 condition in `ft_stroker_inside' has been corrected; this
5774 requires the line length to be passed into various functions and
5775 stored in `FT_StrokerRec'.
5776
5777 o Incorrect cubic curves could be generated. The angle
5778 calculations in `FT_Stroker_CubicTo' have been corrected to
5779 handle the case of the curve crossing the +/-PI direction.
5780
5781 o If the border radius was greater than the radius of curvature of
5782 a curve, then the negative sector would end up outside (not
5783 inside) the border. This situation is now recognized and the
5784 negative sector is circumnavigated in the opposite direction.
5785 (If round line joins are being used, this code is disabled
5786 because the line join will always cover the negative sector.)
5787
5788 o When a curve is split, the arcs may not join smoothly (especially
5789 if the curve turns sharply back on itself). Changes in
5790 direction between adjacent arcs were not handled. A round
5791 corner is now added if the deviation from one arc to the next is
5792 greater than a suitable threshold.
5793
5794 o The current direction wasn't retained if a the outline contained
5795 a zero length lineto or a curve that was determined to be
5796 `basically a point'. This could cause a spurious join to be
5797 added.
5798
5799 o Cubics with close control points could be mishandled. All eight
5800 cases are now distinguished correctly.
5801
5802 Other improvements
5803 ------------------
5804
5805 o Borders for cubic curves could be too `flat'.
5806 FT_SMALL_CUBIC_THRESHOLD has been reduced a little to prevent
5807 this.
5808
5809 o The handling and use of movable points has been simplified a
5810 little.
5811
5812 o Various values are now computed only if the results are actually
5813 needed.
5814
5815 o The directions of the outer and inner borders have been swapped,
5816 as recommended by Graham Asher.
5817
5818 * src/base/ftstroke.c: Revised.
5819 * include/freetype/ftstroke.h: Updated.
5820
Werner Lembergee5d3b52011-06-30 15:08:15 +020058212011-06-30 İsmail Dönmez <ismail@namtrac.org>
5822
5823 * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'.
5824
Werner Lemberg96ddc672011-06-29 09:15:54 +020058252011-06-29 Werner Lemberg <wl@gnu.org>
5826
Werner Lemberg273e2b72012-09-18 13:27:27 +02005827 [bdf] Fix Savannah bug #33663.
Werner Lemberg96ddc672011-06-29 09:15:54 +02005828
5829 * src/bdf/bdflib.c (_bdf_parse_glyphs): Handle negative values for
5830 ENCODING correctly.
5831
Werner Lemberg54f187a2011-06-29 10:01:42 +02005832 * docs/CHANGES: Document it.
5833
Werner Lembergda9dbf82011-06-25 07:16:22 +020058342011-06-24 Werner Lemberg <wl@gnu.org>
5835
5836 * Version 2.4.5 released.
5837 =========================
5838
5839
5840 Tag sources with `VER-2-4-5'.
5841
5842 * docs/CHANGES: Updated.
5843
5844 * docs/VERSION.DLL: Update documentation and bump version number to
5845 2.4.5
5846
5847 * README, Jamfile (RefDoc),
5848 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
5849 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
5850 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
5851 builds/win32/visualc/freetype.dsp,
5852 builds/win32/visualc/freetype.vcproj,
5853 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
5854 builds/win32/visualce/freetype.vcproj,
5855 builds/win32/visualce/index.html,
5856 builds/wince/vc2005-ce/freetype.vcproj,
5857 builds/wince/vc2005-ce/index.html,
5858 builds/wince/vc2008-ce/freetype.vcproj,
5859 builds/wince/vc2008-ce/index.html: s/2.4.4/2.4.5/, s/244/245/.
5860
5861 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
5862
5863 * builds/unix/configure.raw (version_info): Set to 13:0:7.
5864
Werner Lemberg4696dde2011-06-20 19:09:02 +020058652011-06-20 Werner Lemberg <wl@gnu.org>
5866
5867 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Fix change
5868 from 2011-05-04.
5869
suzuki toshiyac63c6f72011-06-19 22:54:40 +090058702011-06-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5871
suzuki toshiyac7e80282011-06-19 23:00:11 +09005872 [gxvalid] make the `prop' validation tracing verbose.
5873
5874 * src/gxvalid/gxvprop.c: Add tracing messages for errors.
5875
58762011-06-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5877
suzuki toshiyac63c6f72011-06-19 22:54:40 +09005878 [autogen.sh] Reflect environment variable LIBTOOLIZE.
5879
Werner Lembergea79b842011-06-18 08:06:57 +020058802011-06-18 Werner Lemberg <wl@gnu.org>
5881
5882 Update license documentation.
5883
5884 * docs/GPL.TXT: Renamed to...
5885 * docs/GPLv2.TXT: This.
5886
5887 * docs/LICENSE.TXT: Updated.
5888
suzuki toshiya248aa632011-06-14 23:47:21 +090058892011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5890
suzuki toshiyae62c8762011-06-15 02:48:33 +09005891 Fix g++4.6 compiler warnings in module drivers.
5892
5893 The background is same with previous commit.
5894
5895 * src/truetype/ttgxvar.c (ft_var_readpackedpoints):
5896 Init `points'. (TT_Vary_Get_Glyph_Deltas): Init
5897 `delta_xy'. (TT_Get_MM_Var): Init `mmvar'.
5898 * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
5899 * src/cff/cffdrivr.c (cff_ps_get_font_info): Init
5900 `font_info'.
5901 * src/cff/cffload.c (cff_index_get_pointers): Init `t'.
5902 (cff_font_load): Init `sub'.
5903 * src/cff/cffobjs.c (cff_size_init): Init `internal'.
5904 (cff_face_init): Init `cff'.
5905 * src/pfr/pfrload.c (pfr_extra_item_load_stem_snaps):
5906 Init `snaps'.
5907 * src/pcf/pcfread.c (pcf_get_properties): Init `properties'.
5908 (pcf_get_bitmaps): Init `offsets'. (pcf_get_encodings):
5909 Init `tmpEncoding'.
5910 * src/sfnt/ttload.c (tt_face_load_gasp): Init `gaspranges'.
5911 * src/sfnt/ttsbit.c (Load_SBit_Image): Init `components'.
5912 * src/cache/ftcmru.c (FTC_MruList_New): Init `node'.
5913 * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Init `zip' and
5914 `zip_buff'.
5915 * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Init `zip'.
5916 * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Init `zip'.
5917
59182011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5919
suzuki toshiya65a44982011-06-15 01:44:24 +09005920 [base] Fix g++4.6 compiler warnings in src/base/*.c.
5921
suzuki toshiyadc185ee2011-06-15 02:36:52 +09005922 Passing uninitialized pointer to FT_NEW() families is
suzuki toshiya65a44982011-06-15 01:44:24 +09005923 not problematic theoretically (as far as the returned
5924 pointer is checked before writing), but g++4.6 dislikes
5925 it and warns by -Wuninitialized. Initialize them by NULL.
5926
5927 * src/base/ftobjs.c (FT_Stream_New): Init `stream'.
5928 (new_memory_stream): Ditto.
5929 (FT_New_GlyphSlot): Init `slot'.
5930 (FT_CMap_New): Init `cmap'.
5931 (open_face_PS_from_sfnt_stream): Init `sfnt_ps'.
5932 (Mac_Read_POST_Resource): Init `pfb_data'.
5933 (Mac_Read_sfnt_Resource): Init `sfnt_data'.
5934 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets):
5935 Init `offsets_internal' and `ref'.
5936 (raccess_guess_darwin_hfsplus): Init `newpath'.
5937 (raccess_guess_darwin_newvfs): Ditto.
5938 * src/base/ftbitmap.c (ft_bitmap_assure_buffer):
5939 Init `buffer'.
5940 * src/base/ftstroke.c (FT_Stroker_New): Init `stroker'.
5941
59422011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5943
suzuki toshiya75b91a42011-06-15 01:10:33 +09005944 [gxvalid] Cleanup.
5945
5946 Some invalid, overrunning, unrecommended non-zero values
5947 are cared in paranoid validation mode only. There are
5948 many lines looking like:
5949
5950 if ( valid->root->level >= FT_VALIDATE_PARANOID )
5951 FT_INVALID_xxx;
5952
5953 To simplify them, GXV_SET_ERR_IF_PARANOID( err ) is
5954 introduced for more paranoid validation in future.
5955
5956 * src/gxvalid/gxvcommn.h (IS_PARANOID_VALIDATION):
5957 New macro to assure valid->root->level is more or
5958 equal to FT_VALIDATE_PARANOID. (GXV_SET_ERR_IF_PARANOID):
5959 New macro to raise an error if in paranoid validation.
5960 * src/gxvalid/gxvcommn.c: Use GXV_SET_ERR_IF_PARANOID().
5961 * src/gxvalid/gxvfeat.c: Ditto.
5962 * src/gxvalid/gxvjust.c: Ditto.
5963 * src/gxvalid/gxvkern.c: Ditto.
5964 * src/gxvalid/gxvmort.c: Ditto.
5965 * src/gxvalid/gxvmort0.c: Ditto.
5966 * src/gxvalid/gxvmort1.c: Ditto.
5967 * src/gxvalid/gxvmort2.c: Ditto.
5968 * src/gxvalid/gxvmorx1.c: Ditto.
5969 * src/gxvalid/gxvmorx2.c: Ditto.
5970
59712011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5972
suzuki toshiyaf6f9b662011-06-14 23:55:23 +09005973 [gxvalid] Fix gcc4.6 compiler warnings in gxvtrak.c.
5974
5975 * src/gxvalid/gxvtrak.c (gxv_trak_trackTable_validate):
5976 Check different entries pointing same traking value.
5977 (gxv_trak_validate): Remove unused variable `table_size'.
5978
59792011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
5980
suzuki toshiya05fc72c2011-06-14 23:54:10 +09005981 [gxvalid] Fix gcc4.6 compiler warnings in gxvmorx*.c.
5982
5983 * src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate):
5984 Conditionalize unvalidated variable `subFeatureFlags'.
5985 (gxv_morx_chain_validate): Conditionalize unvalidated
5986 variable `defaultFlags'.
5987
5988 * src/gxvalid/gxmorx0.c
5989 (gxv_morx_subtable_type0_entry_validate):
5990 Conditionalize unvalidated variables; `markFirst',
5991 `dontAdvance', `markLast', `verb'.
5992
5993 * src/gxvalid/gxmorx1.c
5994 (gxv_morx_subtable_type1_entry_validate): Conditionalize
5995 unvalidated variables; `setMark', `dontAdvance'.
5996
5997 * src/gxvalid/gxvmorx2.c
5998 (gxv_morx_subtable_type2_ligActionOffset_validate):
5999 Conditionalize unvalidated variables; `last', `store'.
6000 Checking for overrunning offset is added.
6001 (gxv_morx_subtable_type2_entry_validate):
6002 Conditionalize unvalidated variables; `setComponent',
6003 `dontAdvance', `performAction'.
6004 (gxv_morx_subtable_type2_ligatureTable_validate):
6005 Check if the GID for ligature does not exceed the
6006 max GID in `maxp' table.
6007
6008 * src/gxvalid/gxvmort5.c
6009 (gxv_morx_subtable_type5_InsertList_validate):
6010 Conditionalize unvalidated loading of `insert_glyphID'
6011 array. (gxv_morx_subtable_type5_entry_validate):
6012 Conditionalize unvalidated variables; `setMark',
6013 `dontAdvance', `currentIsKashidaLike',
6014 `markedIsKashidaLike', `currentInsertBefore',
6015 `markedInsertBefore'.
6016
60172011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6018
suzuki toshiya56be3ac2011-06-14 23:53:12 +09006019 [gxvalid] Fix gcc4.6 compiler warnings in gxvmort*.c.
6020
6021 * src/gxvalid/gxvmort.c (gxv_mort_subtables_validate):
6022 Conditionalize unvalidated variable `subFeatureFlags'.
6023 (gxv_mort_chain_validate): Conditionalize unvalidated
6024 variable `defaultFlags'.
6025
6026 * src/gxvalid/gxmort0.c
6027 (gxv_mort_subtable_type0_entry_validate): Check the
6028 conflict of the marks for the glyphs.
6029
6030 * src/gxvalid/gxmort1.c
6031 (gxv_mort_subtable_type1_offset_to_subst_validate):
6032 Local variables `min_gid', `max_gid' are replaced by
6033 variables in the validator.
6034 (gxv_mort_subtable_type1_entry_validate): Conditionalize
6035 unvalidated variables; `setMark', `dontAdvance'.
6036 (gxv_mort_subtable_type1_substTable_validate):
6037 Validate the GID by the min/max GIDs in the validator.
6038
6039 * src/gxvalid/gxvmort2.c
6040 (gxv_mort_subtable_type2_ligActionOffset_validate):
6041 Conditionalize unvalidated variables; `last', `store'.
6042 Checking for overrunning offset is added.
6043 (gxv_mort_subtable_type2_entry_validate):
6044 Conditionalize unvalidated variables; `setComponent',
6045 `dontAdvance'.
6046 (gxv_mort_subtable_type2_ligatureTable_validate):
6047 Check if the GID for ligature does not exceed the
6048 max GID in `maxp' table.
6049
6050 * src/gxvalid/gxvmort5.c
6051 (gxv_mort_subtable_type5_InsertList_validate):
6052 Conditionalize unvalidated loading of `insert_glyphID'
6053 array. (gxv_mort_subtable_type5_entry_validate):
6054 Conditionalize unvalidated variables; `setMark',
6055 `dontAdvance', `currentIsKashidaLike',
6056 `markedIsKashidaLike', `currentInsertBefore',
6057 `markedInsertBefore'.
6058
60592011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6060
suzuki toshiya20c126c2011-06-14 23:50:39 +09006061 [gxvalid] Fix gcc4.6 compiler warnings in gxvkern.c.
6062
6063 * src/gxvalid/gxvkern.c
6064 (gxv_kern_subtable_fmt0_pairs_validate): Conditionalize
6065 unvalidated variable `kernValue'.
6066 (gxv_kern_subtable_fmt1_entry_validate): Conditionalize
6067 unvalidated variables; `push', `dontAdvance', `kernAction',
6068 `kernValue'.
6069 (gxv_kern_coverage_new_apple_validate): Conditionalize
6070 trace-only variables; `kernVertical', `kernCrossStream',
6071 `kernVariation'.
6072 (gxv_kern_coverage_classic_apple_validate): Conditionalize
6073 trace-only variables; `horizontal', `cross_stream'.
6074 (gxv_kern_coverage_classic_microsoft_validate):
6075 Conditionalize trace-only variables; `horizontal',
6076 `minimum', `cross_stream', `override'.
6077 (gxv_kern_subtable_validate): Conditionalize trace-only
6078 variables; `version', `tupleIndex'.
6079
60802011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6081
suzuki toshiyace015ec2011-06-14 23:49:34 +09006082 [gxvalid] Fix gcc4.6 compiler warnings in gxvjust.c.
6083
6084 * src/gxvalid/gxvjust.c (gxv_just_check_max_gid):
6085 New function to unify the checks of too large GID.
6086 (gxv_just_wdp_entry_validate): Conditionalize unvalidated
6087 variables; `beforeGrowLimit', `beforeShrinkGrowLimit',
6088 `afterGrowLimit', `afterShrinkGrowLimit', `growFlags',
6089 `shrinkFlags'. Additional check for non-zero values in
6090 unused storage `justClass' is added.
6091 (gxv_just_actSubrecord_type0_validate): Conditionalize
6092 unvalidated variable `order'. GID is checked by
6093 gxv_just_check_max_gid(). Additional check for upside-down
6094 relationship between `lowerLimit' and `upperLimit' is added.
6095 (gxv_just_actSubrecord_type1_validate): GID is checked by
6096 gxv_just_check_max_gid().
6097 (gxv_just_actSubrecord_type2_validate): Conditionalize
6098 unvalidated variable `substThreshhold'. GID is checked by
6099 gxv_just_check_max_gid().
6100 (gxv_just_actSubrecord_type5_validate): GID is checked by
6101 gxv_just_check_max_gid().
6102 (gxv_just_classTable_entry_validate): Conditionalize
6103 unvalidated variables; `setMark', `dontAdvance',
6104 `markClass', `currentClass'.
6105
61062011-06-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6107
suzuki toshiya248aa632011-06-14 23:47:21 +09006108 [gxvalid] Preparation to fix gcc4.6 compiler warnings.
6109
6110 * src/gxvalid/gxvcommn.h (GXV_LOAD_TRACE_VARS): New macro to
6111 conditionalize the variable which is only used for trace messages.
6112 Automatically set by FT_DEBUG_LEVEL_TRACE.
6113 (GXV_LOAD_UNUSED_VARS): New macro to conditionalize the loading of
6114 unvalidated variables. Undefined by default to calm gcc4.6 warning.
6115 (GXV_ValidatorRec.{min_gid,max_gid}): New variables to hold defined
6116 GID ranges, for the comparison of GID ranges in different subtables.
6117
Werner Lemberg58d1a5e2011-06-08 09:32:56 +020061182011-06-08 Werner Lemberg <wl@gnu.org>
6119
6120 [autofit] Remove unused structure member.
6121
David Bevanaecbfe12011-07-02 12:09:52 +02006122 * src/autofit/afhints.h (AF_SegmentRec): Remove `contour'.
Werner Lemberg58d1a5e2011-06-08 09:32:56 +02006123 * src/autofit/aflatin.c (af_latin_hints_compute_segments),
6124 src/autofit/aflatin2.c (af_latin2_hints_compute_segments): Updated.
6125
Werner Lemberg71cc1a82011-05-30 07:20:37 +020061262011-05-30 Werner Lemberg <wl@gnu.org>
6127
Werner Lemberg6b19fd52011-05-30 07:27:59 +02006128 Fix g++ 4.6 compilation.
6129
6130 * src/autofit/afhints.c (af_glyph_hints_dump_segments,
6131 af_glyph_hints_dump_edges): Use cast.
6132
61332011-05-30 Werner Lemberg <wl@gnu.org>
6134
Werner Lemberg71cc1a82011-05-30 07:20:37 +02006135 Fix gcc 4.6 compiler warnings.
6136
6137 * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Use casts and
6138 remove unused variables.
6139 * src/autofit/aflatin.c (af_latin_hints_compute_edges): Comment out
6140 `up_dir'.
6141 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `height_org'
6142 and `width_org' conditionalized.
6143
suzuki toshiyac32d54c2011-05-29 01:33:34 +090061442011-05-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6145
Werner Lembergfe0f16d2011-06-01 10:36:04 +02006146 [mac] Conditionalize the inclusion of `AvailabilityMacros.h'.
suzuki toshiyac32d54c2011-05-29 01:33:34 +09006147
David Bevanaecbfe12011-07-02 12:09:52 +02006148 The native SDK on earliest Mac OS X (10.0-10.1) did not have
Werner Lembergfe0f16d2011-06-01 10:36:04 +02006149 `AvailabilityMacros.h'. To prevent the inclusion of missing
suzuki toshiyac32d54c2011-05-29 01:33:34 +09006150 header file, ECANCELED (introduced in 10.2) in POSIX header
6151 file <errno.h> is checked to detect the system version.
6152
6153 * include/freetype/config/ftconfig.h: Conditionalize the
Werner Lembergfe0f16d2011-06-01 10:36:04 +02006154 inclusion of `AvailabilityMacros.h'.
suzuki toshiyac32d54c2011-05-29 01:33:34 +09006155 * builds/unix/ftconfig.in: Ditto.
6156 * builds/vms/ftconfig.h: Ditto.
6157
Werner Lemberg735e5ab2011-05-27 10:22:42 +020061582011-05-27 Werner Lemberg <wl@gnu.org>
6159
6160 [autofit] Improve tracing of hinting process.
6161
6162 * src/autofit/aflatin.c (af_latin_hint_edges): Add tracing message
6163 `ADJUST'.
6164
61652011-05-26 Werner Lemberg <wl@gnu.org>
6166
6167 [autofit] Fix trace message.
6168
6169 * src/autofit/aflatin.c (af_latin_hint_edges): Show correct value in
6170 tracing message.
6171
Daniel Zimmermann3ad8f352011-05-24 06:22:32 +020061722011-05-24 Daniel Zimmermann <netzimme@googlemail.com>
6173
6174 Reduce warnings for MS Visual Studio 2010.
6175
6176 * src/autofit/afhints.c (af_glyph_hints_get_num_segments,
6177 af_glyph_hints_get_segment_offset) [!FT_DEBUG_AUTOFIT]: Provide
6178 return value.
6179 * src/cff/cffgload.c (cff_slot_load): Add cast.
6180 * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Use proper
6181 loop variable type.
6182
suzuki toshiyaebd14a52011-05-16 12:47:25 +090061832011-05-16 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6184
6185 Automake component `builds/unix/install-sh' is removed.
6186
6187 * builds/unix/install-sh: Removed. It is not needed to
6188 include repository, because autogen.sh installs it.
6189 * builds/unix/.gitignore: Register install-sh.
6190
sssa4e8f9de2011-05-12 14:30:15 +090061912011-05-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6192
6193 [autofit] Make trace message for CJK bluezone more verbose.
6194
suzuki toshiya084abf02011-05-08 19:07:13 +090061952011-05-08 Just Fill Bugs <mozbugbox@yahoo.com.au>
6196 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6197
6198 [autofit] Add bluezones for CJK Ideographs.
6199
6200 To remove extremas of vertical strokes of CJK Ideographs at
6201 low resolution and make the top and bottom horizontal stems
6202 aligned, bluezones for CJK Ideographs are calculated from
6203 sample glyphs. At present, vertical bluezones (bluezones
6204 to align vertical stems) are disabled by default. For detail, see
6205 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00070.html
6206 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00092.html
6207 http://lists.gnu.org/archive/html/freetype-devel/2011-05/msg00001.html
6208
6209 * include/freetype/internal/fttrace.h: New trace component `afcjk'.
6210 * src/autofit/afcjk.h (AF_CJK{Blue,Axis,Metric}Rec): Add CJK version
6211 for AF_Latin{Blue,Axis,Metric}Rec.
6212 (af_cjk_metrics_check_digits): Ditto, shared with Indic module.
6213 (af_cjk_metrics_init_widths): Ditto.
6214 (af_cjk_metrics_init): Take AF_CJKMetric instead of AF_LatinMetric.
6215 (af_cjk_metrics_scale): Ditto (declaration).
6216 (af_cjk_hints_init): Ditto (declaration).
6217 (af_cjk_hints_apply): Ditto (declaration).
6218 * src/autofit/afcjk.c (af_cjk_metrics_scale): Ditto (body).
6219 (af_cjk_hints_init): Ditto (body).
6220 (af_cjk_hints_apply): Ditto (body).
6221 (af_cjk_metrics_init_widths): Duplicate af_latin_metrics_init_widths.
6222 (af_cjk_metrics_check_digits): Duplicate af_latin_metrics_check_digits.
6223 (af_cjk_metrics_init): Call CJK bluezone initializer.
David Bevanaecbfe12011-07-02 12:09:52 +02006224 (af_cjk_metrics_scale_dim): Add code to scale bluezones.
suzuki toshiya084abf02011-05-08 19:07:13 +09006225 (af_cjk_hints_compute_blue_edges): New function, CJK version of
6226 af_latin_hints_compute_blue_edges.
6227 (af_cjk_metrics_init_blues): New function, CJK version of
6228 af_latin_metrics_init_blues.
6229 (af_cjk_hints_edges): Add code to align the edge stems to blue zones.
6230
6231 * src/autofit/afindic.c (af_indic_metrics_init): Take AF_CJKMetric
6232 instead of AF_LatinMetric, and initialize as af_cjk_metrics_init.
6233 However bluezones are not initialized.
6234 (af_indic_metrics_scale): Take AF_CJKMetric instead of AF_LatinMetric.
6235 (af_indic_hints_init): Ditto.
6236 (af_indic_hints_apply): Ditto.
6237
6238 * docs/CHANGES: Note about CJK bluezone support.
6239
Werner Lembergd2e82aa2011-05-06 19:04:30 +020062402011-05-06 Werner Lemberg <wl@gnu.org>
6241
6242 [autofit] Remove unused struct member.
6243
6244 * src/autofit/aflatin.h (AF_LatinAxis): Remove `control_overshoot'.
6245
Werner Lemberga3a0f572011-05-04 06:14:30 +020062462011-05-04 Werner Lemberg <wl@gnu.org>
6247
6248 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Simplify.
6249
Werner Lemberg3a0844c2011-05-01 13:44:44 +020062502011-05-01 Just Fill Bugs <mozbugbox@yahoo.com.au>
6251 Werner Lemberg <wl@gnu.org>
6252
6253 [autofit] Add more debugging functions.
6254
6255 * src/autofit/afhints.c (af_glyph_hints_get_num_segments,
6256 af_glyph_hints_get_segment_offset): New functions.
6257
suzuki toshiya7c6da3d2011-05-01 19:06:24 +090062582011-05-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6259
6260 Add new option `--disable-mmap' to configure script.
6261
David Bevanaecbfe12011-07-02 12:09:52 +02006262 * builds/unix/configure.raw: New option `--disable-mmap'
suzuki toshiya7c6da3d2011-05-01 19:06:24 +09006263 is added. It is for the developers to simulate the systems
6264 without mmap() (like 4.3BSD, minix etc) on POSIX systems.
6265
suzuki toshiya1e89d152011-04-30 17:55:57 +090062662011-04-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6267
Werner Lemberg3ae2c702011-06-24 13:18:41 +02006268 [truetype] Always recalculate the sfnt table checksum.
suzuki toshiya58cb3592011-05-01 00:47:43 +09006269
6270 * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Recalculate
Werner Lemberg3ae2c702011-06-24 13:18:41 +02006271 the sfnt table checksum even if non-zero value is written in
suzuki toshiya58cb3592011-05-01 00:47:43 +09006272 the TrueType font header. Some bad PDF generators write
Werner Lemberg3ae2c702011-06-24 13:18:41 +02006273 wrong values. For details see examples and benchmark tests
suzuki toshiya58cb3592011-05-01 00:47:43 +09006274 of the latency by recalculation:
6275 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00091.html
6276 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00096.html
6277
62782011-04-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6279
suzuki toshiya1e89d152011-04-30 17:55:57 +09006280 [truetype] Register a set of tricky fonts, NEC FA family.
6281
6282 * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids):
6283 Add 8 checksum sets for NEC FA family. For the tricky fonts
6284 without some tables (e.g. NEC FA fonts lack cvt table),
Werner Lemberg3ae2c702011-06-24 13:18:41 +02006285 extra check is added to assure that a zero-length table in the
suzuki toshiya1e89d152011-04-30 17:55:57 +09006286 registry is not included in the font.
6287
suzuki toshiya89208862011-04-30 00:11:07 +090062882011-04-29 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6289
6290 [truetype] Fix a bug in the sfnt table checksum getter.
6291
6292 * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Check the
6293 return value of face->goto_table() correctly.
6294
Werner Lembergb9aa1f12011-04-28 09:09:45 +020062952011-04-28 Werner Lemberg <wl@gnu.org>
6296
6297 [autofit] Improve tracing messages.
6298
6299 * src/autofit/aflatin.c (af_latin_metrics_init_blues,
6300 af_latin_align_linked_edge, af_latin_hint_edges): Do it.
6301
suzuki toshiyaabc47aa2011-04-25 23:51:04 +090063022011-04-25 Kan-Ru Chen <kanru@kanru.info>
6303
6304 [truetype] Always check the checksum to identify tricky fonts.
6305
suzuki toshiya86b7b2f2011-04-26 03:46:12 +09006306 Because some PDF generators mangle the family name badly,
6307 the trickyness check by the checksum should be invoked always.
6308 For sample PDF, see
suzuki toshiyaabc47aa2011-04-25 23:51:04 +09006309 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00073.html
6310
suzuki toshiya86b7b2f2011-04-26 03:46:12 +09006311 * src/truetype/ttobjs.c (tt_check_trickyness): Even when
6312 tt_check_trickyness_family() finds no trickyness,
6313 tt_check_trickyness_sfnt_ids() is invoked.
suzuki toshiyaabc47aa2011-04-25 23:51:04 +09006314
suzuki toshiya233f9d52011-04-22 10:14:07 +090063152011-04-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6316
6317 [autofit] Add more Indic scripts with hanging baseline.
6318
6319 * src/autofit/afindic.c (af_indic_uniranges): Tibetan, Limbu,
6320 Sundanese, Meetei Mayak, Syloti Nagri and Sharada scripts are
6321 added.
6322
Behdad Esfahbod8c82ec52011-04-21 08:21:37 +020063232011-04-21 Behdad Esfahbod <behdad@behdad.org>
6324
6325 Always ignore global advance.
6326
6327 This makes FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH redundant,
6328 deprecated, and ignored. The new behavior is what every major user
6329 of FreeType has been requesting. Global advance is broken in many
6330 CJK fonts. Just ignoring it by default makes most sense.
6331
6332 * src/truetype/ttdriver.c (tt_get_advances),
6333 src/truetype/ttgload.c (TT_Get_HMetrics, TT_Get_VMetrics,
6334 tt_get_metrics, compute_glyph_metrics, TT_Load_Glyph),
6335 src/truetype/ttgload.h: Implement it.
6336
6337 * docs/CHANGES: Updated.
6338
suzuki toshiyaa345c0e2011-04-21 10:58:33 +090063392011-04-21 rainy6144 <rainy6144@gmail.com>
6340
6341 [autofit] Blur CJK stems if too many to preserve their gaps.
Behdad Esfahbod8c82ec52011-04-21 08:21:37 +02006342
suzuki toshiyaa345c0e2011-04-21 10:58:33 +09006343 When there are too many stems to preserve their gaps in the
6344 rasterization of CJK Ideographs at a low resolution, blur the
6345 stems instead of showing clumped stems. See
6346 http://lists.gnu.org/archive/html/freetype-devel/2011-02/msg00011.html
6347 http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00046.html
Behdad Esfahbod8c82ec52011-04-21 08:21:37 +02006348 for details.
suzuki toshiyaa345c0e2011-04-21 10:58:33 +09006349
6350 * src/autofit/afcjk.c (af_cjk_hint_edges): Store the position of
6351 the previous stem by `has_last_stem' and `last_stem_pos', and skip
6352 a stem if the current and previous stem are too near to preserve
6353 the gap.
6354
Werner Lemberg149f5432011-04-18 15:09:38 +020063552011-04-18 Werner Lemberg <wl@gnu.org>
6356
Werner Lembergd503b1b2011-04-18 19:05:28 +02006357 Integrate autofitter debugging stuff.
6358
6359 * devel/ftoption.h, include/freetype/config/ftoption.h
6360 (FT_DEBUG_AUTOFIT): New macro.
6361
6362 * include/freetype/internal/fttrace.h: Add trace components for
6363 autofitter.
6364
6365 * src/autofit/aftypes.h (AF_LOG): Removed.
6366 (_af_debug): Removed.
6367
6368 * src/autofit/*: s/AF_DEBUG/FT_DEBUG_AUTOFIT/.
6369 s/AF_LOG/FT_TRACE5/.
6370 Define FT_COMPONENT where necessary.
6371
63722011-04-18 Werner Lemberg <wl@gnu.org>
6373
Werner Lemberg149f5432011-04-18 15:09:38 +02006374 Synchronize config files.
6375
6376 * builds/unix/ftconfig.in: Copy missing assembler routines from
6377 include/freetype/config/ftconfig.h.
6378
Werner Lemberg9b008752011-04-13 13:37:37 +020063792011-04-13 Werner Lemberg <wl@gnu.org>
6380
Werner Lemberg273e2b72012-09-18 13:27:27 +02006381 [psaux] Fix Savannah bug #33047.
Werner Lemberg9b008752011-04-13 13:37:37 +02006382
6383 Patch submitted by anonymous reporter.
6384
6385 * src/psaux/psobjs.c (ps_table_add): Use FT_PtrDist for pointer
6386 difference.
6387
Kan-Ru Chen21b1a0d2011-04-12 09:26:43 +020063882011-04-11 Kan-Ru Chen <kanru@kanru.info>
6389
6390 Fix reading of signed integers from files on 64bit platforms.
6391
6392 Previously, signed integers were converted to unsigned integers, but
6393 this can fail because of sign extension. For example, 0xa344a1eb
6394 becomes 0xffffffffa344a1eb.
6395
6396 We now do the reverse which is always correct because the integer
6397 size is the same during the cast from unsigned to signed.
6398
6399 * include/freetype/internal/ftstream.h, src/base/ftstream.c
6400 (FT_Stream_Get*): Replace with...
6401 (FT_Stream_GetU*): Functions which read unsigned integers.
6402 Update all macros accordingly.
6403
6404 * src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Updated.
6405
Werner Lemberg7f03a242011-04-07 07:20:38 +020064062011-04-07 Werner Lemberg <wl@gnu.org>
6407
6408 Update Unicode ranges for CJK autofitter; in particular, add Hangul.
6409
6410 * src/autofit/afcjk.c (af_cjk_uniranges): Update to Unicode 6.0.
6411
Werner Lemberg948a8fb2011-04-04 13:02:08 +020064122011-04-04 Werner Lemberg <wl@gnu.org>
6413
6414 Fix formatting of autofit debug dumps.
6415
6416 * src/autofit/afhints.c (af_glyph_hints_dump_points,
6417 af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Adjust
6418 column widths.
6419
Werner Lembergef115512011-03-30 09:29:05 +020064202011-03-30 Werner Lemberg <wl@gnu.org>
6421
6422 * src/autofit/aftypes.h (AF_OutlineRec): Removed, unused.
6423
Werner Lemberg360646c2011-03-24 09:29:23 +010064242011-03-24 Werner Lemberg <wl@gnu.org>
6425
6426 * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 256.
Werner Lembergef115512011-03-30 09:29:05 +02006427 This limit is given on p. 37 of Adobe Technical Note #5014.
Werner Lemberg360646c2011-03-24 09:29:23 +01006428
Werner Lemberg01caf4a2011-03-23 05:19:59 +010064292011-03-23 Werner Lemberg <wl@gnu.org>
6430
Werner Lemberg575078d2011-04-18 15:33:17 +02006431 * src/truetype/ttpload.c (tt_face_load_loca): Fix mismatch warning.
Werner Lemberg01caf4a2011-03-23 05:19:59 +01006432
Werner Lembergaf7b8b12011-03-20 07:51:57 +010064332011-03-20 Werner Lemberg <wl@gnu.org>
6434
6435 * src/sfnt/sfobjs.c (sfnt_open_font): Check number of TTC subfonts.
6436
Werner Lemberg8bd77f92011-03-19 15:27:04 +010064372011-03-19 Werner Lemberg <wl@gnu.org>
6438
6439 More C++ compilation fixes.
6440
6441 * src/autofit/afhints.c (af_glyph_hints_dump_points,
6442 af_glyph_hints_dump_segments, af_glyph_hints_dump_edges)
6443 [__cplusplus]: Protect with `extern "C"'.
6444
Werner Lembergc7f26a12011-03-19 02:28:21 +010064452011-03-18 Werner Lemberg <wl@gnu.org>
6446
6447 C++ compilation fixes.
6448
6449 * src/autofit/aflatin.c (af_latin_hints_apply), src/autofit/afcjk.c
6450 (af_cjk_hints_apply): Use cast for `dim'.
6451
Alexei Podtelezhnikov8fb88412011-03-17 20:24:57 +010064522011-03-17 Alexei Podtelezhnikov <apodtele@gmail.com>
6453
6454 A better fix for Savannah bug #32671.
6455
6456 * src/smooth/ftgrays.c (gray_render_conic): Clean up code and
6457 replace WHILE loop with a more natural DO-WHILE construct.
6458
Werner Lemberg437fb8e2011-03-16 08:54:02 +010064592011-03-16 Werner Lemberg <wl@gnu.org>.
6460
6461 * src/base/ftstroke.c (FT_StrokerRec): Remove unused `valid' field.
6462 Suggested by Graham Asher.
6463
Werner Lembergcecd9122011-03-09 06:18:28 +010064642011-03-09 Werner Lemberg <wl@gnu.org>
6465
6466 Make FT_Sfnt_Table_Info return the number of SFNT tables.
6467
6468 * src/sfnt/sfdriver.c (sfnt_table_info): Implement it.
6469 * include/freetype/tttables.h: Update documentation.
6470 * docs/CHANGES: Updated.
6471
64722011-03-07 Bram Tassyns <bramt@enfocus.be>
Bram Tassyns3fd158d2011-03-07 09:33:53 +01006473
Werner Lemberg273e2b72012-09-18 13:27:27 +02006474 [cff] Fix Savannah bug #27988.
Bram Tassyns3fd158d2011-03-07 09:33:53 +01006475
6476 * src/cff/cffobjs.c (remove_style): New function.
6477 (cff_face_init): Use it to strip off the style part of the family
6478 name.
6479
Werner Lemberg9c111b02011-03-07 06:07:53 +010064802011-03-07 Werner Lemberg <wl@gnu.org>
6481
6482 * docs/CHANGES: Updated.
6483
Werner Lemberg6c045532011-03-07 05:40:42 +010064842011-03-07 Alexei Podtelezhnikov <apodtele@gmail.com>
6485
6486 Quick fix for Savannah bug #32671.
6487
6488 This isn't the optimal solution yet, but it restores the previous
6489 rendering quality (more or less).
6490
6491 * src/smooth/ftgrays.c (gray_render_conic): Do more splitting.
6492
Werner Lembergc9bdfa72011-03-06 18:35:37 +010064932011-03-06 Werner Lemberg <wl@gnu.org>
6494
6495 Fix autohinting fallback.
6496
6497 * src/base/ftobjs.c (FT_Load_Glyph): Assure that we only check TTFs,
6498 ignoring CFF-based OTFs.
6499
Werner Lemberg576fc2c2011-03-02 03:52:36 +010065002011-02-27 Werner Lemberg <wl@gnu.org>
6501
6502 Add AF_CONFIG_OPTION_USE_WARPER to control the autofit warper.
6503
6504 * devel/ftoption.h, include/freetype/config/ftoption.h
6505 (AF_CONFIG_OPTION_USE_WARPER): New macro.
6506 * src/autofit/aftypes.h (AF_USE_WARPER): Remove.
6507
6508 * src/autofit/*: s/AF_USE_WARPER/AF_CONFIG_OPTION_USE_WARPER/.
6509
6510 * src/autofit/afwarp.c [!AF_CONFIG_OPTION_USE_WARPER]: Replace dummy
6511 variable assignment with a typedef.
6512
Werner Lembergb7fc0c72011-02-26 18:36:21 +010065132011-02-26 Werner Lemberg <wl@gnu.org>
6514
6515 [autofit] Slight simplifications.
6516
6517 * src/autofit/aflatin.c (af_latin_hints_link_segments): Remove
6518 test which always returns false.
6519 (af_latin_hints_compute_blue_edges): Remove redundant assignment.
6520
Werner Lembergf42cc532011-02-24 05:18:46 +010065212011-02-24 Werner Lemberg <wl@gnu.org>
6522
Werner Lemberge7d1fb32011-02-24 20:01:00 +01006523 * docs/PROBLEMS: Mention rendering differences on different
6524 platforms.
6525 Suggested and worded by Jason Owen <jason.a.owen@gmail.com>.
6526
65272011-02-24 Werner Lemberg <wl@gnu.org>
6528
Werner Lemberg6c286892011-02-24 05:52:14 +01006529 [autofit] Comment out unused code.
6530
6531 * src/autofit/aflatin.c, src/autofit/aflatin2.c
6532 (af_latin_hints_compute_edges): Do it.
6533
65342011-02-24 Werner Lemberg <wl@gnu.org>
6535
Werner Lembergf42cc532011-02-24 05:18:46 +01006536 * src/autofit/afhints.h (AF_GlyphHints): Remove unused field.
6537
suzuki toshiyaae6d1d72011-02-20 19:13:25 +090065382011-02-20 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6539
Werner Lemberg575078d2011-04-18 15:33:17 +02006540 [cache] Fix an off-by-one bug in `FTC_Manager_RemoveFaceID'.
suzuki toshiyaae6d1d72011-02-20 19:13:25 +09006541 Found by <ychen1392001@yahoo.com.cn>, see detail in
6542
6543 http://lists.gnu.org/archive/html/freetype/2011-01/msg00023.html
6544
6545 * src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Check the node
6546 buckets[cache->p + cache->mask] too.
6547
Kevin Koflerff809502011-02-19 23:09:26 +010065482011-02-19 Kevin Kofler <kevin.kofler@chello.at>
6549
6550 Fall back to autohinting if a TTF/OTF doesn't contain any bytecode.
6551 This is Savannah patch #7471.
6552
6553 * src/base/ftobjs.c (FT_Load_Glyph): Implement it.
6554
John Tytgat18fffa42011-02-19 07:11:17 +010065552011-02-19 John Tytgat <John.Tytgat@esko.com>
6556
6557 [cff] Fix subset prefix removal.
Kevin Koflerff809502011-02-19 23:09:26 +01006558 This is Savannah patch #7465.
John Tytgat18fffa42011-02-19 07:11:17 +01006559
6560 * src/cff/cffobjs.c (remove_subset_prefix): Update length after
6561 subset prefix removal.
6562
Bradley Graingerd2731e12011-02-12 12:41:50 -080065632011-02-13 Bradley Grainger <bgrainger@logos.com>
6564
Bradley Grainger70f7db12011-02-12 12:51:36 -08006565 Add inline assembly version of FT_MulFix for MSVC.
6566
6567 * include/freetype/config/ftconfig.h: Ported the FT_MulFix_i386
6568 function from GNU inline assembly syntax (see #ifdef __GNUC__ block
6569 above) to MASM syntax for Microsoft Visual C++.
6570
65712011-02-13 Bradley Grainger <bgrainger@logos.com>
6572
Bradley Graingerd2731e12011-02-12 12:41:50 -08006573 Add project and solution files in Visual Studio 2010 format.
6574
6575 * builds/win32/.gitignore: Ignore user-specific cache files.
6576 * builds/win32/vc2010/: Add VS2010 project & solution files, created
6577 by upgrading builds/win32/vc2008/freetype.vcproj.
6578 * objs/.gitignore: Ignore Visual Studio output files.
6579
Werner Lemberg18931a52011-02-01 07:08:43 +010065802011-02-01 Werner Lemberg <wl@gnu.org>
6581
Werner Lemberg713faec2011-02-03 19:47:13 +01006582 * src/autofit/afdummy.c: Include `aferrors.h'.
Werner Lemberg3ae2c702011-06-24 13:18:41 +02006583 Problem reported by Chris Liddell <chris.liddell@artifex.com>.
Werner Lemberg713faec2011-02-03 19:47:13 +01006584
65852011-02-01 Werner Lemberg <wl@gnu.org>
6586
Werner Lemberg75df7062011-02-01 07:36:27 +01006587 [cff] Ignore unknown operators in charstrings.
6588 Patch suggested by Miles.Lau <sunliang_liu@foxitsoftware.com>.
6589
6590 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Emit tracing
6591 message for unknown operators and continue instead of exiting with a
6592 syntax error.
6593
65942011-02-01 Werner Lemberg <wl@gnu.org>
6595
Werner Lemberg18931a52011-02-01 07:08:43 +01006596 [truetype] FT_LOAD_PEDANTIC now affects `prep' and `fpgm' also.
6597
6598 * src/truetype/ttgload.c (tt_loader_init): Handle
6599 `FT_LOAD_PEDANTIC'.
6600 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep,
6601 tt_size_init_bytecode, tt_size_ready_bytecode): New argument to
6602 handle pedantic mode.
6603 * src/truetype/ttobjs.h: Updated.
6604
Werner Lemberg96f04562011-01-31 10:24:32 +010066052011-01-31 Werner Lemberg <wl@gnu.org>
6606
Werner Lembergf1a981b2011-01-31 22:26:53 +01006607 [truetype] Protect jump instructions against endless loops.
6608
6609 * src/truetype/interp.c (DO_JROT, DO_JMPR, DO_JROF): Exit with error
6610 if offset is zero.
6611
66122011-01-31 Werner Lemberg <wl@gnu.org>
6613
Werner Lembergd6a213f2011-01-31 18:51:07 +01006614 [truetype] Improve handling of invalid references.
6615
6616 * src/truetype/interp.c: Set even more TT_Err_Invalid_Reference
6617 error codes only if pedantic hinting is active. At the same time,
6618 try to provide sane values which hopefully allow useful
6619 continuation. Exception to this is CALL and LOOPCALL – due to
6620 possible stack corruption it is necessary to bail out.
6621
66222011-01-31 Werner Lemberg <wl@gnu.org>
6623
Werner Lemberg96f04562011-01-31 10:24:32 +01006624 [truetype] Improve handling of stack underflow.
6625
6626 * src/truetype/ttinterp.c (TT_RunIns, Ins_FLIPPT, Ins_DELTAP,
Bram Tassyns3fd158d2011-03-07 09:33:53 +01006627 Ins_DELTAC): Exit with error only if `pedantic_hinting' is set.
Werner Lemberg96f04562011-01-31 10:24:32 +01006628 Otherwise, try to do something sane.
6629
Werner Lemberg06822512011-01-30 16:38:09 +010066302011-01-30 Werner Lemberg <wl@gnu.org>
6631
6632 * src/sfnt/ttmtx.c (tt_face_load_hmtx): Fix tracing message.
6633
LIU Sun-Liangc61b3592011-01-30 16:29:45 +010066342011-01-30 LIU Sun-Liang <sunliang_liu@foxitsoftware.com>
6635
6636 [truetype]: Fix behaviour of MIAP for invalid arguments.
6637
6638 * src/truetype/ttinterp.c (Ins_MIAP): Set reference points even in
6639 case of error.
6640
Werner Lembergdcdb3162011-01-18 07:35:26 +010066412011-01-18 Werner Lemberg <wl@gnu.org>
6642
6643 [truetype] Fix handling of MIRP instruction.
6644
6645 Thanks to Greg Hitchcock who explained the issue.
6646
6647 * src/truetype/ttinterp.c (Ins_MIRP): Replace a `>=' operator with
6648 `>' since the description in the specification is incorrect.
6649 This fixes, for example, glyph `two' in font `Helvetica Neue LT Com
6650 65 medium' at 15ppem.
6651
suzuki toshiya17f54bc2011-01-15 21:53:32 +090066522011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6653
6654 Fix ARM assembly code in include/freetype/config/ftconfig.h.
6655
6656 * include/freetype/config/ftconfig.h (FT_MulFix_arm):
6657 Copy the maintained code from builds/unix/ftconfig.in.
6658 Old GNU binutils could not accept the reduced syntax
6659 `orr %0, %2, lsl #16'. Un-omitted syntax like RVCT,
6660 `orr %0, %0, %2, lsl #16' is better. Reported by
6661 Johnson Y. Yan. The bug report by Qt developers is
6662 considered too.
6663
6664 http://bugreports.qt.nokia.com/browse/QTBUG-6521
6665
Werner Lemberg21bdca72011-01-15 09:46:13 +010066662011-01-15 Werner Lemberg <wl@gnu.org>
6667
6668 [raster] Make bbox handling the same as with Microsoft's rasterizer.
6669
6670 Right before B/W rasterizing, the bbox gets simply rounded to
6671 integers. This fixes, for example, glyph `three' in font `Helvetica
6672 Neue LT Com 65 Medium' at 11ppem.
6673
6674 Thanks to Greg Hitchcock who explained this behaviour.
6675
6676 * src/raster/ftrend1.c (ft_raster1_render): Implement it.
6677
suzuki toshiyac68a82d2011-01-15 13:21:32 +090066782011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6679
suzuki toshiyaa2ef6642011-01-15 13:33:28 +09006680 Copy -mcpu=* & -march=* options from CFLAGS to LDFLAGS.
6681
6682 * builds/unix/configure.raw: Consider recent gcc-standard
6683 flags to specify architecture in CFLAGS & LDFLAGS
6684 harmonization. Requested by Savannah bug #32114, to
6685 support multilib feature of BuildRoot SDK correctly.
6686
66872011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
6688
suzuki toshiyac68a82d2011-01-15 13:21:32 +09006689 Fix off-by-one bug in CFLAGS & LDFLAGS harmonizer.
6690
6691 * builds/unix/configure.raw: Some important options that
6692 included in CFLAGS but not in LDFLAGS are copied to
6693 LDFLAGS, but the last option in CFLAGS was not checked.
6694
Werner Lemberg29bc3102011-01-13 12:22:55 +010066952011-01-13 Werner Lemberg <wl@gnu.org>
6696
Werner Lemberg0039d012011-01-14 19:44:29 +01006697 [raster] Add undocumented drop-out rule to the other bbox side also.
6698
6699 * src/raster/ftraster.c (Vertical_Sweep_Drop,
6700 Horizontal_Sweep_Drop): Implement it.
6701
67022011-01-13 Werner Lemberg <wl@gnu.org>
6703
Werner Lembergc02485c2011-01-13 21:55:08 +01006704 [raster] Reduce jitter value.
6705
6706 This catches a rendering problem with glyph `x' from Tahoma at
6707 10ppem. It seems that the increase of the precision in the change
6708 from 2009-06-11 makes a larger jitter value unnecessary.
6709
6710 * src/raster/ftraster.c (Set_High_Precision): Implement it.
6711
67122011-01-13 Werner Lemberg <wl@gnu.org>
6713
Werner Lemberg29bc3102011-01-13 12:22:55 +01006714 [raster] Handle drop-outs at glyph borders according to Microsoft.
6715
6716 If a drop-out rule would switch on a pixel outside of the glyph's
6717 bounding box, use the right (or top) pixel instead. This is an
6718 undocumented feature, but some fonts like `Helvetica Neue LT Com 65
6719 Medium' heavily rely on it.
6720
6721 Thanks to Greg Hitchcock who explained this behaviour.
6722
6723 * src/raster/ftraster.c (Vertical_Sweep_Drop,
6724 Horizontal_Sweep_Drop): Implement it.
6725
suzuki toshiya6b3bef22011-01-09 23:11:18 +090067262011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya0de5b372011-01-09 20:31:22 +09006727
suzuki toshiya5e7ad202011-01-09 23:09:36 +09006728 [cache] Fix Savannah bug #31923, patch drafted by Harsha.
6729
6730 When a node comparator changes the cached nodes during the
6731 search of a node matching with queried properties, the
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006732 pointers obtained before the function should be updated to
suzuki toshiya5e7ad202011-01-09 23:09:36 +09006733 prevent the dereference to freed or reallocated nodes.
6734 To minimize the rescan of the linked list, the update is
6735 executed when the comparator notifies the change of cached
6736 nodes. This change depends previous change:
6737 38b272ffbbdaae276d636aec4ef84af407d16181
6738
6739 * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Rescan the
6740 top node if the cached nodes are changed.
6741 * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto.
6742
suzuki toshiya6b3bef22011-01-09 23:11:18 +090067432011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya5e7ad202011-01-09 23:09:36 +09006744
suzuki toshiya38b272f2011-01-09 22:49:07 +09006745 [cache] Notice if a cache query induced the node list change.
6746
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006747 Some node comparators (comparing the cache node contents and the
6748 properties specified by the query) can flush the cache node to
6749 prevent the cache inflation. The change may invalidate the pointers
6750 to the node obtained before the node comparison, so it should be
6751 noticed to the caller. The problem caused by the cache node
6752 changing is reported by Harsha, see Savannah bug #31923.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006753
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006754 * src/cache/ftccache.h (FTC_Node_CompareFunc): Add new argument
6755 `FT_Bool* list_changed' to indicate the change of the cached nodes
6756 to the caller.
6757 (FTC_CACHE_LOOKUP_CMP): Watch the change of the cached nodes by
6758 `_list_changed'.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006759 (FTC_CACHE_TRYLOOP_END): Take new macro argument `_list_changed'
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006760 and update it when `FTC_Manager_FlushN' flushes any nodes.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006761
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006762 * src/cache/ftccback.h (ftc_snode_compare): Updated to fit with new
6763 FTC_Node_CompareFunc type.
6764 (ftc_gnode_compare): Ditto.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006765
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006766 * src/cache/ftcbasic.c: Include FT_INTERNAL_OBJECTS_H to use
6767 TRUE/FALSE macros.
6768 (ftc_basic_gnode_compare_faceid): New argument `FT_Bool*
6769 list_changed' to indicate the change of the cache nodes (anyway, it
6770 is always FALSE).
suzuki toshiya38b272f2011-01-09 22:49:07 +09006771
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006772 * src/cache/ftccmap.c: Include FT_INTERNAL_OBJECTS_H to use
6773 TRUE/FALSE macros.
6774 (ftc_cmap_node_compare): New argument `FT_Bool* list_changed' to
6775 indicate the change of the cache nodes (anyway, it is always FALSE).
suzuki toshiya38b272f2011-01-09 22:49:07 +09006776 (ftc_cmap_node_remove_faceid): Ditto.
6777
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006778 * src/cache/ftccache.c (FTC_Cache_NewNode): Pass a NULL pointer to
6779 `FTC_CACHE_TRYLOOP_END', because the result is not needed.
6780 (FTC_Cache_Lookup): Watch the change of the cache nodes by
6781 `list_changed'.
6782 (FTC_Cache_RemoveFaceID): Ditto.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006783
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006784 * src/cache/ftcglyph.c: Include FT_INTERNAL_OBJECTS_H to use
6785 TRUE/FALSE macros.
6786 (ftc_gnode_compare): New argument `FT_Bool* list_changed' to
6787 indicate the change of the cache nodes (anyway, it is always FALSE).
6788 (FTC_GNode_Compare): New argument `FT_Bool* list_changed' to be
6789 passed to `ftc_gnode_compare'.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006790 * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto.
6791
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006792 * src/cache/ftcsbits.c (ftc_snode_compare): New argument `FT_Bool*
6793 list_changed' to indicate the change of the cache nodes, anyway. It
6794 is updated by `FTC_CACHE_TRYLOOP'.
6795 (FTC_SNode_Compare): New argument `FT_Bool* list_changed' to be
6796 passed to `ftc_snode_compare'.
suzuki toshiya38b272f2011-01-09 22:49:07 +09006797 * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto.
6798
suzuki toshiya6b3bef22011-01-09 23:11:18 +090067992011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya38b272f2011-01-09 22:49:07 +09006800
Werner Lemberg575078d2011-04-18 15:33:17 +02006801 [cache] Fit `FTC_GNode_Compare' to `FTC_Node_CompareFunc'.
suzuki toshiya62d116f2011-01-09 22:38:10 +09006802
6803 * src/cache/ftcglyph.h (FTC_GNode_Compare): Add the 3rd
6804 argument `FTC_Cache cache' to fit FTC_Node_CompareFunc
6805 prototype.
6806 * src/cache/ftcglyph.c (FTC_GNode_Compare): Ditto. Anyway,
Werner Lemberg575078d2011-04-18 15:33:17 +02006807 `cache' is not used by its child `ftc_gnode_compare'.
suzuki toshiya62d116f2011-01-09 22:38:10 +09006808
suzuki toshiya6b3bef22011-01-09 23:11:18 +090068092011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya62d116f2011-01-09 22:38:10 +09006810
suzuki toshiya9a2e2552011-01-09 21:09:58 +09006811 [cache] Deduplicate the code to get the top node by a hash.
6812
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006813 There are several duplicated code fragments getting the top node
suzuki toshiya9a2e2552011-01-09 21:09:58 +09006814 from a cache by a given hash, like:
6815
6816 idx = hash & cache->mask;
6817 if ( idx < cache->p )
6818 idx = hash & ( cache->mask * 2 + 1 );
6819 pnode = cache->buckets + idx;
6820
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006821 To remove duplication, a cpp-macro to do same work
6822 `FTC_NODE__TOP_FOR_HASH' is introduced. For non-inlined
Werner Lemberg575078d2011-04-18 15:33:17 +02006823 configuration, non-`ftc_get_top_node_for_hash' is also introduced.
suzuki toshiya9a2e2552011-01-09 21:09:58 +09006824
6825 * src/cache/ftccache.h (FTC_NODE__TOP_FOR_HASH): Declare
6826 and implement inlined version.
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006827 (FTC_CACHE_LOOKUP_CMP): Use `FTC_NODE__TOP_FOR_HASH'.
6828 * src/cache/ftccache.c (ftc_get_top_node_for_hash): Non-inlined
6829 version.
6830 (ftc_node_hash_unlink): Use `FTC_NODE__TOP_FOR_HASH'.
suzuki toshiya9a2e2552011-01-09 21:09:58 +09006831 (ftc_node_hash_link): Ditto.
6832 (FTC_Cache_Lookup): Ditto.
6833
suzuki toshiya6b3bef22011-01-09 23:11:18 +090068342011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya9a2e2552011-01-09 21:09:58 +09006835
suzuki toshiya52a1e472011-01-09 20:47:37 +09006836 [cache] inline-specific functions are conditionalized.
6837
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006838 * src/cache/ftcglyph.c (FTC_GNode_Compare): Conditionalized for
6839 inlined configuration. This function is a thin wrapper of
6840 `ftc_gnode_compare' for inlined `FTC_CACHE_LOOKUP_CMP' (see
6841 `nodecmp' argument). Under non-inlined configuration,
6842 `ftc_gnode_compare' is invoked by `FTC_Cache_Lookup', via
6843 `FTC_Cache->clazz.node_compare'.
suzuki toshiya52a1e472011-01-09 20:47:37 +09006844
6845 * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto.
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006846 * src/cache/ftcsbits.c (FTC_SNode_Compare): Ditto, for
6847 `ftc_snode_compare'.
suzuki toshiya52a1e472011-01-09 20:47:37 +09006848 * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto.
6849
suzuki toshiya6b3bef22011-01-09 23:11:18 +090068502011-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya52a1e472011-01-09 20:47:37 +09006851
suzuki toshiya0de5b372011-01-09 20:31:22 +09006852 [cache] Correct a type mismatch under non-inlined config.
6853
Werner Lemberg3757b1e2011-01-13 10:33:04 +01006854 * src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): `FTC_GCache_Lookup'
6855 takes the node via a pointer `FTC_Node*', differently from cpp-macro
6856 `FTC_CACHE_LOOKUP_CMP'.
suzuki toshiya0de5b372011-01-09 20:31:22 +09006857
suzuki toshiya6b3bef22011-01-09 23:11:18 +090068582011-01-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya34f4b202011-01-06 11:19:50 +09006859
6860 Update Jamfile to include Bzip2 support.
6861
6862 * Jamfile: Include src/bzip2 to project.
6863 Comments for lzw, gzip, bzip2 are changed to clarify that
6864 they are for compressed PCF fonts, not others.
6865 (e.g. compressed BDF fonts are not supported yet)
6866
suzuki toshiya6b3bef22011-01-09 23:11:18 +090068672011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya19099592011-01-06 02:05:43 +09006868
suzuki toshiya55e6a6f2011-01-06 02:55:42 +09006869 Update Symbian project files to include Bzip2 support.
6870
Werner Lemberg575078d2011-04-18 15:33:17 +02006871 Currently, it provides `FT_Stream_OpenBzip2' that returns
suzuki toshiya55e6a6f2011-01-06 02:55:42 +09006872 unimplemented error always, to prevent unresolved symbol
6873 error for the applications designed for Unix systems.
6874
6875 * builds/symbian/bld.inf: Include ftbzip2.h.
6876 * builds/symbian/freetype.mmp: Include ftbzip2.c.
6877
suzuki toshiya6b3bef22011-01-09 23:11:18 +090068782011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya55e6a6f2011-01-06 02:55:42 +09006879
suzuki toshiya017b4d52011-01-06 02:49:19 +09006880 Update classic MacOS makefiles to include Bzip2 support.
6881
Werner Lemberg575078d2011-04-18 15:33:17 +02006882 Currently, it provides `FT_Stream_OpenBzip2' that returns
suzuki toshiya017b4d52011-01-06 02:49:19 +09006883 unimplemented error always, to prevent unresolved symbol
6884 error for the applications designed for Unix systems.
6885
6886 * builds/mac/FreeType.m68k_cfm.make.txt: Include ftbzip2.c.o.
6887 * builds/mac/FreeType.m68k_far.make.txt: Ditto.
6888 * builds/mac/FreeType.ppc_carbon.make.txt: Include ftbzip2.c.x.
suzuki toshiya29cb6a62011-01-06 02:53:21 +09006889 * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
suzuki toshiya017b4d52011-01-06 02:49:19 +09006890
suzuki toshiya6b3bef22011-01-09 23:11:18 +090068912011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya017b4d52011-01-06 02:49:19 +09006892
suzuki toshiyabe683e72011-01-06 02:44:53 +09006893 Update Amiga makefiles to include Bzip2 support.
6894
Werner Lemberg575078d2011-04-18 15:33:17 +02006895 Currently, it provides `FT_Stream_OpenBzip2' that returns
suzuki toshiyabe683e72011-01-06 02:44:53 +09006896 unimplemented error always, to prevent unresolved symbol
6897 error for the applications designed for Unix systems.
6898
6899 * builds/amiga/makefile: Include bzip2.ppc.o built from ftbzip2.c.
6900 * builds/amiga/makefile.os4: Include bzip2.o built from ftbzip2.c.
6901 * builds/amiga/smakefile: Ditto.
6902
suzuki toshiya6b3bef22011-01-09 23:11:18 +090069032011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiyabe683e72011-01-06 02:44:53 +09006904
suzuki toshiya41d7e4a2011-01-06 02:34:07 +09006905 Update pkg-config tools to reflect Bzip2 support.
6906
6907 * builds/unix/freetype-config.in: Include `-lbz2' to
6908 --libs output, if built with Bzip2 support.
6909 * builds/unix/freetype2.in: Ditto.
6910
suzuki toshiya6b3bef22011-01-09 23:11:18 +090069112011-01-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya41d7e4a2011-01-06 02:34:07 +09006912
suzuki toshiya19099592011-01-06 02:05:43 +09006913 * builds/unix/configure.raw: Remove `SYSTEM_BZ2LIB' macro.
6914
6915 SYSTEM_ZLIB is used to switch the builtin zlib source
6916 or system zlib source out of FreeType2. But ftbzip2
6917 module has no builtin bzip2 library and always requires
6918 system bzip2 library. Thus SYSTEM_BZ2LIB is always yes,
6919 it is not used.
6920
Werner Lembergf3ce2372011-01-03 07:11:54 +010069212011-01-03 Werner Lemberg <wl@gnu.org>
6922
6923 */rules.mk: Handle `*pic.c' files.
6924
Werner Lembergfe42a652010-12-31 17:47:09 +010069252010-12-31 Werner Lemberg <wl@gnu.org>
6926
Werner Lemberg91843df2010-12-31 19:30:53 +01006927 * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 64.
6928 Problem reported by Tom Bishop <wenlin@wenlin.com>.
6929
69302010-12-31 Werner Lemberg <wl@gnu.org>
6931
Werner Lembergfe42a652010-12-31 17:47:09 +01006932 Improve bzip2 support.
6933
6934 * include/freetype/ftmoderr.h: Add bzip2.
6935
6936 * docs/INSTALL.ANY, docs/CHANGES: Updated.
6937
6938 * src/pcf/README: Updated.
6939 * include/freetype/internal/pcftypes.h: Obsolete, removed.
6940
Joel Klingheded913c22010-12-31 16:59:33 +010069412010-12-31 Joel Klinghed <the_jk@yahoo.com>
6942
6943 Add bzip2 compression support to handle *.pcf.bz2 files.
6944
6945 * builds/unix/configure.raw: Test for libbz2 library.
6946
6947 * devel/ftoption.h, include/freetype/config/ftoption.h
6948 (FT_CONFIG_OPTION_USE_BZIP2): Define.
6949 * include/freetype/config/ftheader.h (FT_BZIP2_H): Define.
6950
6951 * include/freetype/ftbzip2.h: New file.
6952
6953 * src/bzip2/*: New files.
6954
6955 * src/pcf/pcf.h: s/gzip_/comp_/.
6956 * src/pcf/pcfdrvr.c: Include FT_BZIP2_H.
6957 s/gzip_/comp_/.
6958 (PCF_Face_Init): Handle bzip2 compressed files.
6959
6960 * docs/formats.txt, modules.cfg: Updated.
6961
Harsha7774ac62010-12-25 16:34:56 +010069622010-12-25 Harsha <mm.harsha@gmail.com>
6963
6964 Apply Savannah patch #7422.
6965
Joel Klingheded913c22010-12-31 16:59:33 +01006966 If we encounter a space in a string then the sbit buffer is NULL,
Harsha7774ac62010-12-25 16:34:56 +01006967 height and width are 0s. So the check in ftc_snode_compare will
6968 always pass for spaces (comparision with 255). Here the comments
6969 above the condition are proper but the implementation is not. When
6970 we create an snode I think it is the proper way to initialize the
6971 width to 255 and then put a check for being equal to 255 in snode
6972 compare function.
6973
6974 * src/cache/ftcsbits.c (FTC_SNode_New): Initialize sbit widths with
6975 value 255.
6976 (ftc_snode_compare): Fix condition.
6977
Werner Lemberg312d26a2010-12-13 20:17:26 +010069782010-12-13 Werner Lemberg <wl@gnu.org>
6979
6980 Fix parameter handling of `FT_Set_Renderer'.
6981 Reported by Kirill Tishin <siege@bk.ru>.
6982
6983 * src/base/ftobjs.c (FT_Set_Renderer): Increment `parameters'.
6984
Werner Lemberg396b11b2010-12-09 23:16:18 +010069852010-12-09 Werner Lemberg <wl@gnu.org>
6986
6987 [cff] Allow `hlineto' and `vlineto' without arguments.
6988
6989 We simply ignore such instructions. This is invalid, but it doesn't
6990 harm; and indeed, there exist such subsetted fonts in PDFs.
6991
6992 Reported by Albert Astals Cid <aacid@kde.org>.
6993
6994 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
6995 [cff_op_hlineto]: Ignore instruction if there aren't any arguments
6996 on the stack.
6997
Werner Lemberg9ec31ce2010-11-28 16:07:49 +010069982010-11-28 Werner Lemberg <wl@gnu.org>
6999
7000 * Version 2.4.4 released.
7001 =========================
7002
7003
7004 Tag sources with `VER-2-4-4'.
7005
7006 * docs/CHANGES: Updated.
7007
7008 * docs/VERSION.DLL: Update documentation and bump version number to
7009 2.4.4
7010
7011 * README, Jamfile (RefDoc),
7012 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
7013 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
7014 builds/win32/visualc/freetype.dsp,
7015 builds/win32/visualc/freetype.vcproj,
7016 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
7017 builds/win32/visualce/freetype.vcproj,
7018 builds/win32/visualce/index.html,
7019 builds/wince/vc2005-ce/freetype.vcproj,
7020 builds/wince/vc2005-ce/index.html,
7021 builds/wince/vc2008-ce/freetype.vcproj,
7022 builds/wince/vc2008-ce/index.html: s/2.4.3/2.4.4/, s/243/244/.
7023
7024 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
7025
7026 * builds/unix/configure.raw (version_info): Set to 12:2:6.
7027
Алексей Подтележников7c4ac3c2010-11-28 08:23:40 +010070282010-11-28 Alexei Podtelezhnikov <apodtele@gmail.com>
7029
7030 [ftsmooth]: Minor code simplification.
7031
7032 * src/smooth/ftgrays (gray_render_cubic): Do only one comparison
7033 instead of two.
7034
Johnson Y. Yan9073e7c2010-11-26 11:58:08 +010070352010-11-26 Johnson Y. Yan <yinsen_yan@foxitsoftware.com>
7036
7037 [truetype] Better multi-threading support.
7038
7039 * src/truetype/ttinterp.c (TT_Load_Context): Reset glyph zone
7040 references.
7041
John Tytgated7d1a52010-11-23 19:30:38 +010070422010-11-23 John Tytgat <John.Tytgat@esko.com>
7043
7044 * src/psaux/t1decode.c (t1_decoder_parse_charstring): Expand
7045 start_point, check_points, add_point, add_point1, close_contour
7046 macros.
7047 Remove add_contour macro.
7048 Return error code from t1_builder_start_point and
7049 t1_builder_check_points when there was one (instead of returning 0).
7050
suzuki toshiya9f5dd612010-11-23 02:47:10 +090070512010-11-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7052
7053 [truetype] Identify the tricky fonts by cvt/fpgm/prep checksums.
7054 Some Latin TrueType fonts are still expected to be unhinted.
7055 Fix Savannah bug #31645.
7056
7057 * src/truetype/ttobjs.c (tt_check_trickyness): Divided to...
7058 (tt_check_trickyness_family): this checking family name, and
7059 (tt_check_trickyness_sfnt_ids): this checking cvt/fpgm/prep.
7060 (tt_get_sfnt_checksum): Function to retrieve the sfnt checksum
7061 for specified subtable even if cleared by lazy PDF generators.
7062 (tt_synth_sfnt_checksum): Function to calculate the checksum.
7063
Werner Lembergfa764cf2010-11-18 13:08:52 +010070642010-11-18 Werner Lemberg <wl@gnu.org>
7065
Werner Lembergec4372f2010-11-18 20:34:22 +01007066 [truetype] Fix `loca' handling for inconsistent number of glyphs.
7067 Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.
7068
7069 * src/truetype/ttpload.c (tt_face_load_loca): While sanitizing,
7070 handle case where `loca' is the last table in the font.
7071
70722010-11-18 Werner Lemberg <wl@gnu.org>
7073
Werner Lembergfa764cf2010-11-18 13:08:52 +01007074 [sfnt] Ignore all errors while loading `OS/2' table.
7075 Suggested by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.
7076
7077 * src/sfnt/sfobjs.c (sfnt_load_face): Do it.
7078
Johnson Y. Yanb70d8a02010-11-18 10:36:59 +010070792010-11-18 Johnson Y. Yan <yinsen_yan@foxitsoftware.com>
7080
7081 [type1] Fix matrix normalization.
7082
7083 * src/type1/t1load.c (parse_font_matrix): Handle sign of scaling
7084 factor.
7085
Werner Lembergf689bf72010-11-18 10:28:16 +010070862010-11-18 Werner Lemberg <wl@gnu.org>
7087
Johnson Y. Yanb70d8a02010-11-18 10:36:59 +01007088 [type1] Improve guard against malformed data.
Werner Lembergf689bf72010-11-18 10:28:16 +01007089 Based on a patch submitted by Johnson Y. Yan
7090 <yinsen_yan@foxitsoftware.com>
7091
7092 * src/type1/t1load.c (read_binary_data): Check `size'.
7093
Werner Lemberg05012ad2010-11-17 11:47:53 +010070942010-11-17 Werner Lemberg <wl@gnu.org>
7095
7096 [sfnt] While tracing, output table checksums also.
7097
7098 * src/sfnt/ttload.c (tt_face_load_font_dir): Do it.
7099
suzuki toshiyaac093902010-11-04 23:26:11 +090071002010-11-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7101
Werner Lemberg575078d2011-04-18 15:33:17 +02007102 [UVS] Fix `find_variant_selector_charmap', Savannah bug #31545.
suzuki toshiyaac093902010-11-04 23:26:11 +09007103
Werner Lemberg575078d2011-04-18 15:33:17 +02007104 Since 2010-07-04, `find_variant_selector_charmap' returns
suzuki toshiyaac093902010-11-04 23:26:11 +09007105 the first cmap subtable always under rogue-compatible
7106 configuration, it causes NULL pointer dereference and
7107 make UVS-related functions crashed.
7108
7109 * src/base/ftobjs.c (Fix find_variant_selector_charmap):
7110 Returns UVS cmap correctly.
7111
Alexei Podtelezhnikov6aee6902010-11-02 16:01:03 +010071122010-11-01 Alexei Podtelezhnikov <apodtele@gmail.com>
7113
7114 [ftsmooth] Improve rendering.
7115
7116 * src/smooth/ftsmooth.c (gray_render_conic): Since version 2.4.3,
7117 cubic deviations have been estimated _after_ UPSCALE, whereas
7118 conic ones have been evaluated _before_ UPSCALE, which produces
7119 inferior rendering results. Fix this.
7120 Partially undo change from 2010-10-15 by using ONE_PIXEL/4; this has
7121 been tested with demo images sent to the mailing list. See
7122
7123 http://lists.gnu.org/archive/html/freetype-devel/2010-10/msg00055.html
7124
7125 and later mails in this thread.
7126
Werner Lembergf0987ab2010-10-28 08:33:28 +020071272010-10-28 Werner Lemberg <wl@gnu.org>
7128
Werner Lemberg6a96bbe2010-10-28 08:51:15 +02007129 [ftraster] Minor fixes.
7130
7131 Reported by Tom Bishop <wenlin@wenlin.com>.
7132
7133 * src/raster/ftraster.c (ULong): Remove unused typedef.
7134 (TWorker): Remove unused variable `precision_mask'.
7135
71362010-10-28 Werner Lemberg <wl@gnu.org>
7137
Werner Lembergf0987ab2010-10-28 08:33:28 +02007138 [ftraster] Fix rendering.
7139
7140 Problem reported by Tom Bishop <wenlin@wenlin.com>; see
7141 thread starting with
7142
7143 http://lists.gnu.org/archive/html/freetype/2010-10/msg00049.html
7144
7145 * src/raster/ftraster.c (Line_Up): Replace FMulDiv with SMulDiv
7146 since the involved multiplication exceeds 32 bits.
7147
suzuki toshiya875439c2010-10-25 15:43:01 +090071482010-10-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7149
Werner Lemberg575078d2011-04-18 15:33:17 +02007150 Revert a change of `_idx' type in `FTC_CACHE_LOOKUP_CMP'.
suzuki toshiya875439c2010-10-25 15:43:01 +09007151
7152 * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Revert
7153 the type of `_idx' from FT_PtrDist (by previous change)
7154 to original FT_UFast, to match with FT_CacheRec.
7155
suzuki toshiya46c371c2010-10-25 00:14:13 +090071562010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7157
suzuki toshiya3512a712010-10-25 02:07:52 +09007158 [cache] Change the hash types to FT_PtrDist.
7159
7160 On LLP64 platforms (e.g. Win64), FT_ULong (32-bit)
7161 variables are inappropriate to calculate hash values
Werner Lemberg3757b1e2011-01-13 10:33:04 +01007162 from the memory address (64-bit). The hash variables
suzuki toshiya3512a712010-10-25 02:07:52 +09007163 are extended from FT_ULong to FT_PtrDist and new
7164 hashing macro functions are introduced. The hash
7165 values on 16-bit memory platforms are changed, but
7166 ILP32 and LP64 are not changed. The hash value in
7167 the cache subsystem is not reverted to the memory
7168 address, so using signed type FT_PtrDist is safe.
7169
7170 * src/cache/ftccache.h (_FTC_FACE_ID_HASH): New hash
Werner Lemberg575078d2011-04-18 15:33:17 +02007171 function to replace `FTC_FACE_ID_HASH' for portability.
Werner Lemberg3757b1e2011-01-13 10:33:04 +01007172 * src/cache/ftcmanag.h (FTC_SCALER_HASH): Replace
Werner Lemberg575078d2011-04-18 15:33:17 +02007173 `FTC_FACE_ID_HASH' by `_FTC_FACE_ID_HASH'.
suzuki toshiya3512a712010-10-25 02:07:52 +09007174 * src/cache/ftccmap.c (FTC_CMAP_HASH): Ditto.
7175
7176 * src/cache/ftccache.h (FTC_NodeRec): The type of the
7177 member `hash' is changed from FT_UInt32 to FT_PtrDist.
7178
7179 * src/cache/ftccache.h (FTC_Cache_Lookup): The type of the
7180 argument `hash' is changed from FT_UInt32 to FT_PtrDist.
7181 (FTC_Cache_NewNode): Ditto.
7182 * src/cache/ftccache.c (ftc_cache_add): Ditto.
7183 (FTC_Cache_Lookup): Ditto. (FTC_Cache_NewNode): Ditto.
7184 * src/cache/ftcglyph.h (FTC_GCache_Lookup): Ditto.
7185 * src/cache/ftcglyph.c (FTC_GCache_Lookup): Ditto.
7186
7187 * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): The type
7188 of the internal variable `hash' is changed to FT_PtrDist
7189 from FT_UInt32. (FTC_ImageCache_LookupScaler): Ditto.
7190 (FTC_SBitCache_Lookup): Ditto.
7191 (FTC_SBitCache_LookupScaler): Ditto.
7192 * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto.
7193 * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Ditto.
7194 Also the type of the internal variable `_idx' is changed to
suzuki toshiya875439c2010-10-25 15:43:01 +09007195 FT_PtrDist from FT_UFast for better pointer calculation.
Werner Lemberg3757b1e2011-01-13 10:33:04 +01007196
suzuki toshiya3512a712010-10-25 02:07:52 +090071972010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7198
suzuki toshiya61590b72010-10-25 01:12:09 +09007199 [cache] Hide internal macros incompatible with LLP64.
7200
Werner Lemberg575078d2011-04-18 15:33:17 +02007201 `FT_POINTER_TO_ULONG', `FTC_FACE_ID_HASH', and
7202 `FTC_IMAGE_TYPE_HASH' are enclosed by
suzuki toshiya61590b72010-10-25 01:12:09 +09007203 FT_CONFIG_OPTION_OLD_INTERNALS and hidden from
7204 normal clients.
7205
7206 For the history of these macros, see the investigation:
7207 http://lists.gnu.org/archive/html/freetype/2010-10/msg00022.html
7208
72092010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7210
Werner Lemberg575078d2011-04-18 15:33:17 +02007211 Change the type of `FT_MEM_VAL' from FT_ULong to FT_PtrDist.
suzuki toshiyab8b498f2010-10-25 00:35:59 +09007212
7213 On LLP64 platforms (e.g. Win64), unsigned long (32-bit)
Werner Lemberg575078d2011-04-18 15:33:17 +02007214 cannot cover the memory address (64-bit). `FT_MEM_VAL' is
suzuki toshiyab8b498f2010-10-25 00:35:59 +09007215 used for hashing only and not dereferred, so using signed
7216 type FT_PtrDist is safe.
7217
7218 * src/base/ftdbgmem.c (FT_MEM_VAL): Change the type of the
7219 return value from FT_ULong to FT_PtrDist.
7220 (ft_mem_table_resize): The type of hash is changed to
7221 FT_PtrDist. (ft_mem_table_get_nodep): Ditto.
7222
72232010-10-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7224
suzuki toshiya46c371c2010-10-25 00:14:13 +09007225 Replace "%lx" for memory address by "%p", LLP64 platforms.
7226
7227 On LLP64 platforms (e.g. Win64), long (32-bit) cannot cover
7228 the memory address (64-bit). Also the casts from the pointer
7229 type to long int should be removed to preserve the address
7230 correctly.
7231
7232 * src/raster/ftraster.c (New_Profile): Replace "%lx" by "%p".
7233 (End_Profile) Ditto.
7234 * src/truetype/ttinterp.c (Init_Context): Ditto.
7235
Werner Lemberg34d61e82010-10-15 20:44:15 +020072362010-10-15 Alexei Podtelezhnikov <apodtele@gmail.com>
7237
7238 Fix thinko in spline flattening.
7239
7240 FT_MAX_CURVE_DEVIATION is dependent on the value of ONE_PIXEL.
7241
7242 * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): Remove it and
7243 replace it everywhere with ONE_PIXEL/8.
7244
suzuki toshiya4b718712010-10-13 16:21:59 +090072452010-10-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7246
suzuki toshiya463ddda2010-10-13 17:20:27 +09007247 [raccess] Skip unrequired resource access rules by Darwin VFS.
7248
7249 When a resource fork access rule by Darwin VFS could open the
7250 resource fork but no font is found in it, the rest of rules
7251 by Darwin VFS are skipped. It reduces the warnings of the
7252 deprecated resource fork access method by recent Darwin kernel.
7253 Fix MacPorts ticket #18859:
7254 http://trac.macports.org/ticket/18859
7255
7256 * src/base/ftobjs.c (load_face_in_embedded_rfork):
Werner Lemberg575078d2011-04-18 15:33:17 +02007257 When `FT_Stream_New' returns FT_Err_Cannot_Open_Stream, it
7258 means that the file is possible to be `fopen'-ed but zero-sized.
Werner Lemberg3757b1e2011-01-13 10:33:04 +01007259 Also there is a case that the resource fork is not zero-sized,
suzuki toshiya463ddda2010-10-13 17:20:27 +09007260 but no supported font exists in it. If a rule by Darwin VFS
7261 falls into such cases, there is no need to try other Darwin VFS
7262 rules anymore. Such cases are marked by vfs_rfork_has_no_font.
7263 If it is TRUE, the Darwin VFS rules are skipped.
7264
72652010-10-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7266
suzuki toshiyac081a4a2010-10-13 17:05:42 +09007267 [raccess] Grouping resource access rules based on Darwin VFS.
7268
7269 MacOS X/Darwin kernel supports a few tricky methods to access
7270 a resource fork via ANSI C or POSIX interface. Current resource
7271 fork accessor tries all possible methods to support all kernels.
7272 But if a method could open a resource fork but no font is found,
Werner Lemberg3757b1e2011-01-13 10:33:04 +01007273 there is no need to try other methods older than tested method.
suzuki toshiyac081a4a2010-10-13 17:05:42 +09007274 To determine whether the rule index is for Darwin VFS, a local
Werner Lemberg575078d2011-04-18 15:33:17 +02007275 function `ftrfork.c::raccess_rule_by_darwin_vfs' is introduced.
suzuki toshiyac081a4a2010-10-13 17:05:42 +09007276 To use this function in ftobjs.c etc but it should be inlined,
7277 it is exposed by ftbase.h.
7278
7279 * src/base/ftrfork.c (FT_RFork_Rule): New enum type to identify
7280 the rules to access the resource fork.
7281 (raccess_guess_rec): New structure to bind the rule function and
7282 rule enum type.
7283 (FT_Raccess_Guess): The list of the rule functions is replaced by
7284 (raccess_guess_table): This. This is exposed to be used by other
7285 intra module functions.
7286 (raccess_rule_by_darwin_vfs): A function to return a boolean
7287 if the rule specified by the rule index is based on Darwin VFS.
7288
72892010-10-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7290
suzuki toshiya4b718712010-10-13 16:21:59 +09007291 Prevent to open a FT_Stream for zero-sized file on non-Unix.
7292
7293 builds/unix/ftsystem.c prevents to open an useless stream from
7294 zero-sized file and returns FT_Err_Cannot_Open_Stream, but the
7295 stream drivers for ANSI C, Amiga and VMS return useless streams.
7296 For cross-platform consistency, all stream drivers should act
7297 same.
7298
7299 * src/base/ftsystem.c (FT_Stream_Open): If the size of the opened
7300 file is zero, FT_Err_Cannot_Open_Stream is returned.
7301 * builds/amiga/src/base/ftsystem.c (FT_Stream_Open): Ditto.
7302 * src/vms/ftsystem.c (FT_Stream_Open): Ditto.
7303
Werner Lemberg59eb9f82010-10-12 07:49:17 +020073042010-10-12 Werner Lemberg <wl@gnu.org>
7305
Werner Lemberg273e2b72012-09-18 13:27:27 +02007306 [truetype] Fix Savannah bug #31310.
Werner Lemberg59eb9f82010-10-12 07:49:17 +02007307
7308 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against
7309 invalid `runcnt' values.
7310
Chris Liddellbc4ed482010-10-08 18:40:18 +020073112010-10-08 Chris Liddell <chris.liddell@artifex.com>
7312
Werner Lemberg273e2b72012-09-18 13:27:27 +02007313 [sfnt] Fix Savannah bug #31275.
Chris Liddellbc4ed482010-10-08 18:40:18 +02007314
7315 * src/sfnt/ttpost.c: Include FT_INTERNAL_DEBUG_H.
7316
Werner Lemberg0edf0982010-10-06 11:52:27 +020073172010-10-06 Werner Lemberg <wl@gnu.org>
7318
7319 [truetype] Improve error handling of `SHZ' bytecode instruction.
7320 Problem reported by Chris Evans <scarybeasts@gmail.com>.
7321
7322 * src/truetype/ttinterp.c (Ins_SHZ): Check `last_point'.
7323
Werner Lemberg94d540e2010-10-05 12:28:15 +020073242010-10-05 Werner Lemberg <wl@gnu.org>
7325
7326 Fix Savannah bug #31253.
7327 Patch submitted by an anonymous reporter.
7328
7329 * configure: Use `awk' instead of `sed' to manipulate output of `ls
7330 -id'.
7331
Werner Lemberg75eeb322010-10-03 20:17:27 +020073322010-10-03 Werner Lemberg <wl@gnu.org>
7333
Werner Lemberga5a32c12010-10-03 20:36:03 +02007334 * Version 2.4.3 released.
7335 =========================
7336
7337
7338 Tag sources with `VER-2-4-3'.
7339
7340 * docs/CHANGES: Updated.
7341
7342 * docs/VERSION.DLL: Update documentation and bump version number to
7343 2.4.3
7344
7345 * README, Jamfile (RefDoc),
7346 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
7347 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
7348 builds/win32/visualc/freetype.dsp,
7349 builds/win32/visualc/freetype.vcproj,
7350 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
7351 builds/win32/visualce/freetype.vcproj,
7352 builds/win32/visualce/index.html,
7353 builds/wince/vc2005-ce/freetype.vcproj,
7354 builds/wince/vc2005-ce/index.html,
7355 builds/wince/vc2008-ce/freetype.vcproj,
7356 builds/wince/vc2008-ce/index.html: s/2.4.2/2.4.3/, s/242/243/.
7357
7358 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
7359
7360 * builds/unix/configure.raw (version_info): Set to 12:1:6.
7361
73622010-10-03 Werner Lemberg <wl@gnu.org>
7363
Werner Lemberg75eeb322010-10-03 20:17:27 +02007364 Avoid `configure' issues with symbolic links.
7365 Based on a patch from Alexander Stohr <Alexander.Stohr@gmx.de>.
7366
7367 * configure: Compare directories using `ls -id'.
7368 Check existence of `reference' subdirectory before creating it.
7369
Werner Lemberg0e6fc092010-10-02 09:05:46 +020073702010-10-02 Werner Lemberg <wl@gnu.org>
7371
Werner Lemberg273e2b72012-09-18 13:27:27 +02007372 [sfnt] Fix Savannah bug #31088 (sort of).
Werner Lemberg3987b152010-10-02 11:46:19 +02007373
7374 * src/sfnt/ttload.c (tt_face_load_maxp): Always allocate at least 64
7375 function entries.
7376
73772010-10-02 Werner Lemberg <wl@gnu.org>
7378
Werner Lemberg0e6fc092010-10-02 09:05:46 +02007379 [smooth] Fix splitting of cubics for negative values.
7380
7381 Reported by Róbert Márki <gsmiko@gmail.com>; see
7382 http://lists.gnu.org/archive/html/freetype/2010-09/msg00019.html.
7383
7384 * src/smooth/ftgrays.c (gray_render_cubic): Fix thinko.
7385
suzuki toshiya5edc2f32010-10-01 08:15:55 +020073862010-10-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7387
Werner Lemberg273e2b72012-09-18 13:27:27 +02007388 [truetype] Fix Savannah bug #31040.
suzuki toshiya5edc2f32010-10-01 08:15:55 +02007389
7390 * src/truetype/ttinterp.c (free_buffer_in_size): Remove.
7391 (TT_RunIns): Updated.
7392
suzuki toshiyad2b8b8d2010-09-20 19:06:23 +090073932010-09-20 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7394
7395 [sfnt] Make error message filling NULL names less verbose.
7396
7397 * src/sfnt/ttpost.c (load_format_20): Showing 1 summary message
7398 when we fill `post' names by NULL, instead of per-entry message.
7399
Graham Ashere0a9a932010-09-20 09:29:23 +020074002010-09-20 Graham Asher <graham.asher@btinternet.com>
7401 David Bevan <david.bevan@pb.com>
7402
7403 [smooth] Fix and improve spline flattening.
Werner Lemberg297ff852010-10-03 20:22:23 +02007404
Graham Ashere0a9a932010-09-20 09:29:23 +02007405 This fixes the flattening of cubic, S-shaped curves and speeds up
7406 the handling of both the conic and cubic arcs.
7407
7408 See the discussions on the freetype-devel mailing list in late
7409 August and September 2010 for details.
7410
7411 * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): New macro.
7412 (TWorker): Remove `conic_level' and `cubic_level' elements.
7413 (gray_render_conic): Simplify algorithm.
7414 (gray_render_cubic): New algorithm; details are given in the code
7415 comments.
7416 (gray_convert_glyph): Remove heuristics.
7417
Werner Lembergd38ba0c2010-09-19 20:51:19 +020074182010-09-19 Werner Lemberg <wl@gnu.org>
7419
7420 Minor fixes.
7421
7422 * src/cff/cffload.c (cff_charset_compute_cids): `charset->sids[i]'
7423 is `FT_UShort'.
7424 (cff_index_access_element): Don't use additions in comparison.
7425 * src/sfnt/ttpost.c (load_format_20): Make `post_limit' of type
7426 `FT_Long'.
7427 Don't use additions in comparison.
7428 Improve tracing messages.
7429 (load_format_25, load_post_names): Make `post_limit' of type
7430 `FT_Long'.
7431
suzuki toshiya900e7e02010-09-20 01:03:36 +090074322010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
Werner Lemberg297ff852010-10-03 20:22:23 +02007433
suzuki toshiya73aa20c2010-09-20 01:30:38 +09007434 [cff] Truncate the element length at the end of the stream.
7435 See Savannah bug #30975.
Werner Lemberg297ff852010-10-03 20:22:23 +02007436
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007437 * src/cff/cffload.c (cff_index_access_element): `off2', the offset
Werner Lemberg1a414642010-10-03 20:23:04 +02007438 to the next element is truncated at the end of the stream to prevent
7439 invalid I/O. As `off1', the offset to the requested element has
Werner Lemberg575078d2011-04-18 15:33:17 +02007440 been checked by `FT_STREAM_SEEK', `off2' should be checked
Werner Lemberg1a414642010-10-03 20:23:04 +02007441 similarly.
suzuki toshiya73aa20c2010-09-20 01:30:38 +09007442
74432010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
suzuki toshiya900e7e02010-09-20 01:03:36 +09007444
suzuki toshiyad2d843a2010-09-20 01:28:17 +09007445 [cff] Ignore CID > 0xFFFFU.
7446 See Savannah bug #30975.
7447
7448 * src/cff/cffload.c (cff_charset_compute_cids): Ignore CID if
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007449 greater than 0xFFFFU. CFF font spec does not mention maximum CID in
7450 the font, but PostScript and PDF spec define that maximum CID is
7451 0xFFFFU.
suzuki toshiyad2d843a2010-09-20 01:28:17 +09007452
74532010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7454
Werner Lemberg575078d2011-04-18 15:33:17 +02007455 [cff] Make trace message in` cff_charset_load' verbose.
suzuki toshiyaa0f43f22010-09-20 01:26:56 +09007456 See Savannah bug #30975.
7457
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007458 * src/cff/cffload.c (cff_charset_load): Report the original `nleft'
7459 and truncated `nleft'.
suzuki toshiyaa0f43f22010-09-20 01:26:56 +09007460
74612010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7462
suzuki toshiyab3e19542010-09-20 01:22:34 +09007463 [cff] Correct `max_cid' from CID array length to max CID.
7464 See Savannah bug #30975.
7465
7466 * src/cff/cffload.c (cff_charset_compute_cids): Don't increment
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007467 max_cid after detecting max CID. The array CFF_Charset->cids is
7468 allocated by max_cid + 1.
7469 (cff_charset_cid_to_gindex): Permit CID is less than or equal to
7470 CFF_Charset->max_cid.
suzuki toshiyab3e19542010-09-20 01:22:34 +09007471 * src/cff/cffobjs.c (cff_face_init): FT_Face->num_glyphs is
7472 calculated as CFF_Charset->max_cid + 1.
7473
74742010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7475
suzuki toshiya643d49d2010-09-20 01:07:57 +09007476 [truetype] Sanitize the broken offsets in `loca'.
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007477 See Savannah bug #31040.
suzuki toshiya643d49d2010-09-20 01:07:57 +09007478
7479 * src/truetype/ttpload.c (tt_face_get_location): If `pos1', the
7480 offset to the requested entry in `glyf' exceeds the end of the
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007481 table, return offset=0, length=0. If `pos2', the offset to the next
7482 entry in `glyf' exceeds the end of the table, truncate the entry
7483 length at the end of `glyf' table.
suzuki toshiya643d49d2010-09-20 01:07:57 +09007484
74852010-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7486
suzuki toshiya900e7e02010-09-20 01:03:36 +09007487 [sfnt] Prevent overrunning in `post' table parser.
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007488 See Savannah bug #31040.
suzuki toshiya900e7e02010-09-20 01:03:36 +09007489
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007490 * src/sfnt/ttpost.c (load_post_names): Get the length of `post'
Werner Lemberg575078d2011-04-18 15:33:17 +02007491 table and pass the limit of `post' table to `load_format_20' and
7492 `load_format_25'.
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007493 (load_format_20): Stop the parsing when we reached at the limit of
7494 `post' table. If more glyph names are required, they are filled by
7495 NULL names.
suzuki toshiya900e7e02010-09-20 01:03:36 +09007496
suzuki toshiyadb053ec2010-09-17 23:20:00 +090074972010-09-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7498
7499 [truetype] Don't duplicate size->twilight structure to be freed.
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007500 See Savannah bug #31040 for detail.
suzuki toshiyadb053ec2010-09-17 23:20:00 +09007501
7502 * src/truetype/ttinterp.c (free_buffer_in_size): Don't duplicate
7503 FT_GlyphZoneRec size->twilight to be freed. If duplicated,
Werner Lemberg575078d2011-04-18 15:33:17 +02007504 `FT_FREE' erases the duplicated pointers only and leave original
suzuki toshiyadb053ec2010-09-17 23:20:00 +09007505 pointers. They can cause the double-free crash when the burst
Werner Lemberg575078d2011-04-18 15:33:17 +02007506 errors occur in TrueType interpreter and `free_buffer_in_size' is
Werner Lembergd38ba0c2010-09-19 20:51:19 +02007507 invoked repeatedly.
suzuki toshiyadb053ec2010-09-17 23:20:00 +09007508
Werner Lembergafd89d32010-09-15 13:02:35 +020075092010-09-15 Werner Lemberg <wl@gnu.org>
7510
7511 Make bytecode debugging with FontForge work again.
7512
7513 * src/truetype/ttinterp.c (TT_RunIns): Don't call
7514 `free_buffer_in_size' in case of error if a debugger is active.
7515
Werner Lemberg6abb9232010-09-14 09:02:10 +020075162010-09-14 Werner Lemberg <wl@gnu.org>
7517
7518 Improve tracing messages.
7519
7520 * src/truetype/ttinterp.c (TT_RunIns): Improve wording of tracing
7521 message.
7522 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Add
7523 tracing message.
7524 * src/truetype/ttgload.c (tt_loader_init): Add tracing message.
7525 * src/cache/ftcsbits.c (ftc_snode_load): Emit tracing message if
7526 glyph doesn't fit into a small bitmap container.
7527
Werner Lemberg5220ef52010-09-13 07:32:22 +020075282010-09-13 Werner Lemberg <wl@gnu.org>
7529
7530 Fix minor issues reported by <muktha.narayan@wipro.com>.
7531
7532 * src/autofit/aflatin.c (af_latin_compute_stem_width): Remove
7533 redundant conditional check.
7534 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Ditto.
7535 * src/cff/cffload.c (cff_encoding_load): Remove conditional check
7536 which always evaluates to `true'.
7537 * src/pshinter/pshalgo.c (ps_glyph_interpolate_strong_points):
7538 Ditto.
7539 * src/truetype/ttinterp.c (Ins_IUP): Ditto.
7540 * src/cid/cidgload.c (cid_slot_load_glyph): Don't check for NULL if
7541 value is already dereferenced.
7542 * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix check of `face'.
7543
suzuki toshiya0eb657b2010-08-31 13:29:05 +090075442010-08-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7545
suzuki toshiyafd0cdb72010-08-31 18:32:03 +09007546 Ignore the environmental setting of LIBTOOL.
7547 Patch is suggested by Adrian Bunk, to prevent unexpected
7548 reflection of environmental LIBTOOL. See:
7549 http://savannah.nongnu.org/patch/?7290
7550
7551 * builds/unix/unix-cc.in: LIBTOOL is unconditionally set to
7552 $(FT_LIBTOOL_DIR)/libtool. FT_LIBTOOL_DIR is set to $(BUILD_DIR)
7553 by default.
7554 * configure: When configured for the building out of source tee,
7555 FT_LIBTOOL_DIR is set to $(OBJ_DIR).
7556
75572010-08-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7558
suzuki toshiya0eb657b2010-08-31 13:29:05 +09007559 [truetype] Decrease the trace level catching the interpreter error.
7560
7561 * src/truetype/ttinterp.c (TT_RunIns): Decrease the trace level
7562 showing the error when the interpreter returns with an error,
Werner Lemberg575078d2011-04-18 15:33:17 +02007563 from` FT_TRACE7' to `FT_TRACE1'.
suzuki toshiya0eb657b2010-08-31 13:29:05 +09007564
suzuki toshiya29e044a2010-08-31 01:23:30 +090075652010-08-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7566
7567 [truetype] Prevent bytecode reuse after the interpretation error.
7568
7569 * src/truetype/ttinterp.c (free_buffer_in_size): New function to
7570 free the buffer allocated during the interpretation of this glyph.
7571 (TT_RunIns): Unset FT_Face->size->{cvt_ready,bytecode_ready} if
7572 an error occurs in the bytecode interpretation. The interpretation
7573 of invalid bytecode may break the function definitions and referring
7574 them in later interpretation is danger. By unsetting these flags,
7575 `fpgm' and `prep' tables are executed again in next interpretation.
7576
Werner Lemberg5220ef52010-09-13 07:32:22 +02007577 This fixes Savannah bug #30798, reported by Robert Święcki.
suzuki toshiya29e044a2010-08-31 01:23:30 +09007578
Werner Lemberg0e95b3d2010-08-29 10:46:26 +020075792010-08-29 Werner Lemberg <wl@gnu.org>
7580
Werner Lemberg12cf0312010-08-29 11:02:24 +02007581 [ftraster] Pacify compiler.
7582
7583 * src/raster/ftraster.c (ft_black_new) [_STANDALONE_]: `memory' is
7584 not used.
7585
75862010-08-29 Werner Lemberg <wl@gnu.org>
7587
Werner Lemberg0e95b3d2010-08-29 10:46:26 +02007588 [cff] Allow SIDs >= 65000.
7589
7590 * src/cff/cffload.c (cff_charset_load): Fix change from 2009-03-20:
7591 The threshold for SIDs is not applicable here. I misinterpreted the
7592 `SID values 65000 and above are available for implementation use'
7593 sentence in the CFF specification.
7594
7595 Problem reported by Ivan Ninčić <inincic@pdftron.com>.
7596
suzuki toshiya8b05b5d2010-08-28 21:16:26 +090075972010-08-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7598
suzuki toshiya0eb9b1f2010-08-28 21:41:16 +09007599 Force hinting when the font lacks its familyname.
Werner Lemberg0e95b3d2010-08-29 10:46:26 +02007600
7601 In Type42 or Type11 font embedded in PostScript & PDF, TrueType sfnt
7602 stream may lack `name' table because they are not required. Hinting
7603 for nameless fonts is safer for PDFs including embedded Chinese
7604 fonts. Written by David Bevan, see:
suzuki toshiya0eb9b1f2010-08-28 21:41:16 +09007605
7606 http://lists.gnu.org/archive/html/freetype-devel/2010-08/msg00021.html
7607 http://lists.freedesktop.org/archives/poppler/2010-August/006310.html
7608
Werner Lemberg0e95b3d2010-08-29 10:46:26 +02007609 * src/truetype/ttobjs.c (tt_check_trickyness): If a NULL pointer by
7610 nameless font is given, TRUE is returned to enable hinting.
suzuki toshiya0eb9b1f2010-08-28 21:41:16 +09007611
76122010-08-28 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7613
suzuki toshiya8b05b5d2010-08-28 21:16:26 +09007614 Register yet another tricky TrueType font.
7615
7616 * src/truetype/ttobjs.c (tt_check_trickyness): Add `HuaTianKaiTi?',
7617 a Kaishu typeface paired with `HuaTianSongTi?' by Huatian
7618 Information Industry.
7619
Teijo Kinnunenebaeb642010-08-17 07:40:55 +020076202010-08-17 Teijo Kinnunen <Teijo.Kinnunen@nuance.com>
7621
Werner Lemberg273e2b72012-09-18 13:27:27 +02007622 [cache] Fix Savannah bug #30788.
Teijo Kinnunenebaeb642010-08-17 07:40:55 +02007623
7624 * src/cache/ftccache.c (FTC_Cache_Clear): Check `cache->buckets' for
7625 NULL too.
7626
Werner Lemberga205b3c2010-08-10 02:59:12 +020076272010-08-10 Werner Lemberg <wl@gnu.org>
7628
7629 Try to fix Savannah bug #30717 (and probably #30719 too).
7630
7631 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Add another
7632 overflow test for `width' and `height'.
7633
Werner Lemberg6a8691e2010-08-06 22:00:38 +020076342010-08-06 Werner Lemberg <wl@gnu.org>
7635
7636 * Version 2.4.2 released.
7637 =========================
7638
7639
7640 Tag sources with `VER-2-4-2'.
7641
7642 * docs/CHANGES: Updated.
7643
7644 * docs/VERSION.DLL: Update documentation and bump version number to
7645 2.4.2
7646
7647 * README, Jamfile (RefDoc),
7648 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
7649 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
7650 builds/win32/visualc/freetype.dsp,
7651 builds/win32/visualc/freetype.vcproj,
7652 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
7653 builds/win32/visualce/freetype.vcproj,
7654 builds/win32/visualce/index.html,
7655 builds/wince/vc2005-ce/freetype.vcproj,
7656 builds/wince/vc2005-ce/index.html,
7657 builds/wince/vc2008-ce/freetype.vcproj,
7658 builds/wince/vc2008-ce/index.html: s/2.4.1/2.4.2/, s/241/242/.
7659
7660 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
7661
7662 * builds/unix/configure.raw (version_info): Set to 12:0:6.
7663
suzuki toshiya44524152010-08-07 01:46:56 +090076642010-08-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7665
7666 Fix Savannah bug #30648.
7667
7668 * src/base/ftobjs.c (FT_Done_Library): Specify the order of font
Werner Lembergba954402010-08-06 20:07:36 +02007669 drivers during the face closing process. Type42 faces should be
7670 closed before TrueType faces, because a Type42 face refers to
7671 another internal TrueType face which is created from sfnt[] array on
7672 the memory.
suzuki toshiya44524152010-08-07 01:46:56 +09007673
Yuriy Kaminskiyc9de9cb2010-08-06 08:20:28 +020076742010-08-06 Yuriy Kaminskiy <yumkam@mail.ru>
7675
7676 [raster] Fix valgrind warning.
7677
7678 * src/raster/ftraster.c (Decompose_Curve) <default>: Access point[0]
7679 only if we don't hit `limit'.
7680
suzuki toshiya81f34722010-08-06 14:11:54 +090076812010-08-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7682
7683 Fix Savannah bug #30658.
7684
Werner Lembergba954402010-08-06 20:07:36 +02007685 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check that the total
suzuki toshiya81f34722010-08-06 14:11:54 +09007686 length of collected POST segments does not overrun the allocated
7687 buffer.
7688
Werner Lemberg948076c2010-08-06 01:39:26 +020076892010-08-06 Yuriy Kaminskiy <yumkam@mail.ru>
7690
7691 Fix conditional usage of FT_MulFix_i386.
7692 With -ansi flag, gcc does not define `i386', only `__i386__'.
7693
7694 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in:
7695 s/i386/__i386__/.
7696
Werner Lembergc06da1a2010-08-05 23:15:26 +020076972010-08-05 Werner Lemberg <wl@gnu.org>
7698
Werner Lemberg273e2b72012-09-18 13:27:27 +02007699 [truetype] Fix Savannah bug #30657.
Werner Lemberg346f1862010-08-06 00:47:57 +02007700
7701 * src/truetype/ttinterp.c (BOUNDSL): New macro.
7702 Change `BOUNDS' to `BOUNDSL' where appropriate.
7703
7704 * src/truetype/ttinterp.h (TT_ExecContextRec): Fix type of
7705 `cvtSize'.
7706
77072010-08-05 Werner Lemberg <wl@gnu.org>
7708
Werner Lemberg273e2b72012-09-18 13:27:27 +02007709 [type42] Fix Savannah bug #30656.
Werner Lembergc06da1a2010-08-05 23:15:26 +02007710
7711 * src/type42/t42parse.c (t42_parse_sfnts): Protect against negative
7712 string_size.
7713 Fix comparison.
7714
suzuki toshiyad9b3e392010-08-05 17:10:32 +090077152010-08-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7716
7717 [cff] Don't use any values in decoder after parsing error.
7718
7719 * src/cff/cffgload.c (cff_slot_load): Skip the evaluations
Werner Lemberg575078d2011-04-18 15:33:17 +02007720 of the values in decoder, if `cff_decoder_parse_charstrings'
suzuki toshiyad9b3e392010-08-05 17:10:32 +09007721 returns any error.
7722
Werner Lemberg32dc43a2010-08-04 15:21:20 +020077232010-08-04 Werner Lemberg <wl@gnu.org>
7724
Werner Lemberg45a3c762010-08-04 15:54:55 +02007725 Fix Savannah bug #30644.
7726
7727 * src/base/ftstream.c (FT_Stream_EnterFrame): Fix comparison.
7728
77292010-08-04 Werner Lemberg <wl@gnu.org>
7730
Werner Lemberg32dc43a2010-08-04 15:21:20 +02007731 `make devel' fails if FT_CONFIG_OPTION_OLD_INTERNALS is set.
7732
7733 * devel/ftoption.h: Synchronize with
7734 include/freetype/config/ftoption.h.
7735
suzuki toshiyad9b3e392010-08-05 17:10:32 +090077362010-08-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
Suzuki, Toshiya (鈴木俊哉)11d65e82010-08-04 14:43:29 +02007737
7738 [cff] Improve stack overflow test.
7739
7740 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Check stack
7741 after execution of operations too.
7742
Werner Lembergb69c6ac2010-07-18 06:20:09 +020077432010-07-18 Werner Lemberg <wl@gnu.org>
7744
Werner Lembergfe3433c2010-07-18 18:41:47 +02007745 Add reference counters and to FT_Library and FT_Face objects.
7746
7747 * include/freetype/freetype.h (FT_Reference_Face): New function.
7748 * include/freetype/ftmodapi.h (FT_Rererence_Library): New function.
7749
7750 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec,
7751 FT_LibraryRec): New field `refcount'.
7752
7753 * src/base/ftobjs.c (FT_Open_Face, FT_New_Library): Handle
7754 `refcount'.
7755 (FT_Reference_Face, FT_Reference_Library): Implement new functions.
7756 (FT_Done_Face, FT_Done_Library): Handle `refcount'.
7757
7758 * docs/CHANGES: Updated.
7759
77602010-07-18 Werner Lemberg <wl@gnu.org>
7761
Werner Lembergb69c6ac2010-07-18 06:20:09 +02007762 * Version 2.4.1 released.
7763 =========================
7764
7765
7766 Tag sources with `VER-2-4-1'.
7767
7768 * docs/CHANGES: Updated.
7769
7770 * docs/VERSION.DLL: Update documentation and bump version number to
7771 2.4.1.
7772
7773 * README, Jamfile (RefDoc),
7774 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
7775 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
7776 builds/win32/visualc/freetype.dsp,
7777 builds/win32/visualc/freetype.vcproj,
7778 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
7779 builds/win32/visualce/freetype.vcproj,
7780 builds/win32/visualce/index.html,
7781 builds/wince/vc2005-ce/freetype.vcproj,
7782 builds/wince/vc2005-ce/index.html,
7783 builds/wince/vc2008-ce/freetype.vcproj,
7784 builds/wince/vc2008-ce/index.html: s/2.4.0/2.4.1/, s/240/241/.
7785
7786 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
7787
7788 * builds/unix/configure.raw (version_info): Set to 11:1:5.
7789
Werner Lemberg2de6b8a2010-07-17 13:39:50 +020077902010-07-17 Werner Lemberg <wl@gnu.org>
7791
7792 [cff] Final try to fix `hintmask' and `cntrmask' limit check.
7793
7794 Problem reported by Tobias Wolf <towolf@gmail.com>.
7795
7796 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
7797 <cff_op_hintmask>: Sigh. I'm apparently too silly to fix this
7798 correctly in less than three tries.
7799
Werner Lembergc8f5b982010-07-12 21:13:22 +020078002010-07-12 Werner Lemberg <wl@gnu.org>
7801
Werner Lemberg15ffc352010-07-12 22:07:16 +02007802 * Version 2.4.0 released.
7803 =========================
7804
7805
7806 Tag sources with `VER-2-4-0'.
7807
7808 * docs/CHANGES: Updated.
7809
7810 * docs/VERSION.DLL: Update documentation and bump version number to
7811 2.4.0.
7812
7813 * README, Jamfile (RefDoc),
7814 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
7815 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
7816 builds/win32/visualc/freetype.dsp,
7817 builds/win32/visualc/freetype.vcproj,
7818 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
7819 builds/win32/visualce/freetype.vcproj,
7820 builds/win32/visualce/index.html,
7821 builds/wince/vc2005-ce/freetype.vcproj,
7822 builds/wince/vc2005-ce/index.html,
7823 builds/wince/vc2008-ce/freetype.vcproj,
7824 builds/wince/vc2008-ce/index.html: s/2.3.12/2.4.0/, s/2312/240/.
7825
7826 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 4.
7827 (FREETYPE_PATCH): Set to 0.
7828
7829 * builds/unix/configure.raw (version_info): Set to 11:0:5.
7830
78312010-07-12 Werner Lemberg <wl@gnu.org>
7832
Werner Lembergc8f5b982010-07-12 21:13:22 +02007833 Remove C++ warnings.
7834
7835 */*: Initialize pointers where necessary to make g++ happy.
7836
malcf4e6c152010-07-12 20:57:54 +020078372010-07-12 malc <av1474@comtv.ru>
Werner Lemberg072afbd2010-07-13 06:26:46 +02007838 Richard Henderson <rth@redhat.com>
malcf4e6c152010-07-12 20:57:54 +02007839
7840 Fix type-punning issues with C++.
7841
7842 * include/freetype/internal/ftmemory.h (FT_ASSIGNP) [__cplusplus]:
7843 Emulate a `typeof' operator with an inline template which uses
7844 `static_cast'.
7845
Werner Lembergebfd4542010-07-11 09:28:21 +020078462010-07-11 Werner Lemberg <wl@gnu.org>
7847
7848 Fix C++ compilation issue.
7849
7850 * src/tools/apinames.c (names_dump) <OUTPUT_WATCOM_LBC>: Fix
malcf4e6c152010-07-12 20:57:54 +02007851 type of `dot' variable.
Werner Lembergebfd4542010-07-11 09:28:21 +02007852
suzuki toshiyad5942022010-07-11 00:31:17 +090078532010-07-10 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7854
7855 Fix another case reported in Savannah bug #30373.
7856 Permit a face for Type1, Type42 and CFF without charmap,
7857 patch by Tor Andersson.
7858
7859 * src/type1/t1objs.c (T1_Face_Init): Reset the error if it
7860 is FT_Err_No_Unicode_Glyph_Name.
7861 * src/type42/t42objs.c (T42_Face_Init): Ditto.
7862 * src/cff/cffobjs.c (cff_face_init): Ditto.
7863
suzuki toshiyab8ca6de2010-07-09 11:36:00 +090078642010-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7865
suzuki toshiya840f2082010-07-09 12:26:33 +09007866 Use defined macros to set {platform,encoding}_id.
7867
7868 * src/bdf/bdfdrivr.c: Include ttnameid.h and use macros to
7869 set charmap.{platfom,encoding}_id.
7870 * src/pcf/pcfdrivr.c: Ditto.
7871 * src/winfonts/winfnt.c: Ditto.
7872 * src/type1/t1objs.c: Ditto.
7873 * src/type42/t42objs.c: Ditto.
7874 * src/cff/cffobjs.c: Ditto.
7875 * src/pfr/pfrobjs.c: Ditto.
7876
78772010-07-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7878
suzuki toshiyab8ca6de2010-07-09 11:36:00 +09007879 Fix Savannah bug #30373.
7880 Too serious check of errors by `FT_CMap_New' since 2010-07-04
7881 is fixed. Reported by Tor Andersson.
7882
7883 * include/freetype/fterrdef.h
7884 (PSnames_Err_No_Unicode_Glyph_Name): New error code to
7885 indicate the Unicode charmap synthesis failed because
7886 no Unicode glyph name is found.
7887
7888 * src/psnames/psmodule.c (ps_unicodes_init): Return
7889 PSnames_Err_No_Unicode_Glyph_Name when no Unicode glyph name
7890 is found in the font.
7891 * src/cff/cffcmap.c (cff_cmap_unicode_init): Return
7892 CFF_Err_No_Unicode_Glyph_Name when no SID is available.
7893
7894 * src/type1/t1objs.c (T1_Face_Init): Proceed if `FT_CMap_New'
7895 is failed by the lack of Unicode glyph name.
7896 * src/type42/t42objs.c (T42_Face_Init): Ditto.
7897 * src/cff/cffobjs.c (cff_face_init): Ditto.
7898
Ken Sharp603d1212010-07-09 09:55:29 +020078992010-07-09 Ken Sharp <ken.sharp@artifex.com>
7900
7901 Make ftraster.c compile in stand-alone mode with MSVC compiler.
7902
7903 * src/raster/ftmisc.h (FT_Int64) [_WIN32, _WIN64]: Fix typedef
7904 since there is no `inttypes.h' for MSVC.
7905
Werner Lemberg888cd182010-07-08 07:29:42 +020079062010-07-08 Werner Lemberg <wl@gnu.org>
7907
Werner Lemberg273e2b72012-09-18 13:27:27 +02007908 [truetype] Fix Savannah bug #30361.
Werner Lemberg888cd182010-07-08 07:29:42 +02007909
7910 * src/truetype/ttinterp.c (Ins_IUP): Fix bounds check.
7911
Werner Lembergc73e1602010-07-06 10:44:56 +020079122010-07-06 Werner Lemberg <wl@gnu.org>
7913
7914 Pacify compiler.
7915
7916 * src/cff/cffload.c (cff_index_get_pointers): Initialize
7917 `new_bytes'.
7918
Eugene A. Shatokhinb33b8562010-07-05 22:36:30 +020079192010-07-05 Eugene A. Shatokhin <spectre@ispras.ru>
7920
7921 Fix Savannah bug #27648.
7922
7923 * src/base/ftobjs.c (ft_remove_renderer, FT_Add_Module): Call
7924 `raster_done' only if we have an outline glyph format.
7925
Werner Lemberg2dc76a42010-07-05 06:40:02 +020079262010-07-05 Werner Lemberg <wl@gnu.org>
7927
Werner Lemberge8770c62010-07-05 07:45:02 +02007928 Fix Savannah bug #30030.
7929
7930 * builds/win32/*/freetype.vcproj: Add ftxf86.c.
7931
79322010-07-05 Werner Lemberg <wl@gnu.org>
7933
Werner Lemberg2dc76a42010-07-05 06:40:02 +02007934 [cff] Next try to fix `hintmask' and `cntrmask' limit check.
7935
7936 Problem reported by malc <av1474@comtv.ru>.
7937
7938 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
7939 <cff_op_hintmask>: It is possible that there is just a single byte
7940 after the `hintmask' or `cntrmask', e.g., a `return' instruction.
7941
suzuki toshiya0ae32712010-07-04 20:14:18 +090079422010-07-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7943
7944 Restrict the number of the charmaps in a rogue-compatible mode.
7945 Fix for Savannah bug #30059.
7946
7947 * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Replace `16' the
7948 minimum character code passed by a legacy rogue client by...
7949 * include/freetype/config/ftoption.h (FT_MAX_CHARMAP_CACHEABLE):
7950 This. It is undefined when FT_CONFIG_OPTION_OLD_INTERNALS is
7951 undefined (thus the rogue client compatibility is not required).
7952
7953 * src/cff/cffobjs.c (cff_face_init): Abort the automatic
7954 selection or synthesis of Unicode cmap subtable when the charmap
7955 index exceeds FT_MAX_CHARMAP_CACHEABLE.
7956 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Issue error message
7957 when the charmap index exceeds FT_MAX_CHARMAP_CACHEABLE.
7958
7959 * src/base/ftobjs.c (find_unicode_charmap): When Unicode charmap
7960 is found after FT_MAX_CHARMAP_CACHEABLE, ignore it and search
7961 earlier one.
7962 (find_variant_selector_charmap): When UVS charmap is found after
7963 FT_MAX_CHARMAP_CACHEABLE, ignore it and search earlier one.
7964 (FT_Select_Charmap): When a charmap matching with requested
7965 encoding but after FT_MAX_CHARMAP_CACHEABLE, ignore and search
7966 earlier one.
7967 (FT_Set_Charmap): When a charmap matching with requested
7968 charmap but after FT_MAX_CHARMAP_CACHEABLE, ignore and search
7969 earlier one.
7970 (FT_Get_Charmap_Index): When a requested charmap is found
7971 after FT_MAX_CHARMAP_CACHEABLE, return the inverted charmap
7972 index.
7973
Werner Lemberg6bbbbc12010-07-04 07:37:56 +020079742010-07-04 Werner Lemberg <wl@gnu.org>
7975
7976 TrueType hinting is no longer patented.
7977
7978 * include/freetype/config/ftoption.h, devel/ftoption.h
7979 (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Define.
7980 (TT_CONFIG_OPTION_UNPATENTED_HINTING): Undefine.
7981
7982 * docs/CHANGES, docs/INSTALL, include/freetype/freetype.h: Updated.
7983 * docs/TRUETYPE, docs/PATENTS: Removed.
7984
suzuki toshiyaa874c7e2010-07-04 12:08:41 +090079852010-07-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
7986
7987 Check error value by `FT_CMap_New'.
7988
7989 * src/cff/cffobjs.c (cff_face_init): Check error value by
7990 `FT_CMap_New'.
7991 * src/pfr/pfrobjs.c (pfr_face_init): Ditto.
7992 * src/type1/t1jobjs.c (T1_Face_Init): Ditto.
7993 * src/type42/t42jobjs.c (T42_Face_Init): Ditto.
7994
Werner Lemberge0176392010-07-03 15:31:38 +020079952010-07-03 Werner Lemberg <wl@gnu.org>
7996
7997 Make ftgrays.c compile stand-alone again.
7998
7999 * src/smooth/ftgrays.c [_STANDALONE_]: Include `stddef.h'.
8000 (FT_INT_MAX, FT_PtrDist)[_STANDALONE_]: Define.
8001
suzuki toshiyab2ea64b2010-07-02 18:16:02 +090080022010-07-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
8003
8004 Additional fix for Savannah bug #30306.
8005
Werner Lembergce27fd52010-07-04 07:09:10 +02008006 * src/base/ftobjs.c (Mac_Read_POST_Resource): If the type of the
8007 POST fragment is 0, the segment is completely ignored. The declared
8008 length of the segment is not cared at all. According to Adobe
8009 Technical Note 5040, type 0 segment is a comment only and should not
8010 be loaded for the interpreter. Reported by Robert Święcki.
suzuki toshiyab2ea64b2010-07-02 18:16:02 +09008011
Werner Lemberg462ddb42010-07-01 11:28:43 +020080122010-07-01 Werner Lemberg <wl@gnu.org>
8013
Werner Lemberga2d225e2010-07-01 11:37:09 +02008014 [truetype] Protect against code range underflow.
8015
8016 * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Don't allow
8017 negative IP values.
8018
80192010-07-01 Werner Lemberg <wl@gnu.org>
8020
Werner Lemberg462ddb42010-07-01 11:28:43 +02008021 [truetype] Add rudimentary tracing for bytecode instructions.
8022
8023 * src/truetype/ttinterp.c (opcode_name) [FT_DEBUG_LEVEL_TRACE]: New
8024 array.
8025 (TT_RunIns): Trace opcodes.
8026
Werner Lemberg6305b862010-06-30 18:24:33 +020080272010-06-30 Werner Lemberg <wl@gnu.org>
8028
Werner Lemberg273e2b72012-09-18 13:27:27 +02008029 [smooth] Fix Savannah bug #30263.
Werner Lemberg6305b862010-06-30 18:24:33 +02008030
8031 * src/smooth/ftgrays.c (gray_render_span): Use cast to `unsigned
8032 int' to avoid integer overflow.
8033
8034 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use smaller
8035 threshold values for `width' and `height'. This is not directly
8036 related to the bug fix but makes sense anyway.
8037
suzuki toshiyaf29f7412010-07-01 17:31:03 +090080382010-07-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
8039
suzuki toshiya5ef20c82010-07-01 18:39:04 +09008040 Initial fix for Savannah bug #30306.
8041
Werner Lembergce27fd52010-07-04 07:09:10 +02008042 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check `rlen', the
8043 length of fragment declared in the POST fragment header, and prevent
8044 an underflow in length calculation. Some fonts set the length to
Werner Lemberg297ff852010-10-03 20:22:23 +02008045 zero in spite of the existence of a following 16bit `type'.
Werner Lembergce27fd52010-07-04 07:09:10 +02008046 Reported by Robert Święcki.
suzuki toshiya5ef20c82010-07-01 18:39:04 +09008047
80482010-07-01 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
8049
suzuki toshiyaf29f7412010-07-01 17:31:03 +09008050 Additional fix for Savannah bug #30248 and #30249.
8051
Werner Lembergce27fd52010-07-04 07:09:10 +02008052 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the buffer size
8053 during gathering PFB fragments embedded in LaserWriter PS font for
8054 Macintosh. Reported by Robert Święcki.
suzuki toshiyaf29f7412010-07-01 17:31:03 +09008055
Werner Lemberg0ae6cf22010-06-30 10:26:48 +020080562010-06-30 Alexei Podtelezhnikov <apodtele@gmail.com>
8057
8058 Minor optimizations by avoiding divisions.
8059
8060 * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning):
8061 Replace divisions with multiplication in comparisons.
8062
Werner Lembergae425e52010-06-29 12:31:08 +020080632010-06-29 Werner Lemberg <wl@gnu.org>
8064
8065 Fix minor tracing issues.
8066
8067 * src/cff/cffgload.c, src/truetype/ttgload.c: Adjust tracing levels.
8068
Werner Lemberge9f0cdb2010-06-27 12:34:19 +020080692010-06-27 Werner Lemberg <wl@gnu.org>
8070
Werner Lemberg18b552f2010-06-27 15:41:02 +02008071 [cff] Really fix `hintmask' and `cntrmask' limit check.
8072
8073 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
8074 <cff_op_hintmask>: Fix thinko and handle tracing also.
8075
80762010-06-27 Werner Lemberg <wl@gnu.org>
8077
Werner Lemberg8bebaa72010-06-27 15:10:15 +02008078 Fix valgrind warning.
8079
8080 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Initialize
8081 `result' array.
8082
80832010-06-27 Werner Lemberg <wl@gnu.org>
8084
Werner Lemberg4f7851e2010-06-27 13:03:54 +02008085 [cff] Fix memory leak.
8086
8087 * src/cff/cffgload.c (cff_operator_seac): Free charstrings even in
8088 case of errors.
8089
80902010-06-27 Werner Lemberg <wl@gnu.org>
8091
Werner Lemberge9f0cdb2010-06-27 12:34:19 +02008092 [cff] Protect against invalid `hintmask' and `cntrmask' operators.
8093
8094 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
8095 <cff_op_hintmask>: Ensure that we don't exceed `limit' while parsing
8096 the bit masks of the `hintmask' and `cntrmask' operators.
8097
Werner Lemberg7d911732010-06-26 09:29:51 +020080982010-06-26 Werner Lemberg <wl@gnu.org>
8099
Werner Lemberg1c70fcb2010-06-27 00:43:23 +02008100 Fix PFR change 2010-06-24.
8101
8102 * src/pfr/pfrgload.c (pfr_glyph_load_simple): Really protect against
8103 invalid indices.
8104
81052010-06-26 Werner Lemberg <wl@gnu.org>
8106
Werner Lemberg91ea0bf2010-06-26 22:46:38 +02008107 Improve PFR tracing messages.
8108
8109 * src/pfr/pfrgload.c (pfr_glyph_load_rec): Emit tracing messages for
8110 simple and compound glyph offsets.
8111
81122010-06-26 Werner Lemberg <wl@gnu.org>
8113
Werner Lemberg82ad8ab22010-06-26 09:45:41 +02008114 Fix last PFR change.
8115
8116 * src/pfr/pfrobjs.c (pfr_face_init): Fix rejection logic.
8117
81182010-06-26 Werner Lemberg <wl@gnu.org>
8119
Werner Lemberg273e2b72012-09-18 13:27:27 +02008120 [sfnt] Fix Savannah bug #30262.
Werner Lemberg7d911732010-06-26 09:29:51 +02008121
8122 * src/sfnt/ttload.c (tt_face_load_maxp): Limit `maxComponentDepth'
8123 arbitrarily to 100 to avoid stack exhaustion.
8124
81252010-06-26 Werner Lemberg <wl@gnu.org>
Werner Lemberge23ba912010-06-25 21:55:14 +02008126
Werner Lemberg75787c12010-06-26 09:24:08 +02008127 Add some memory checks (mainly for debugging).
8128
8129 * src/base/ftstream.c (FT_Stream_EnterFrame): Exit with error
8130 if the frame size is larger than the stream size.
8131
8132 * src/base/ftsystem.c (ft_ansi_stream_io): Exit with error if
8133 seeking a position larger than the stream size.
8134
81352010-06-25 Werner Lemberg <wl@gnu.org>
8136
Werner Lemberg273e2b72012-09-18 13:27:27 +02008137 [pfr] Fix Savannah bug #30261.
Werner Lembergea5baba2010-06-25 22:44:37 +02008138
8139 * src/pfr/pfrobjs.c (pfr_face_init): Reject fonts which contain
8140 neither outline nor bitmap glyphs.
8141
81422010-06-25 Werner Lemberg <wl@gnu.org>
8143
Werner Lemberg273e2b72012-09-18 13:27:27 +02008144 [cff] Fix Savannah bug #30254.
Werner Lemberge23ba912010-06-25 21:55:14 +02008145
8146 * src/cff/cffload.c (cff_index_get_pointers): Do sanity check for
8147 first offset also.
8148
suzuki toshiyac69891a2010-06-25 09:02:18 +090081492010-06-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
8150
8151 Initial fix for Savannah bug #30248 and #30249.
8152
8153 * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the error during
8154 reading a PFB fragment embedded in LaserWriter PS font for Macintosh.
Werner Lembergce27fd52010-07-04 07:09:10 +02008155 Reported by Robert Święcki.
suzuki toshiyac69891a2010-06-25 09:02:18 +09008156
Werner Lemberg6fc12942010-06-24 20:20:26 +020081572010-06-24 Werner Lemberg <wl@gnu.org>
8158
Werner Lemberg273e2b72012-09-18 13:27:27 +02008159 [pcf] Fix Savannah bug #30247.
Werner Lemberg6fc12942010-06-24 20:20:26 +02008160
8161 * src/pcf/pcfread.c (pcf_get_metrics): Disallow (invalid) fonts with
8162 zero metrics.
8163
Graham Ashere419f482010-06-24 12:50:46 +020081642010-06-24 Graham Asher <graham.asher@btinternet.com>
8165
8166 * src/smooth/ftgrays.c (gray_render_cubic): Fix algorithm.
8167 The previous version was too aggressive, as demonstrated in
8168 http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00020.html.
8169
Werner Lembergb21d7bc2010-06-24 07:40:49 +020081702010-06-24 Werner Lemberg <wl@gnu.org>
8171
Werner Lembergf765e442010-06-24 10:34:29 +02008172 */*: Use module specific error names where appropriate.
8173
81742010-06-24 Werner Lemberg <wl@gnu.org>
8175
Werner Lemberg273e2b72012-09-18 13:27:27 +02008176 [sfnt] Fix Savannah bug #30236.
Werner Lemberg8b1c34d2010-06-24 08:48:10 +02008177
8178 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Improve check for pointer
8179 to `cmap_table'.
8180
81812010-06-24 Werner Lemberg <wl@gnu.org>
8182
Werner Lemberg273e2b72012-09-18 13:27:27 +02008183 [pfr] Fix Savannah bug #30235.
Werner Lemberg3cf87f42010-06-24 08:20:56 +02008184
8185 * src/pfr/pfrgload.c (pfr_glyph_load_simple): Protect against
8186 invalid indices if there aren't any coordinates for indexing.
8187
81882010-06-24 Werner Lemberg <wl@gnu.org>
8189
Werner Lembergb21d7bc2010-06-24 07:40:49 +02008190 [bdf]: Font properties are optional.
8191
8192 * src/bdf/bdflib.c (_bdf_readstream): Use special error code to
8193 indicate a redo operation.
8194 (_bdf_parse_start): Handle `CHARS' keyword here too and pass current
8195 input line to `_bdf_parse_glyph'.
8196
Werner Lembergfb690292010-06-23 10:00:52 +020081972010-06-23 Werner Lemberg <wl@gnu.org>
8198
Werner Lemberg273e2b72012-09-18 13:27:27 +02008199 [bdf] Fix Savannah bug #30220.
Werner Lembergfb690292010-06-23 10:00:52 +02008200
8201 * include/freetype/fterrdef.h
8202 (BDF_Err_Missing_Fontboundingbox_Field): New error code.
8203
8204 * src/bdf/bdflib.c (_bdf_parse_start): Check for missing
8205 `FONTBOUNDINGBOX' field.
8206 Avoid memory leak if there are multiple `FONT' lines (which is
8207 invalid but doesn't hurt).
8208
Werner Lembergddc4b132010-06-21 09:28:32 +020082092010-06-21 Werner Lemberg <wl@gnu.org>
8210
Werner Lemberg273e2b72012-09-18 13:27:27 +02008211 [pfr] Fix Savannah bug #30168.
Werner Lembergddc4b132010-06-21 09:28:32 +02008212
8213 * src/pfr/pfrgload.c (pfr_glyph_load_compound): Limit the number of
8214 subglyphs to avoid endless recursion.
8215
Werner Lemberg90b07bd2010-06-20 16:27:36 +020082162010-06-20 Werner Lemberg <wl@gnu.org>
8217
Werner Lemberg273e2b72012-09-18 13:27:27 +02008218 [psaux] Fix Savannah bug #30145.
Werner Lemberg90b07bd2010-06-20 16:27:36 +02008219
8220 * src/psaux/psobjs.c (t1_builder_add_contour): Protect against
8221 `outline == NULL' which might happen in invalid fonts.
8222
Werner Lembergf4c94d42010-06-19 16:08:31 +020082232010-06-19 Werner Lemberg <wl@gnu.org>
8224
Werner Lemberg273e2b72012-09-18 13:27:27 +02008225 [bdf] Fix Savannah bug #30135.
Werner Lembergf4c94d42010-06-19 16:08:31 +02008226
8227 * src/bdf/bdflib.c (_bdf_list_join): Don't modify value in static
8228 string `empty'.
8229 (_bdf_parse_glyph): Avoid memory leak in case of error.
8230
Werner Lemberg5d86cdc2010-06-15 08:29:30 +020082312010-06-15 Werner Lemberg <wl@gnu.org>
8232
Werner Lemberg273e2b72012-09-18 13:27:27 +02008233 [autofit] Fix Savannah bug #30108.
Werner Lemberg5d86cdc2010-06-15 08:29:30 +02008234
8235 * src/autofit/afglobal.c (af_face_globals_compute_script_coverage):
8236 Properly mask AF_DIGIT bit in comparison.
8237
Werner Lemberg36241102010-06-11 23:00:22 +020082382010-06-11 Werner Lemberg <wl@gnu.org>
8239
Werner Lemberg273e2b72012-09-18 13:27:27 +02008240 [pshinter] Fix Savannah bug #30106.
Werner Lemberg8d227462010-06-12 01:32:20 +02008241
8242 Point numbers for FreeType's implementation of hinting masks are
8243 collected before the final number of points of a glyph has been
8244 determined; in particular, the code for handling the `endchar'
8245 opcode can reduce the number of points.
8246
8247 * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Assure that
8248 `end_point' is not larger than `glyph->num_points'.
8249
82502010-06-11 Werner Lemberg <wl@gnu.org>
8251
Werner Lemberg36241102010-06-11 23:00:22 +02008252 [cff]: Improve debugging output.
8253
8254 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
8255 <cff_op_hintmask>: Implement it.
8256
Graham Asher7fb3ef62010-06-10 08:10:57 +020082572010-06-10 Graham Asher <graham.asher@btinternet.com>
8258
8259 ftgrays: Speed up rendering of small cubic splines.
8260
8261 * src/smooth/ftgrays.c (gray_render_cubic): Implement new,
8262 simplified algorithm to find out whether the spline can be replaced
8263 with two straight lines. See this thread for more:
8264
8265 http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00000.html
8266
Werner Lemberg7d3d2cc2010-06-09 09:14:09 +020082672010-06-09 Werner Lemberg <wl@gnu.org>
8268
Werner Lemberg273e2b72012-09-18 13:27:27 +02008269 [cff] Fix Savannah bug #30082.
Werner Lemberg7d3d2cc2010-06-09 09:14:09 +02008270
8271 * src/cff/cffgload.c (cff_decoder_parse_charstrings)
8272 <cff_op_callothersubr>: Protect against stack underflow.
8273
Werner Lemberga4124bf2010-06-08 09:21:39 +020082742010-06-08 Werner Lemberg <wl@gnu.org>
8275
Werner Lemberg273e2b72012-09-18 13:27:27 +02008276 [cff] Fix Savannah bug #30053.
Werner Lemberga4124bf2010-06-08 09:21:39 +02008277
Werner Lemberg7d3d2cc2010-06-09 09:14:09 +02008278 * src/cff/cffparse.c (cff_parse_real): Handle border case where
Werner Lemberga4124bf2010-06-08 09:21:39 +02008279 `fraction_length' has value 10.
8280
Werner Lembergd0871992010-06-07 08:46:01 +020082812010-06-07 Werner Lemberg <wl@gnu.org>
8282
8283 Fix Savannah bug #30052.
8284 This bug has been introduced with commit 2415cbf3.
8285
8286 * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Protect
8287 against endless loop in case of corrupted font header data.
8288
Werner Lembergc217bf12010-05-26 16:16:34 +020082892010-05-26 Werner Lemberg <wl@gnu.org>
8290
8291 Remove unused variable.
8292 Found by Graham.
8293
8294 * src/autofit/afhints.c (af_glyph_hints_reload): Remove unused
8295 variable `first' in first block.
8296
Werner Lemberg09344382010-05-22 07:43:22 +020082972010-05-22 Werner Lemberg <wl@gnu.org>
8298
Werner Lemberge30de292010-05-22 20:03:41 +02008299 Fix various memory problems found by linuxtesting.org.
8300
8301 * src/base/ftgxval.c (FT_TrueTypeGX_Free, FT_ClassicKern_Free),
8302 src/base/ftotval.c (FT_OpenType_Free), src/base/ftpfr.c
8303 (ft_pfr_check): Check `face'.
8304
8305 * src/base/ftobjs.c (FT_Get_Charmap_Index): Check `charmap' and
8306 `charmap->face'.
8307 (FT_Render_Glyph): Check `slot->face'.
8308 (FT_Get_SubGlyph_Info): Check `glyph->subglyphs'.
8309
83102010-05-22 Werner Lemberg <wl@gnu.org>
8311
Werner Lemberg09344382010-05-22 07:43:22 +02008312 autofit: Remove dead code.
8313 Suggested by Graham.
8314
8315 * src/autofit/afhints.c (af_glyph_hints_compute_inflections):
8316 Removed.
8317 (af_glyph_hints_reload): Remove third argument.
8318 Update all callers.
8319
Bram Tassynsd7cc8f42010-05-21 10:14:58 +020083202010-05-21 Bram Tassyns <bramt@enfocus.be>
8321
Werner Lemberg273e2b72012-09-18 13:27:27 +02008322 [cff] Fix Savannah bug #27987.
Bram Tassynsd7cc8f42010-05-21 10:14:58 +02008323
8324 * src/cff/cffobjs.c (remove_subset_prefix): New function.
8325 (cff_face_init): Use it to adjust `cffface->family_name'.
8326
Werner Lemberg6da023d2010-05-20 15:38:00 +020083272010-05-20 Werner Lemberg <wl@gnu.org>
8328
8329 TrueType: Make FreeType ignore maxSizeOfInstructions in `maxp'.
8330
8331 Acroread does the same.
8332
8333 * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Call
8334 `Update_Max' to adjust size of instructions array if necessary and
8335 add a rough safety check.
8336
8337 (load_truetype_glyph): Save `loader->byte_len' before recursive
8338 call.
8339
8340 * src/truetype/ttinterp.h, src/truetype/ttinterp.c (Update_Max):
8341 Declare it as FT_LOCAL.
8342
Hongbo Ni236fc8e2010-05-18 11:00:39 +020083432010-05-18 Hongbo Ni <hongbo@njstar.com>
8344
Bram Tassynsd7cc8f42010-05-21 10:14:58 +02008345 Apply Savannah patch #7196.
Hongbo Ni236fc8e2010-05-18 11:00:39 +02008346
8347 * src/cff/cffgload.c (cff_slot_load): Prevent crash if CFF subfont
8348 index is out of range.
8349
Werner Lemberg4c669242010-05-11 07:24:28 +020083502010-05-11 Werner Lemberg <wl@gnu.org>
8351
8352 * docs/formats.txt: Give pointer to PCF documentation.
8353 Information provided by Alan Coopersmith
8354 <alan.coopersmith@oracle.com>.
8355
Ken Sharp88169b12010-05-11 00:03:33 +020083562010-05-10 Ken Sharp <ken.sharp@artifex.com>
Ken Sharp54e63752010-04-14 23:38:35 +02008357
Werner Lemberg273e2b72012-09-18 13:27:27 +02008358 [psaux] Fix Savannah bug #29846.
Ken Sharp88169b12010-05-11 00:03:33 +02008359
8360 Previously we discovered fonts which used `setcurrentpoint' to set
8361 the initial point of a contour to 0,0. This caused FreeType to
8362 raise an error, because the `setcurrentpoint' operator is only
8363 supposed to be used with the results from an OtherSubr subroutine.
8364
8365 This was fixed by simply ignoring the error and carrying on.
8366
8367 Now we have found a font which uses setcurrentpoint to actually
8368 establish a non-zero point for a contour during the course of a
8369 glyph program. FWIW, these files may be produced by an application
8370 called `Intaglio' on the Mac, when converting TrueType fonts to
8371 Type 1.
8372
8373 The fix allows the new invalid behaviour, the old invalid behaviour
8374 and real proper usage of the operator to work the same way as Adobe
8375 interpreters apparently do.
8376
Werner Lemberg273e2b72012-09-18 13:27:27 +02008377 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make
8378 `setcurrentpoint' use the top two elements of the stack to establish
8379 unconditionally the current x and y coordinates.
Ken Sharp88169b12010-05-11 00:03:33 +02008380
8381 Make the `flex' subroutine handling (OtherSubr 0) put the current
8382 x,y coordinates onto the stack, instead of two dummy uninitialised
8383 values.
8384
83852010-04-14 Ken Sharp <ken.sharp@artifex.com>
Werner Lembergce27fd52010-07-04 07:09:10 +02008386
Werner Lemberg273e2b72012-09-18 13:27:27 +02008387 [psaux] Fix Savannah bug #29444.
Ken Sharp54e63752010-04-14 23:38:35 +02008388
8389 * src/psaux/psobjs.c (t1_builder_start_point): Accept (invalid)
8390 `lineto' immediately after `hsbw', in accordance with Acrobat, GS,
8391 and others.
8392
Michał Cichoń08e254e2010-04-14 21:25:30 +020083932010-04-14 Michał Cichoń <thedmd@artifexmundi.com>
8394
Werner Lemberg273e2b72012-09-18 13:27:27 +02008395 [psaux] Fix Savannah bug #27999.
Michał Cichoń08e254e2010-04-14 21:25:30 +02008396
8397 * src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID): Only remove
8398 selected entry, not all.
8399
Jonathan Kew25e742c2010-04-06 16:42:56 +020084002010-04-06 Jonathan Kew <jfkthame@gmail.com>
8401
Werner Lemberg273e2b72012-09-18 13:27:27 +02008402 [truetype] Add overflow check to `fvar' table.
Jonathan Kew25e742c2010-04-06 16:42:56 +02008403
8404 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis and instance
8405 count.
8406
Ken Sharp7baeeaf2010-04-05 11:19:38 +020084072010-04-05 Ken Sharp <ken.sharp@artifex.com>
8408
Werner Lemberg273e2b72012-09-18 13:27:27 +02008409 [raster] Fix Savannah bug #29335.
Ken Sharp7baeeaf2010-04-05 11:19:38 +02008410
8411 * src/raster/ftraster.c (Line_Up): Use slow multiplication to
8412 prevent overflow. This shouldn't have any serious impact on speed,
8413 however.
8414
Werner Lemberg460d23f2010-04-05 08:46:26 +020084152010-04-05 Werner Lemberg <wl@gnu.org>
8416
8417 Add new function `FT_Library_SetLcdFilterWeights'.
8418
8419 This is based on code written by Lifter
8420 <http://unixforum.org/index.php?showuser=11691>. It fixes
8421 FreeDesktop bug #27386.
8422
8423 * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): New
8424 function.
8425
8426 * include/freetype/ftlcdfil.h: Updated.
8427
8428 * docs/CHANGES: Updated.
8429
John Tytgat8c4cce52010-04-05 08:22:22 +020084302010-04-01 John Tytgat <John.Tytgat@esko.com>
8431
Werner Lemberg273e2b72012-09-18 13:27:27 +02008432 [truetype] Fix Savannah bug #29404.
John Tytgat8c4cce52010-04-05 08:22:22 +02008433
8434 * src/truetype/ttgload.c: Revert change 2752bd1a (check on bit 1
8435 of `head' table of TrueType fonts).
8436
suzuki toshiyacef43bd2010-03-14 23:12:13 +090084372010-03-14 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
8438
8439 Fix `multi build' for Tytgat's CFF driver improvement.
8440
8441 * src/base/cffload.h (cff_index_get_name): Added.
8442
suzuki toshiya199f04f2010-03-12 14:48:57 +090084432010-03-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
8444
8445 Remove duplicated inclusion of `FT_OUTLINE_H' in ftobjs.c.
8446
8447 * src/base/ftobjs.c: Remove 2nd inclusion of `FT_OUTLINE_H'.
8448
Chris Liddell6c0d8812010-03-11 18:27:31 +010084492010-03-11 Chris Liddell <chris.liddell@artifex.com>
8450
Werner Lemberg273e2b72012-09-18 13:27:27 +02008451 [raster] Fix Savannah bug #27442.
Chris Liddell6c0d8812010-03-11 18:27:31 +01008452
8453 * src/raster/ftraster.c (ft_black_reset): Fix `buffer_size'.
8454
Werner Lemberg763300a2010-03-09 17:01:21 +010084552010-03-09 Werner Lemberg <wl@gnu.org>
8456
Werner Lemberg273e2b72012-09-18 13:27:27 +02008457 [cff] Remove unused variable.
Werner Lemberg763300a2010-03-09 17:01:21 +01008458 Reported by Graham.
8459
8460 * src/cff/cffparse.c (cff_parse_real): Remove `rest'.
8461
Werner Lemberg03b3da82010-03-02 13:00:55 +010084622010-03-02 John Tytgat <John.Tytgat@esko.com>
8463
Werner Lemberg273e2b72012-09-18 13:27:27 +02008464 [cff] Improve CFF string (especially glyphname) lookup performance.
Werner Lemberg03b3da82010-03-02 13:00:55 +01008465
8466 We do this by avoiding memory allocation and file I/O. This is
8467 Savannah patch #7104.
8468
8469 * src/cff/cfftypes.h: Include PS cmaps service and
8470 FT_INTERNAL_POSTSCRIPT_HINTS_H.
8471 (CFF_SubFontRec): Remove `num_local_subrs'.
8472 (CFF_FontRec): Add `num_strings', `strings', and `string_pool'
8473 fields.
8474 Remove `string_index' and `num_global_subrs' fields.
8475 Use real types instead of `void' for `pshinter' and `psnames' fields.
8476
8477 * src/cff/cffload.c: Don't include PS cmaps service.
8478 (cff_index_get_pointers): Add `pool' parameter which allows to
8479 insert an extra NUL character for each String INDEX entry.
8480 (cff_index_get_name): Make it a local function.
8481 (cff_index_get_string): New function.
8482 (cff_subfont_load): Updated.
8483 (cff_font_load): Initialize `num_strings', `strings', and
8484 `string_pool' fields in the `CFF_FontRec' structure.
8485 (cff_index_get_sid_string): Use `cff_index_get_string' instead of
8486 `cff_index_get_name'.
8487 (cff_font_done): Updated.
8488
8489 * src/cff/cffload.h: Don't include PS cmaps service.
8490 (cff_index_get_string): Added.
8491 (cff_index_get_sid_string): Updated.
8492
8493 * src/cff/cffobjs.c: Don't include PS cmaps service and
8494 FT_INTERNAL_POSTSCRIPT_HINTS_H.
8495 (cff_size_get_globals_funcs, cff_slot_init): Updated.
8496 (cff_face_init): Follow `cff_index_get_name',
8497 `cff_index_get_string', and `cff_index_get_sid_string' changes.
8498
8499 * src/cff/cffcmap.c (cff_sid_free_glyph_name): Removed.
8500 (cff_sid_to_glyph_name): Use `cff_index_get_cid_string'.
8501 (cff_cmap_unicode_init): Updated.
8502
8503 * src/cff/cffdrivr.c: Don't include PS cmap service.
8504 (cff_get_glyph_name): Avoid unnecessary lookup for POSTSCRIPT_CMAPS
8505 service.
8506 (cff_get_glyph_name, cff_ps_get_font_info, cff_get_ros): Follow API
8507 `cff_index_get_sid_string' change.
8508 (cff_get_name_index): Use `cff_index_get_string' instead of
8509 `cff_index_get_name'.
8510
8511 * src/cff/cffgload.c: Don't include FT_INTERNAL_POSTSCRIPT_HINTS_H.
8512 (cff_decoder_init, cff_decoder_prepare): Updated.
8513
Werner Lemberge0717d42010-02-27 08:10:11 +010085142010-02-27 Werner Lemberg <wl@gnu.org>
8515
8516 Simplify code.
8517 Suggested by Behdad.
8518
8519 * src/base/ftobjs.c (FT_Get_First_Char): Don't use a loop since we
8520 call FT_Get_Next_Char anyway if necessary.
8521
Behdad Esfahbod2415cbf2010-02-26 23:48:53 +010085222010-02-26 Behdad Esfahbod <behdad@behdad.org>
8523
8524 Improve handling of invalid glyph indices in char->index functions.
8525
8526 * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Use a
8527 loop.
8528
Chris Liddell10cf3882010-02-18 17:09:30 +010085292010-02-18 Chris Liddell <chris.liddell@artifex.com>
8530
Werner Lemberg273e2b72012-09-18 13:27:27 +02008531 [truetype] Fix Savannah bug #28905.
Chris Liddell10cf3882010-02-18 17:09:30 +01008532
8533 Initialize phantom points before calling the incremental interface
8534 to update glyph metrics.
8535
8536 * src/truetype/ttgload.c (tt_get_metrics_incr_overrides)
8537 [FT_CONFIG_OPTION_INCREMENTAL]: New function, split off from...
8538 (tt_get_metrics): This.
8539 Updated.
8540 (load_truetype_glyph): Use tt_get_metrics_incr_overrides.
8541
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00008542----------------------------------------------------------------------------
8543
Werner Lemberg53c0cb52013-01-11 08:29:22 +01008544Copyright 2010-2013 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00008545David Turner, Robert Wilhelm, and Werner Lemberg.
8546
8547This file is part of the FreeType project, and may only be used, modified,
8548and distributed under the terms of the FreeType project license,
8549LICENSE.TXT. By continuing to use, modify, or distribute this file you
8550indicate that you have read the license and understand and accept it
8551fully.
8552
8553
8554Local Variables:
8555version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00008556coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00008557End: