• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
12010-02-13  Werner Lemberg  <wl@gnu.org>
2
3	* Version 2.3.12 released.
4	==========================
5
6
7	Tag sources with `VER-2-3-12'.
8
9	* docs/CHANGES: Updated.
10
11	* docs/VERSION.DLL: Update documentation and bump version number to
12	2.3.12.
13
14	* README, Jamfile (RefDoc),
15	builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
16	builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
17	builds/win32/visualc/freetype.dsp,
18	builds/win32/visualc/freetype.vcproj,
19	builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
20	builds/win32/visualce/freetype.vcproj,
21	builds/win32/visualce/index.html,
22	builds/wince/vc2005-ce/freetype.vcproj,
23	builds/wince/vc2005-ce/index.html,
24	builds/wince/vc2008-ce/freetype.vcproj,
25	builds/wince/vc2008-ce/index.html: s/2.3.11/2.3.12/, s/2311/2312/.
26
27	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 12.
28
29	* builds/unix/configure.raw (version_info): Set to 10:0:4.
30
312010-02-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
32
33	Improve autotool version checking to work with beta releases.
34
35	* autogen.sh (check_tool_version): Improve the extraction of version
36	number from "tool --version" output.  Some beta releases of
37	autotools have extra strings before version number.
38
392010-02-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
40
41	Fix overallocating bug in FT_Outline_New_Internal().
42
43	* src/base/ftoutln.c (FT_Outline_New_Internal): The length of
44	FT_Outline->points[] should be numPoints, not 2 * numPoints.
45	Found by Paul Messmer, see
46	https://lists.gnu.org/archive/html/freetype-devel/2010-02/msg00003.html
47
482010-02-10  Ken Sharp  <ken.sharp@artifex.com>
49
50	Really fix Savannah bug #28678 (part 2).
51
52	Since we consider `sbw' for the horizontal direction only, we still have
53	to synthesize vertical metrics if the user wants to use the vertical
54	writing direction.
55
56	* src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
57	(cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph):
58	Synthesize vertical metrics (only) if FT_LOAD_VERTICAL_LAYOUT is
59	set.
60
612010-02-10  Ken Sharp  <ken.sharp@artifex.com>
62
63	Really fix Savannah bug #28678 (part 1).
64
65	After long discussion, we now consider the character width vector
66	(wx,wy) returned by the `sbw' Type 1 operator as being part of *one*
67	direction only.  For example, if you are using the horizontal
68	writing direction, you get the horizontal and vertical components of
69	the advance width for this direction.  Note that OpenType and CFF fonts
70	don't have such a vertical component; instead, the GPOS table can be
71	used to generate two-dimensional advance widths (but this isn't
72	handled by FreeType).
73
74	* include/freetype/ftincrem.h (FT_Incremental_MetricsRec): Add
75	`advance_v' field to hold the vertical component of the advance
76	value.
77
78	* src/truetype/ttgload.c (tt_get_metrics), src/cff/cffgload.c
79	(cff_slot_load), src/type1/t1gload.c
80	(T1_Parse_Glyph_And_Get_Char_String), src/cid/cidgload.c
81	(cid_load_glyph): Use it.
82
832010-02-08  Werner Lemberg  <wl@gnu.org>
84
85	* devel/ftoption.h [FT_CONFIG_OPTION_PIC]: Define.
86
872010-02-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
88
89	Prevent NULL pointer dereference passed to FT_Module_Requester.
90
91	* src/sfnt/sfdriver.c (sfnt_get_interface): Don't use `module'.
92	* src/psnames/psmodule.c (psnames_get_interface): Ditto.
93
94	* src/cff/cffdrivr.c (cff_get_interface): Check NULL `driver'.
95	* src/truetype/ttdriver.c (tt_get_interface): Ditto.
96
972010-01-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
98
99	Fix memory leaks in previous patch.
100
101	* src/sfnt/sfobjs.c (sfnt_load_face): Don't overwrite the strings
102	allocated for face->root.family_name and style_name.
103
1042010-01-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
105
106	New parameters for FT_Open_Face() to ignore preferred family names.
107
108	Preferred family names should be used for legacy systems that
109	can hold only a few faces (<= 4) for a family name. Suggested by
110	Andreas Heinrich.
111	https://lists.gnu.org/archive/html/freetype/2010-01/msg00001.html
112
113	* include/freetype/ftsnames.h (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
114	FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Define.
115
116	* src/sfnt/sfobjs.c (sfnt_load_face): Check the arguments and
117	ignore preferred family and subfamily names if requested.
118
1192010-01-27  Ken Sharp  <ken.sharp@artifex.com>
120
121	Fix Savannah bug #28678.
122
123	* src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
124	(cid_load_glyph): Handle vertical metrics correctly.
125
126	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Handle
127	vertical metrics correctly.
128	(T1_Load_Glyph): Don't synthesize vertical metrics.
129
1302010-01-14  Werner Lemberg  <wl@gnu.org>
131
132	Make FT_Set_Transform work if no renderer is available.
133
134	* src/base/ftobjs.c (FT_Load_Glyph): Apply `standard' transformation
135	if no renderer is compiled into the library.
136
1372010-01-14  Werner Lemberg  <wl@gnu.org>
138
139	Fix compilation warning.
140
141	* src/base/ftbase.h: s/LOCAL_DEF/LOCAL/.
142	* src/base/ftobjs.c: Include ftbase.h conditionally.
143
1442010-01-11  Kwang Yul Seo  <skyul@company100.net>
145
146	Provide inline assembly code for RVCT compiler.
147	This is Savannah patch #7059.
148
149	* include/freetype/config/ftconfig.h (FT_MULFIX_ASSEMBLER,
150	FT_MulFix_arm) [__CC_ARM || __ARM_CC]: Define.
151
1522010-01-08  Ken Sharp  <ken.sharp@artifex.com>
153
154	Fix Savannah bug #28521.
155
156	Issue #28226 involved a work-around for a font which used the
157	`setcurrentpoint' operator in an invalid way; this operator is only
158	supposed to be used with the result of OtherSubrs, and the font used
159	it directly.  The supplied patch removed the block of code which
160	checked this usage entirely.
161
162	This turns out to be a Bad Thing.  If `setcurrentpoint' is being
163	used correctly it should reset the flex flag in the decoder.  If we
164	don't do this then the flag never gets reset and we omit any further
165	contours from the glyph (at least until we close the path or
166	similar).
167
168	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
169	<op_setcurrentpoint>: Handle `flex_state' correctly.
170
1712010-01-05  Werner Lemberg  <wl@gnu.org>
172
173	Apply reports from clang static analyzer.
174
175	* src/lzw/ftlzw.c (ft_lzw_file_init), src/base/ftstroke.c
176	(FT_Stroker_ParseOutline), src/base/ftsynth.c
177	(FT_GlyphSlot_Embolden): Remove dead code.
178
179	* src/base/ftpatent.c (_tt_check_patents_in_table): Initialize
180	`offset_i' and `length_i'.
181
1822010-01-05  Ralph Giles  <giles@ghostscript.com>
183
184	Enable the incremental font interface by default.
185
186	Ghostscript requires the incremental font interface for handling
187	some Postscript documents.  It is moving to using FreeType as its
188	primary renderer; supporting this in the default build makes it
189	Ghostscript to be linked against the system FreeType when one is
190	available.
191
192	* include/freetype/config/ftoption.h (FT_CONFIG_OPTION_INCREMENTAL):
193	Uncomment.
194
1952010-01-05  Werner Lemberg  <wl@gnu.org>
196
197	Fix Savannah bug #28395.
198
199	* src/truetype/ttdriver.c (Load_Glyph), src/type1/t1gload.c
200	(T1_Load_Glyph): Don't check `num_glyphs' if incremental interface
201	is used.
202
2032010-01-05  Ken Sharp  <ken.sharp@artifex.com>
204
205	Make Type 1 `seac' operator work with incremental interface.
206	This fixes Savannah bug #28480.
207
208	* src/psaux/t1decode.c (t1operator_seac): Don't check `glyph_names'
209	if incremental interface is used.
210
2112010-01-04  Ken Sharp  <ken.sharp@artifex.com>
212
213	Make incremental interface work with TrueType fonts.
214	This fixes Savannah bug #28478.
215
216	* src/truetype/ttgload.c (load_truetype_glyph): Don't check
217	`glyf_offset' if incremental interface is used.
218
2192009-12-31  Lars Abrahamsson  <wonko@opera.com>
220
221	Make compilation with FT_CONFIG_OPTION_PIC work again.
222
223	* src/base/ftglyph.c (FT_Glyph_To_Bitmap) [FT_CONFIG_OPTION_PIC]:
224	Declare `library' for FT_BITMAP_GLYPH_CLASS_GET.
225
226	* src/base/ftinit.c (ft_destroy_default_module_classes,
227	ft_create_default_module_classes): Use proper casts (needed for C++
228	compilation).
229
230	* src/sfnt/ttcmap.c (tt_cmap13_class_rec): Use FT_DEFINE_TT_CMAP.
231
2322009-12-22  Marc Kleine-Budde  <mkl@pengutronix.de>
233
234	Make freetype-config aware of $SYSROOT.
235	This is Savannah patch #7040.
236
237	* builds/unix/freetype-config.in: Decorate with ${SYSROOT} where
238	appropriate.
239
2402009-12-20  Werner Lemberg  <wl@gnu.org>
241
242	Fix compiler warning.
243	Reported by Sean.
244
245	* src/base/ftdbgmem.c [!FT_DEBUG_MEMORY]: ANSI C doesn't like empty
246	source files; however, some compilers warn about an unused variable
247	declaration.  This is now replaced with a typedef.
248
2492009-12-18  Werner Lemberg  <wl@gnu.org>
250
251	Fix Savannah bug #28320.
252
253	There exist corrupt, subsetted fonts (embedded in PDF files) which
254	contain a private dict that ends with an unterminated floating point
255	number (no operator following).  We now ignore this error (as
256	acrobat does).
257
258	* src/cff/cffparse.c (cff_parser_run): Don't emit a syntax error for
259	unterminated floating point numbers.
260
2612009-12-16  Werner Lemberg  <wl@gnu.org>
262
263	Really fix compiler warnings.
264	Reported by Sean.
265
266	* src/truetype/ttgxvar.c (GX_PT_POINTS_ARE_WORDS,
267	GX_PT_POINT_RUN_COUNT_MASK): Convert enum values to macros.
268
2692009-12-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
270
271	Improve configure.raw to copy some options from CFLAGS to LDFLAGS.
272	The linker of Mac OS X 10.6 is sensitive to the architecture.  If
273	the architectures are specified explicitly for the C compiler, the
274	linker requires the architecture specifications too.
275
276	* builds/unix/configure.raw: Replace `-isysroot' option parser by
277	more generic argument parser.
278
2792009-12-15  Werner Lemberg  <wl@gnu.org>
280
281	Fix compiler warnings.
282	Reported by Sean.
283
284	* src/truetype/ttgxvar.c (ft_var_readpackeddeltas): Fix counter data
285	type.
286
2872009-12-14  Ken Sharp  <ken.sharp@artifex.com>
288
289	Ignore invalid `setcurrentpoint' operations in Type 1 fonts.
290	This fixes Savannah bug #28226.
291
292	At least two wild PostScript files of unknown provenance contain
293	Type 1 fonts, apparently converted from TrueType fonts in earlier
294	PDF versions of the files, which use the `setcurrentpoint' operator
295	inappropriately.
296
297	FreeType currently throws an error in this case, but Ghostscript and
298	Adobe Distiller both accept the fonts and ignore the problem.  This
299	commit #ifdefs out the check so PostScript interpreters using
300	FreeType can render these files.
301
302	The specification says `setcurrentpoint' should only be used to set
303	the point after a `Subr' call, but these fonts use it to set the
304	initial point to (0,0).  Unnecessarily so, as they correctly use an
305	`hsbw' operation which implicitly sets the initial point.
306
307	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
308	<op_setcurrentpoint>: Comment out code.
309
3102009-12-14  Bram Tassyns  <bramt@enfocus.be>
311
312	Fix parsing of /CIDFontVersion.
313	This fixes Savannah bug #28287.
314
315	* src/cid/cidtoken.h: `cid_version' in CID_FaceInfoRec (in
316	t1tables.h) is of type FT_Fixed.
317
3182009-12-14  Werner Lemberg  <wl@gnu.org>
319
320	Trace glyph index in CID module.
321	Suggested in Savannah patch #7023.
322
323	* src/cid/cidgload.c (cid_load_glyph): Add tracing message.
324
3252009-12-03  Werner Lemberg  <wl@gnu.org>
326
327	Fix compiler warnings.
328
329	* src/truetype/ttgload.c (tt_get_metrics): Put `Exit' label into the
330	proper preprocessor conditional.
331	* src/pfr/pfrobjs.c (pfr_slot_load): Pacify gcc.
332
3332009-11-25  John Tytgat  <John.Tytgat@esko.com>
334
335	Better handling of start of `eexec' section.
336	This fixes Savannah bug #28090.
337
338	* src/type1/t1parse.c (T1_Get_Private_Dict): Skip all whitespace
339	characters before start of `eexec' section.
340
3412009-11-20  Werner Lemberg  <wl@gnu.org>
342
343	Fix Savannah bug #27742.
344
345	* src/base/ftstroke.c (ft_stroker_outside): Avoid silent division by
346	zero, using a threshold for `theta'.
347
3482009-11-20  Werner Lemberg  <wl@gnu.org>
349
350	Fix Savannah bug #28036.
351
352	* src/type1/t1afm.c (t1_get_index): Fix comparison.
353
3542009-11-16  Werner Lemberg  <wl@gnu.org>
355
356	Fix compiler warnings.
357	Reported by Kevin Blenkinsopp <arqon@promode.org>.
358
359	* src/sfnt/ttload.c (check_table_dir): Use proper data type.
360
3612009-11-15  Werner Lemberg  <wl@gnu.org>
362
363	Really fix FreeDesktop bug #21197.
364	This also fixes Savannah bug #28021.
365
366	* src/autofit/aflatin.c (af_latin_metrics_check_digits),
367	src/autofit/aflatin2.c (af_latin2_metrics_check_digits): Fix loop.
368
3692009-11-15  Werner Lemberg  <wl@gnu.org>
370
371	Add tracing messages for advance values.
372
373	* src/base/ftobjs.c (FT_Load_Glyph), src/truetype/ttgload.c
374	(TT_Get_HMetrics, TT_Get_VMetrics): Do it.
375
3762009-11-08  Werner Lemberg  <wl@gnu.org>
377
378	Fix compiler warning.
379	Reported by Jeremy Manson <jeremy.manson@gmail.com>.
380
381	* src/truetype/ttgload.c (load_truetype_glyph): Initialize `error'.
382
3832009-11-04  Werner Lemberg  <wl@gnu.org>
384
385	Remove compiler warning.
386	Reported by Sean McBride <sean@rogue-research.com>.
387
388	* src/tools/apinames.c (read_header_file)<STATE_TYPE>: Use a cast to
389	`int', as specified in the printf(3) man page.
390
3912009-11-04  Werner Lemberg  <wl@gnu.org>
392
393	Fix Savannah bug #27921.
394
395	* src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
396	(cid_face_init), src/type1/t1afm.c (T1_Read_Metrics),
397	src/type1/t1objs.c (T1_Face_Init): Don't use unsigned constant
398	values for rounding if the argument can be negative.
399
4002009-11-03  Bram Tassyns  <bramt@enfocus.be>
401
402	Add basic support for Type1 charstrings in CFF.
403	This fixes Savannah bug #27922.
404
405	* src/cff/cffgload.c (CFF_Operator, cff_argument_counts): Handle
406	`seac', `sbw', and `setcurrentpoint' opcodes.
407	(cff_compute_bias): Add parameter to indicate the charstring type.
408	Update all callers.
409	(cff_operator_seac): Add parameter for side bearing.
410	(cff_decoder_parse_charstrings): Updated for more Type1 support.
411
4122009-11-03  Werner Lemberg  <wl@gnu.org>
413
414	Return correct `linearHoriAdvance' value for embedded TT bitmaps too.
415	Reported by Jeremy Manson <jeremy.manson@gmail.com>.
416
417	src/truetype/ttgload.c (load_truetype_glyph): Add parameter to
418	quickly load the glyph header only.
419	Update all callers.
420	(tt_loader_init): Add parameter to quickly load the `glyf' table
421	only.
422	Update all callers.
423	(TT_Load_Glyph): Compute linear advance values for embedded bitmap
424	glyphs too.
425
4262009-11-03  Werner Lemberg  <wl@gnu.org>
427
428	Improve code readability.
429
430	* src/ttgload.c (load_truetype_glyph): Move metrics calculation
431	to...
432	(tt_get_metrics): This new function.
433
4342009-10-26  Bram Tassyns  <bramt@enfocus.be>
435
436	Fix Savannah bug #27811.
437
438	* src/truetype/ttxgvar.c (ft_var_readpackeddeltas): Fix
439	signed/unsigned mismatch.
440
4412009-10-19  Ning Dong  <flintning@163.com>
442
443	Fix handling of `get' and `put' CFF instructions.
444
445	* src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_get,
446	cff_op_put>: Appendix B of Adobe Technote #5177 limits the number of
447	elements for the `get' and `put' operators to 32.
448	* src/cff/cffgload.h (CFF_MAX_TRANS_ELEMENTS): Define.
449	(CFF_Decoder): Use it for `buildchar' and remove `len_buildchar'.
450
4512009-10-18  Werner Lemberg  <wl@gnu.org>
452
453	Fix handling of `dup' CFF instruction.
454	Problem and solution reported by Ning Dong <flintning@163.com>.
455
456	* src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_dup>:
457	Increase `args' by 2, not 1.
458
4592009-10-10  Werner Lemberg  <wl@gnu.org>
460
461	* Version 2.3.11 released.
462	==========================
463
464
465	Tag sources with `VER-2-3-11'.
466
467	* docs/VERSION.DLL: Update documentation and bump version number to
468	2.3.11.
469
470	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
471	builds/win32/visualc/freetype.dsp,
472	builds/win32/visualc/freetype.vcproj,
473	builds/win32/visualce/index.html,
474	builds/win32/visualce/freetype.dsp,
475	builds/win32/visualce/freetype.vcproj: s/2.3.10/2.3.11/, s/2310/2311/.
476
477	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 11.
478
479	* builds/unix/configure.raw (version_info): Set to 9:22:3.
480
4812009-10-10  Werner Lemberg  <wl@gnu.org>
482
483	* docs/CHANGES, docs/release: Updated.
484
4852009-10-10  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
486
487	* src/pcf/pcfread.c (pcf_get_properties): Fix a bug in the nprops
488	truncation.  Reported by Martin von Gagern and Peter Volkov.
489	https://bugs.gentoo.org/288357 and https://bugs.gentoo.org/288256
490
4912009-10-06  Werner Lemberg  <wl@gnu.org>
492
493	* Version 2.3.10 released.
494	==========================
495
496
497	Tag sources with `VER-2-3-10'.
498
499	* builds/toplevel.mk (major, minor, patch): Fix regexp to allow more
500	than a single digit.
501	(dist): We now use git.
502
503	* docs/VERSION.DLL: Update documentation and bump version number to
504	2.3.10.
505
506	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
507	builds/win32/visualc/freetype.dsp,
508	builds/win32/visualc/freetype.vcproj,
509	builds/win32/visualce/index.html,
510	builds/win32/visualce/freetype.dsp,
511	builds/win32/visualce/freetype.vcproj: s/2.3.9/2.3.10/, s/239/2310/.
512
513	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.
514
515	* builds/unix/configure.raw (version_info): Set to 9:21:3.
516
5172009-10-06  Werner Lemberg  <wl@gnu.org>
518
519	Fix `make multi'.
520
521	* src/cache/ftccache.c, src/cache/ftcsbits.c (FT_COMPONENT): Define.
522
523	* src/sfnt/sfdriver.c: Include FT_INTERNAL_DEBUG_H.
524
5252009-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
526
527	[cache] Fix Savannah bug #27441, clean up Redhat bugzilla #513582.
528	Tricky casts in FTC_{CACHE,GCACHE,MRULIST}_LOOKUP_CMP() are removed.
529	Now these functions should be called with FTC_Node or FTC_MruNode
530	variable, and the caller should cast them to appropriate pointers to
531	concrete data.  These tricky casts can GCC-4.4 optimizer (-O2)
532	confused and the crashing binaries are generated.
533
534	* src/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): Drop tricky cast.
535	Now the 4th argument `node' of this function should be typed as
536	FTC_MruNode.
537
538	* src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): For inline
539	implementation, new temporal variable FTC_MruNode `_mrunode' to take
540	the pointer from FTC_MRULIST_LOOKUP_CMP().  For non-inline
541	implementation, tricky cast is dropped.
542
543	* src/cache/ftcmanag.c (FTC_SIZE_NODE): New macro casting
544	to FTC_SizeNode.
545	(FTC_Manager_LookupSize): Replace FTC_SizeNode `node' by FTC_MruNode
546	`mrunode', and FTC_SIZE_NODE() is inserted.
547	(FTC_FACE_NODE): New macro casting to FTC_FaceNode.
548	(FTC_Manager_LookupFace) Replace FTC_FaceNode `node' by FTC_MruNode
549	`mrunode', and FTC_FACE_NODE() is inserted.
550
551	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Change the type of
552	`node' from FTC_INode to FTC_Node.  Extra casting macro FTC_NODE()
553	is dropped.
554	(FTC_ImageCache_LookupScaler): Ditto.
555	(FTC_SBitCache_Lookup): Change the type of `node' from FTC_SNode to
556	FTC_Node.  Extra casting macro FTC_NODE() is dropped.  FTC_SNODE()
557	is inserted.
558	(FTC_SBitCache_LookupScaler): Ditto.
559
560	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Change the type of
561	`node' from FTC_CMapNode to FTC_Node.  Extra casting macro
562	FTC_NODE() is dropped, FTC_CMAP_NODE() is inserted.
563
5642009-09-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
565
566	[cache, psaux, type1] Fix for multi build.
567	In multi build, some cpp functions are left as unresolved symbols.
568
569	* src/cache/ftcbasic.c: Include FT_INTERNAL_DEBUG_H for FT_TRACE1().
570
571	* src/psaux/t1decode.c: Include FT_INTERNAL_CALC_H for
572	FIXED_TO_INT().
573	* src/type1/t1gload.c: Ditto.
574	* src/type1/t1objs.c: Ditto.
575
5762009-09-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
577
578	[autofit] Fix for multi build.
579
580	* src/autofit/afmodule.h: Include FT_INTERNAL_OBJECTS_H to use
581	FT_DECLARE_MODULE() macro in multi build.
582
583	* src/autofit/aflatin.c: Include <ft2build.h> to handle
584	FT_ADVANCES_H correctly in multi build.
585
5862009-09-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
587
588	[cache] Check the face filled by FTC_Manager_LookupFace().
589
590	* src/cache/ftcbasic.c (ftc_basic_family_get_count): Return
591	immediately if FTC_Manager_LookupFace() fills face by NULL.  Such
592	case can occur when the code is optimized by GCC-4.2.x.
593
5942009-09-23  Werner Lemberg  <wl@gnu.org>
595
596	* docs/CHANGES: Updated.
597
5982009-09-12  Werner Lemberg  <wl@gnu.org>
599
600	[raster] Fix 5-levels grayscale output.
601	This was broken since version 2.3.0.
602
603	* src/raster/ftraster.c (count_table): Use pre-2.3.0 values (which
604	were then computed dynamically).
605	(Vertical_Gray_Sweep_Step): Updated.
606
607	(ft_black_render): Initialize `worker->gray_lines' (problem found by
608	valgrind).
609
610	(FT_RASTER_OPTION_ANTI_ALIASING, DEBUG_RASTER): Don't #undef, just
611	comment out.
612
6132009-09-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
614
615	Improve configure.raw for cross build.
616
617	* builds/unix/configure.raw: Remove temporal files created by the
618	suffix checking for CC_BUILD.  Set XX_ANSIFLAGS and XX_CFLAGS when
619	cross compiler is GCC.  AC_PROG_CC checks whether the cross compiler
620	is GCC, its result is stored in GCC.
621
6222009-09-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
623
624	[BDF] Modify hash API to take size_t value instead of void *.
625
626	The hash API in BDF driver is designed to be generic, it takes
627	void * typed data.  But BDF driver always gives an unsigned long
628	integer (the index to a property).  To reduce non-essential
629	casts from unsigned long to void* and from void* to unsigned
630	long, the hash API is changed to take size_t integer.
631	The issue of incompatible cast between unsigned long and void*
632	on LLP64 platform is reported by NightStrike from MinGW-Win64
633	project.  See
634	https://lists.gnu.org/archive/html/freetype/2009-09/msg00000.html
635
636	* src/bdf/bdf.h: The type of hashnode->data is changed from
637	void* to size_t.
638
639	* src/bdf/bdflib.c (hash_insert): Get size_t data, instead of
640	void* data.
641	(bdf_create_property): Get the name length of new property by
642	size_t variable, with a cut-off at FT_ULONG_MAX.
643	(_bdf_set_default_spacing): Get the name length of the face by
644	size_t variable, with a cut-off at 256.
645	(bdf_get_property): Get the property id by size_t variable to
646	reduce the casts between 32-bit prop ID & hashnode->data during
647	simple copying.
648	(_bdf_add_property): Ditto.
649	(_bdf_parse_start): Calculate the index to the property array
650	by size_t variable.
651	(bdf_get_font_property): Drop a cast to unsigned long.
652
6532009-09-10  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
654
655	[Win64] Improve the computation of random seed from stack address.
656
657	On LLP64 platform, the conversion from pointer to FT_Fixed need
658	to drop higher 32-bit.  Explicit casts are required. Reported by
659	NightStrike from MinGW-w64 project.  See
660	https://lists.gnu.org/archive/html/freetype/2009-09/msg00000.html
661
662	* src/cff/cffgload.c: Convert the pointers to FT_Fixed explicitly.
663
664	* src/psaux/t1decode.c: Ditto.
665
666
6672009-09-03  Werner Lemberg  <wl@gnu.org>
668
669	[raster] Improvements for stand-alone mode.
670
671	* src/raster/rules.mk: Don't handle ftmisc.h.  It is needed for
672	stand-alone mode only.
673
674	* src/raster/ftmisc.h (FT_MemoryRec, FT_Alloc_Func, FT_Free_Func,
675	FT_Realloc_Func): Copy declarations from ftsystem.h.
676
6772009-09-02  Bram Tassyns  <bramt@enfocus.be>
678
679	Improve vertical metrics calculation (Savannah bug #27364).
680
681	The calculation of `vertBearingX' is not defined in the OTF font
682	spec so FreeType does a `best effort' attempt.  However, this value
683	is defined in the PDF and PostScript specs, and that algorithm is
684	better than the one FreeType currently uses:
685
686	  FreeType: Use the middle of the bounding box as the X coordinate
687	            of the vertical origin.
688
689	  Adobe PDF spec: Use the middle of the horizontal advance vector as
690	                  the X coordinate of the vertical origin.
691
692	FreeType's algorithm goes wrong if you have a really small glyph
693	(like the full-width, circle-like dot at the end of the sentence, as
694	used in CJK scripts) with large bearings.  With the FreeType
695	algorithm this dot gets centered on the baseline; with the PDF
696	algorithm it gets the correct location (in the top right).  Note
697	that this is a serious issue, it's like printing the dot at the end
698	of a Roman sentence at the center of the textline instead of on the
699	baseline like it should. So i believe the PDF spec's algorithm
700	should be used in FreeType as well.
701
702	The `vertBearingY' value for such small glyphs is also very strange
703	if no `vmtx' information is present, since the height of the bbox is
704	not representable for the height of the glyph visually (the
705	whitespace up to the baseline is part of the glyph).  The fix also
706	includes some code for a better estimate of `vertBearingY'.
707
708	* src/base/ftobjs.c (ft_synthesize_vertical_metrics): `vertBearingX'
709	is now calculated as described by the Adobe PDF Spec.  Estimate for
710	`vertBearingY' now works better for small glyphs completely above or
711	below the baseline into account.
712
713	* src/cff/cffgload.c (cff_slot_load): `vertBearingX' is now
714	calculated as described by the Adobe PDF Spec.  Vertical metrics
715	information was always ignored when FT_CONFIG_OPTION_OLD_INTERNALS
716	was not defined.
717
718	* src/truetype/ttgload.c (compute_glyph_metrics): `vertBearingX' is
719	now calculated as described by the Adobe PDF Spec.
720
7212009-09-01  John Tytgat  <John.Tytgat@esko.com>
722
723	Fix custom cmap for empty Type 1 font (Savannah bug #27294).
724
725	* include/freetype/internal/t1types.h (T1_EncodingRecRec_): Update
726	comment to reflect revised code_last meaning.
727	* src/type1/t1load.c (T1_Open_Face), src/type42/t42objs.c
728	(T42_Open_Face): Assign max_char as highest character code + 1 and
729	use this for T1_EncodingRecRec_::code_last.
730	* src/psaux/t1cmap.c (t1_cmap_custom_init): Follow revised
731	T1_EncodingRecRec_::code_last meaning.
732
7332009-08-25  Werner Lemberg  <wl@gnu.org>
734
735	Fix rendering of horizontally compressed CFFs.
736	Bug reported by Ivan Nincic <inincic@pdftron.com>.
737
738	* src/cff/cffgload.c (cff_slot_load): Thinko: Check `xx' element of
739	`font_matrix' also.
740
741	* docs/CHANGES: Updated.
742
7432009-08-03  suyu0925@gmail.com
744
745	Don't call `ft_fseek' every time when executing `ft_fread'.
746
747	* src/base/ftstream.c (FT_Stream_Seek), src/base/ftsystem.c
748	(ft_ansi_stream_io): Implement it.
749
7502009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
751
752	sfnt: Cast a charcode to 32-bit in cmap format 14 parser.
753
754	* src/sfnt/ttcmap.c (tt_cmap14_char_var_index,
755	tt_cmap14_char_var_isdefault, tt_cmap14_char_variants,
756	tt_cmap14_variant_chars): Correct mismatches from
757	FT_CMap_CharVarIndexFunc prototype, FT_ULong arguments
758	are replaced by FT_UInt32 arguments.
759
7602009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
761
762	sfnt: Cast a charcode to 32-bit in cmap format 12 parser.
763
764	* src/sfnt/ttcmap.c (tt_cmap12_char_next):
765	Insert explicit cast from FT_UFast to FT_UInt32
766	for return value.
767
7682009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
769
770	psaux: Fix a few casts to FT_Int32 value.
771
772	* src/psaux/t1decode.c (t1_decoder_parse_charstrings):
773	Fix a few casts setting `value' from FT_Long to FT_Int32,
774	because `value' is typed as FT_Int32 since 2009-06-22.
775
7762009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
777
778	sfnt: Fix a data type mismatching with its source.
779
780	* src/sfnt/ttcmap.c (tt_cmap13_char_next): Fix the
781	type of `gindex' from FT_ULong to FT_UInt because
782	it is set by FT_UInt tt_cmap13_char_map_binary() or
783	TT_CMap13->cur_gindex.
784
7852009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
786
787	sfnt: Extend a few local variables to load 32-bit values.
788
789	* src/sfnt/ttkern.c (tt_face_load_kern): Extend `count'
790	and `kern' to load 32-bit values.
791
7922009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
793
794	pfr: Extend `num_aux' to take 32-bit value.
795
796	* src/pfr/pfrload.c (pfr_phy_font_load): Extend
797	`num_aux' to load 32-bit value.
798
7992009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
800
801	pcf: Truncate FT_ULong `nprops' to fit to int PCF_Face->nprops.
802
803	* src/pcf/pcfread.c (pcf_get_properties): Load `nprops'
804	as FT_ULong value from PCF file, but truncate it as
805	int to fit PCF_Face->nprops.  The number of truncated
806	properties is shown in the trace message.
807
8082009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
809
810	gxvalid: Extend a few local variables to reduce the casts.
811
812	* src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate):
813	Extend `type' and `rest' to take FT_ULong values.
814
8152009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
816
817	gxvalid: Extend `settingTable' to take 32-bit offset.
818
819	* src/gxvalid/gxvfeat.c (gxv_feat_name_validate):
820	Extend `settingTable' to take 32-bit offset.
821
8222009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
823
824	autofit: Cast FT_Long glyph_count to compare with FT_UInt GID.
825
826	* src/autofit/afglobal.c (af_face_globals_is_digit,
827	af_face_globals_compute_script_coverage): Cast FT_Long
828	globals->glyph_count to FT_ULong, to compare with FT_UInt
829	gindex.
830
8312009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
832
833	smooth: Exclude 16-bit system in invalid pitch/height check.
834
835	* src/smooth/ftsmooth.c (ft_smooth_render_generic):
836	pitch and height are typed as FT_UInt but checked to fit
837	16-bit range, to avoid the overflows.  On 16-bit system,
838	this checking inserts a conditional that never occurs.
839
8402009-07-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
841
842	cff: Type large constants > 0x7FFF as long for 16-bit systems.
843
844	* src/cff/cffload.c (cff_charset_load): Type large
845	constants > 0x7FFF as long, because normal constants
846	are typed signed integer that is less than 0x8000 on
847	16-bit systems.
848
8492009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
850
851	base: Remove an unused variable.
852
853	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove an
854	unused variable `library'.  glyph->library is used.
855
8562009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
857
858	cache: Check higher bits in flags for non ILP32 systems.
859
860	4 public functions ought to take FT_ULong flags, but take
861	FT_UInt flags. To keep binary compatibility, we drop higher
862	bits on non ILP32 platforms,
863		ILP64 systems: No drop occurs.
864		LP64 systems: Higher bits are not used.
865		16-bit systems: Drop can occur.
866	See
867	https://lists.gnu.org/archive/html/freetype-devel/2008-12/msg00065.html
868	These functions will be refined to take FT_ULong flags in
869	next bump with incompatible API change.
870
871	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup):
872	Check `flags' in `type', the 2nd argument.
873	(FTC_SBitCache_Lookup): Ditto.
874	(FTC_ImageCache_LookupScaler): Check `load_flags',
875	the 3rd argument.
876	(FTC_SBitCache_LookupScaler): Ditto.
877
8782009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
879
880	sfnt: Ignore invalid GIDs in glyph name lookup.
881
882	* include/freetype/internal/fttrace.h:
883	New trace module for sfdriver.c is added.
884
885	* src/sfnt/sfdriver.c (sfnt_get_name_index):
886	Restrict glyph name lookup to FT_UInt GID.
887	Genuine TrueType can hold 16-bit glyphs.
888
8892009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
890
891	pcf: Fix a comparison between FT_Long and FT_ULong.
892
893	* src/pcf/pcfread.c (pcf_get_bitmaps): Return an error
894	if PCF_Face->nmetrics is negative.
895
8962009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
897
898	gxvalid: Guarantee `nFeatureFlags' size up to 32-bit.
899
900	* src/gxvalid/gxvmort.c (gxv_mort_featurearray_validate):
901	Extend the 3rd argument `nFeatureFlags' to FT_ULong.
902	* src/gxvalid/gxvmort.h: Ditto.
903
9042009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
905
906	sfnt: Insert explicit cast for LP64 system.
907
908	* src/sfnt/ttkern.c (tt_face_load_kern): Insert
909	cast from unsigned long to FT_UInt32.
910
9112009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
912
913	gxvalid: Guarantee `just' table size upto 32-bit.
914
915	* src/gxvalid/gxvjust.c (gxv_just_validate):
916	The type of `offset' is changed from FT_UInt to
917	FT_Offset, for 16-bit platforms.
918
9192009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
920
921	gxvalid: Guarantee `trak' table size upto 32-bit.
922
923	* src/gxvalid/gxvtrak.c (gxv_trak_validate):
924	The type of `offset' is changed from FT_UInt to
925	FT_Offset, for 16-bit platforms.
926
9272009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
928
929	type1: Fix a data type mismatching with its source.
930
931	* include/freetype/internal/t1types.h: The type of
932	T1_Face->buildchar is matched with T1_Decoder->top.
933
9342009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
935
936	pfr: Fix a data type mismatching with its source.
937
938	* src/pfr/pfrtypes.h: The type of PFR_KernItem->offset
939	is extended from FT_UInt32 to FT_Offset, because it is
940	calculated with the pointer difference, in
941	pfr_extra_item_load_kerning_pairs().
942
9432009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
944
945	pfr: Fix a data type mismatching with its source.
946
947	* src/pfr/pfrtypes.h: The type of PFR_PhyFont->chars_offset
948	is extended from FT_UInt32 to FT_Offset, because it is
949	calculated with the pointer difference in pfr_phy_font_load().
950
9512009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
952
953	pfr: Fix a data type mismatching with its source.
954
955	* src/pfr/pfrtypes.h: The type of PFR_PhyFont->bct_offset
956	is extended from FT_UInt32 to FT_Long, because it is
957	loaded by FT_STREAM_POS() in pfr_phy_font_load().
958
9592009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
960
961	smooth: Improve the format in debug message.
962
963	* src/smooth/ftgrays.c (gray_dump_cells): Improve the
964	format specifications to dump variables.
965
9662009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
967
968	sfnt: Fix a data type mismatching with its source.
969
970	* src/sfnt/sfobjs.c (sfnt_load_face): The type of
971	local `flags' is matched with FT_Face->face_flags.
972
9732009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
974
975	psaux: Fix a data type mismatching with its source.
976
977	* include/freetype/internal/psaux.h: The type of
978	T1_DecoderRec.buildchar is matched with
979	T1_DecoderRec.top.
980
9812009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
982
983	truetype: Extend TrueType GX packed deltas to FT_Offset.
984
985	* src/truetype/ttgxvar.c (ft_var_readpackeddeltas):
986	The type of 2nd argument `delta_cnt' is changed from
987	FT_Int to FT_Offset, because its source can be cvt
988	table size calculated from stream position.
989
9902009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
991
992	truetype: Extend mmvar_len to hold size_t values.
993
994	* src/truetype/ttgxvar.h: The type of
995	GX_BlendRec.mmvar_len is changed from FT_Int to
996	FT_Offset, because TT_Get_MM_Var() calculates it
997	by sizeof() results.
998
9992009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1000
1001	truetype: Check invalid function number in IDEF instruction.
1002
1003	* src/truetype/ttinterp.c (Ins_IDEF): Check
1004	if the operand fits to 8-bit opcode limitation.
1005
10062009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1007
1008	truetype: Check invalid function number in FDEF instruction.
1009
1010	* src/truetype/ttinterp.c (Ins_FDEF): Check
1011	if the operand fits 16-bit function number.
1012
10132009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1014
1015	truetype: Truncate the deltas of composite glyph at 16-bit values.
1016
1017	* src/truetype/ttgload.c (load_truetype_glyph):
1018	Insert cast from FT_Long (deltas[i].{x,y}) to
1019	FT_Int16 in the summation of deltas[] for composite
1020	glyphs.  Because deltas[i] is typed as FT_Pos,
1021	its component x, y are typed as FT_Long, but
1022	their sources are always FT_Int16 when they are
1023	loaded by ft_var_readpackeddeltas().  However,
1024	the limitation about the summed deltas is unclear.
1025
10262009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1027
1028	truetype: Truncate the instructions upto 16-bit per a glyph.
1029
1030	* src/truetype/ttgload.c (TT_Hint_Glyph): Truncate
1031	the instructions upto 16-bit length per a glyph.
1032
10332009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1034
1035	truetype: Cast the numerical operands to 32-bit for LP64 systems.
1036
1037	* src/truetype/ttinterp.c (Ins_SPHIX, INS_MIAP,
1038	Ins_MIRP): Insert cast from long (args[], the
1039	operands passed to TrueType operator) to FT_Int32
1040	(the argument of TT_MulFix14()).
1041
10422009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1043
1044	truetype: Cast the project vector to 32-bit for LP64 system.
1045
1046	* src/truetype/ttinterp.c (Project, DualProject):
1047	Insert casts from FT_Pos (the arguments `dx', `dy')
1048	to FT_UInt32 (the argument to TT_DotFix14()).
1049
10502009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1051
1052	truetype: Cast the scaling params to 32-bit for LP64 system.
1053
1054	* src/truetype/ttgload.c (TT_Process_Composite_Component):
1055	Insert casts from long (return value of FT_MulFix()) to
1056	FT_Int32 (the argument to FT_SqrtFixed()).
1057
10582009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1059
1060	sfnt: Cast a character code to FT_UInt32 for LP64 system.
1061
1062	* src/sfnt/ttcmap.c (tt_cmap14_char_map_nondef_binary,
1063	tt_cmap14_variants, tt_cmap14_char_variants,
1064	tt_cmap14_def_char_count, tt_cmap14_get_def_chars,
1065	tt_cmap14_get_nondef_chars, tt_cmap14_variant_chars)
1066	Insert casts when FT_UInt32 variable is loaded by
1067	TT_NEXT_{UINT24|ULONG}.  Because most of them are
1068	compared with FT_UInt32 values in public API, replacing
1069	FT_UFast is not recommended.
1070
10712009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1072
1073	sfnt: Cast a character code to FT_UInt32 for LP64 system.
1074
1075	* src/sfnt/ttcmap.c (tt_cmap4_init, tt_cmap4_next):
1076	Insert the casts from unsigned long constant to
1077	FT_UInt32.
1078
10792009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1080
1081	sfnt: Extend TT_BDF->strings_size to FT_ULong for huge BDF.
1082
1083	* include/freetype/internal/tttypes.h: The type
1084	of TT_BDF->string_size is extended from FT_UInt32
1085	to FT_ULong, because BDF specification does not
1086	restrict the length of string.
1087	* src/sfnt/ttbdf.c: The scratch variable `strings'
1088	to load TT_BDF->string_size is matched with
1089	TT_BDF->string_size.
1090
10912009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1092
1093	psaux: Handle the string length by FT_Offset variables.
1094
1095	* src/psaux/afmparse.c (afm_parser_next_key,
1096	afm_tokenize, afm_parse_track_kern,
1097	afm_parse_kern_pairs, afm_parse_kern_data,
1098	afm_parser_skip_section, afm_parser_parse):
1099	The length of key is handled by FT_Offset,
1100	instead of FT_UInt.  Although the length of
1101	PostScript strings or name object is 16-bit,
1102	AFM_STREAM_KEY_LEN() calculates the length
1103	from the pointer difference.
1104
1105	* src/psaux/afmparse.h (afm_parser_next_key):
1106	Ditto.
1107
11082009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1109
1110	pcf: Fix some data types mismatching with their sources.
1111
1112	* src/pcf/pcfread.c (pcf_get_bitmaps): The types
1113	of `nbitmaps', `i', `sizebitmaps' are matched with
1114	the type of area FT_Bitmap.pitch * FT_Bitmap.rows.
1115
11162009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1117
1118	pcf: Handle the string length by size_t variables.
1119
1120	* src/pcf/pcfread.c (pcf_interpret_style): The types
1121	of nn, len, lengths[4] are changed to size_t, because
1122	they are loaded by (or compared with) ft_strlen().
1123
1124	* src/pcf/pcfutil.c (BitOrderInvert, TwoByteSwap,
1125	FourByteSwap): The type of the 2nd argument `nbytes'
1126	is changed to size_t, for similarity with ANSI C
1127	string functions.
1128
1129	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): The type of
1130	`bytes' is changed to FT_Offset, because it is passed
1131	to FT_ALLOC(), via ft_glyphslot_alloc_bitmap().  At
1132	least, using unsigned type is better.
1133
11342009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1135
1136	pcf: Fix some data types mismatching with their sources.
1137
1138	* src/pcf/pcfread.c (pcf_seek_to_table_type,
1139	pcf_has_table_type): The type of 3rd argument
1140	`ntables' is matched with PCF_Toc->count.
1141
11422009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1143
1144	otvalid: Truncate the glyph index to 16-bit.
1145
1146	* src/otvalid/otvalid.c (otv_validate): Checks
1147	face->num_glyphs does not exceed 16-bit limit,
1148	pass FT_UInt num_glyphs to backend functions
1149	otv_{GPOS|GSUB|GDEF|JSTF|MATH}_validate().
1150
11512009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1152
1153	cache: Insert explicit casts for LP64 systems.
1154
1155	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup,
1156	FTC_SBitCache_Lookup): The type of FTC_ImageType->width
1157	is FT_Int, so the cast to unsigned larger type FT_ULong
1158	is introduced for the comparisons with 0x10000L for
1159	LP64 platform.
1160
11612009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1162
1163	cache: Fix some data types mismatching with their sources.
1164
1165	* src/cache/ftccache.h: The type of return value
1166	by FTC_Node_WeightFunc function is changed to
1167	FT_Offset.  The type of FTC_CacheClass->cache_size
1168	is changed to FT_Offset, too.
1169
1170	* src/cache/ftccback.h (ft_inode_weight,
1171	ftc_snode_weight): Ditto.
1172
1173	* src/cache/ftccmap.c (ftc_cmap_node_weight): Ditto.
1174
1175	* src/cache/ftcimage.c (ftc_inode_weight,
1176	FTC_INode_Weight): Ditto.
1177
1178	* src/cache/ftcsbits.c (ftc_snode_weight,
1179	FTC_SNode_Weight): Ditto.
1180
1181	* src/cache/ftcmru.h: The type of
1182	FTC_MruListClass->node_size is changed to FT_Offset,
1183	because it is passed to FT_ALLOC() to specify the
1184	size of buffer.
1185
11862009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1187
1188	XXX_cmap_encoding_char_next() return FT_UInt32 values.
1189
1190	* include/freetype/internal/services/svpscmap.h:
1191	The size of the charcode value returned by
1192	the function typed PS_Unicodes_CharNextFunc is
1193	matched with its input charcode value.
1194
1195	* src/cff/cffmap.c (cff_cmap_encoding_char_next,
1196	cff_cmap_unicode_char_next): Ditto.
1197
1198	* src/pfr/pfrmap.c (pfr_cmap_encoding_char_next):
1199	Ditto.
1200
1201	* src/psaux/t1cmap.c (t1_cmap_std_char_next,
1202	t1_cmap_custom_char_next, t1_cmap_unicode_char_next):
1203	Ditto.
1204
1205	* src/psnames/psmodule.c (ps_unicodes_char_next):
1206	Ditto.
1207
1208	* src/winfonts/winfnt.c (fnt_cmap_char_next):
1209	Ditto.
1210
1211	* src/sfnt/ttcmap.c (tt_cmap0_char_next,
1212	tt_cmap2_char_next, tt_cmap4_char_next,
1213	tt_cmap6_char_next, tt_cmap10_char_next,
1214	tt_cmap12_char_next, tt_cmap13_char_next): Ditto.
1215	(tt_cmap14_char_variants): Handle base unicode
1216	codepoint by FT_UInt32 variable to avoid overflow
1217	on 16-bit platforms.
1218	(tt_cmap14_ensure): The type of `num_results' is
1219	extend to FT_UInt32, to cover unsigned 32-bit
1220	`numVarSelectorRecords' in cmap14 table header.
1221
12222009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1223
1224	truetype: Extend TT_Face->num_locations for broken TTFs.
1225
1226	* include/freetype/internal/tttypes.h:
1227	TT_Face->num_locations are extended from FT_UInt
1228	to FT_ULong, to stand with broken huge loca table.
1229	Some people insists there are broken TTF including
1230	the glyphs over 16-bit limitation, in PRC market.
1231	* src/truetype/ttpload.c (tt_face_load_loca):
1232	Remove unrequired 16-bit truncation for FT_UInt
1233	TT_Face->num_locations.
1234
12352009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1236
1237	smooth: Fix some data types mismatching with their sources.
1238
1239	* src/smooth/ftgrays.c: The type of `TCoord' is
1240	matched to `TPos', because they are mixed in
1241	gray_set_cell().  The type of TCell->x is extended
1242	to `TPos', because gray_find_cell() sets it by
1243	TWorker.ex.  The type of TCell->cover is extended
1244	to `TCoord', because gray_render_scanline() adds
1245	TCoord value to it.  The type of TWork.cover is matched
1246	with TCell->cover.  The types of
1247	TWork.{max_cells,num_cells} are changed to FT_PtrDist,
1248	because they are calculated from the memory addresses.
1249	The type of TWork.ycount is changed to TPos, because
1250	it is calculated from TPos variables.
1251	(gray_find_cell): The type of `x' is matched with
1252	its initial value ras.ex.
1253	(gray_render_scanline): The types of `mod', `lift'
1254	and `rem' are changed to TCoord, because their values
1255	are set with explicit casts to TCoord.  When ras.area
1256	is updated by the differential values including
1257	`delta', they are explicitly cast to TArea, because
1258	the type of `delta' is not TArea but TCoord.
1259	(gray_render_line): The type of `mod' is extended
1260	from int to TCoord, because (TCoord)dy is added to mod.
1261	(gray_hline): The argument `acount' is extended to
1262	TCoord, to match with the parameters in the callers.
1263
12642009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1265
1266	cff: Fix some data types mismatching with their sources.
1267
1268	* src/cff/cffobjs.c (cff_face_init): The type of
1269	`scaling' is matched with the scaling parameter
1270	in FT_Matrix_Multiply_Scaled() and
1271	FT_Vector_Transform_Scaled().
1272
1273	* src/cff/cffparse.c (cff_parse_real): The type of
1274	`power_ten', `scaling', `exponent_add',
1275	`integer_length', `fraction_length',
1276	`new_fraction_length' and `shift' are matched with
1277	the type of `exponent' to avoid unexpected truncation.
1278	(cff_parse_fixed_scaled): The type of `scaling' is
1279	matched with the `scaling' argument to
1280	cff_parse_real().
1281	(cff_parse_fixed_dynamic): Ditto.
1282	(cff_parse_font_matrix): The type of `scaling' is
1283	matched with the `scaling' argument to
1284	cff_parse_dynamic().
1285
12862009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1287
1288	autofit: Fix some data types mismatching with their sources.
1289
1290	* src/autofit/afglobal.c: Correct the type of
1291	AF_FaceGlobalsRec.glyph_count to match with
1292	FT_Face->num_glyphs.
1293	(af_face_globals_compute_script_coverage):
1294	Insert explicit cast to compare
1295	FT_Long AF_FaceGlobalsRec.glyph_count versus
1296	FT_UInt gindex.  The type of `nn' is changed
1297	to scan glyph index upto AF_FaceGlobalsRec.glyph_count.
1298	(af_face_globals_get_metrics): The type of `script_max'
1299	is changed to cover size_t value.  Insert explicit cast
1300	to compare FT_Long AF_FaceGlobalsRec.glyph_count versus
1301	FT_UInt gindex.
1302
1303	* src/autofit/afhints.c (af_axis_hints_new_segment):
1304	Insert explicit cast to calculate `big_max' from
1305	integer and size_t values.
1306	(af_axis_hints_new_edge): Ditto.
1307
1308	* src/autofit/aflatin.c (af_latin_metrics_init_blues):
1309	The type of `best_y' is matched to FT_Vector.y.
1310	(af_latin_compute_stem_width): The type of `delta' is
1311	matched to `dist' and `org_dist'.
1312
13132009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1314
1315	autofit: Count the size of the memory object by ptrdiff_t.
1316
1317	* src/autofit/afcjk.c (af_cjk_hint_edges): The
1318	number of edges `n_edges' should be counted by
1319	FT_PtrDist variable instead of FT_Int.
1320
1321	* src/autofit/aflatin.c (af_latin_hint_edges):
1322	Ditto.
1323
1324	* src/autofit/aftypes.h: In AF_ScriptClassRec,
1325	the size of metric `script_metrics_size' should
1326	be counted by FT_Offset variable instead of FT_UInt.
1327
1328	* src/autofit/afhints.c
1329	(af_glyph_hints_align_strong_points): The cursors
1330	for the edges `min', `max', `mid' in the memory
1331	buffer should be typed FT_PtrDist.
1332
13332009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1334
1335	autofit: Fix for unused variable `first'.
1336
1337	* src/autofit/afhints.c (af_glyph_hints_reload): Insert
1338	FT_UNUSED() to hide the unused variable warning.
1339
13402009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1341
1342	Improve bitmap size or pixel variables for 16-bit systems.
1343
1344	* include/freetype/config/ftstdlib.h: Introduce
1345	FT_INT_MIN, to use in signed integer overflow in
1346	16-bit and 64-bit platforms.
1347
1348	* include/freetype/internal/fttrace.h: Add a tracer
1349	to ftsynth.c.
1350
1351	* src/base/ftbitmap.c (FT_Bitmap_Embolden): Check
1352	invalid strength causing integer overflow on 16-bit
1353	platform.
1354
1355	* src/base/ftcalc.c (ft_corner_orientation): Change
1356	the internal calculation from FT_Int to FT_Long, to
1357	avoid an overflow on 16-bit platforms.  The caller of
1358	this function should use only the sign of result,
1359	so the cast to FT_Int is acceptable.
1360
1361	* src/base/ftsynth.c: Introduce a tracer for synth module.
1362	(FT_GlyphSlot_Embolden): Check invalid strength causing
1363	integer overflow on 16-bit platform.
1364
1365	* src/bdf/bdfdrivr.c (BDF_Face_Init): The glyph index
1366	in FT2 API is typed as FT_UInt, although BDF driver
1367	can handle unsigned long glyph index internally.  To
1368	avoid integer overflow on 16-bit platform, too large
1369	glyph index should be excluded.
1370	(BDF_Glyph_Load): The glyph pitch in FT2 is typed as
1371	FT_UInt, although BDF driver can handle unsigned long
1372	glyph pitch internally.  To avoid integer overflow on
1373	16-bit platform, too large glyph pitch should not be
1374	returned.
1375
1376	* src/pfr/pfrsbit.c (pfr_slot_load_bitmap): The glyph
1377	pitch in FT2 is typed as FT_UInt, although PFR font
1378	format can include huge bitmap glyph with 24-bit pitch
1379	(however, a glyph spends 16.7 pixel, it's not realistic).
1380	To avoid integer overflow on 16-bit platform, huge
1381	bitmap glyph should be excluded.
1382
1383	* src/smooth/ftgrays.c (gray_hline): As FT_Span.x is
1384	truncated to fit its type (16-bit short), FT_Span.y
1385	should be truncated to fit its type (FT_Int).
1386
1387	* src/cff/cffdrivr.c (cff_get_ros): CFF specification
1388	defines the supplement in ROS as a real number.
1389	Truncate it to fit public FT2 API.
1390
1391	* src/cff/cffparse.c (cff_parse_cid_ros): Warn the
1392	supplement if it is truncated or rounded in cff_get_ros().
1393
1394	* src/cff/cfftypes.h: Change the type of internal variable
1395	`supplement' from FT_Long to FT_ULong to fit the signedness
1396	to the type in public API.
1397
13982009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1399
1400	psaux: Prevent invalid arguments to afm_parser_read_vals().
1401
1402	* src/psaux/afmparse.c (afm_parser_read_vals): Change
1403	the type of `n' to prevent negative number how many
1404	arguments should be parsed.
1405
1406	* src/psaux/afmparse.h (afm_parser_read_vals): Ditto.
1407
14082009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1409
1410	base: Prevent some overflows on LP64 systems.
1411
1412	* src/base/ftadvanc.c (FT_Get_Advances): Cast the
1413	unsigned long constant FT_LOAD_ADVANCE_ONLY to FT_UInt32
1414	for LP64 platforms.
1415
1416	* src/base/ftcalc.c (FT_Sqrt32): All internal variables
1417	are changed to FT_UInt32 from FT_ULong.
1418	(FT_MulDiv): Insert casts to FT_Int32 for LP64 platforms.
1419	This function is designed for 32-bit integer, although
1420	their arguments and return value are FT_Long.
1421
1422	* src/base/ftobjs.c (FT_Get_Char_Index): Check `charcode'
1423	is within unsigned 32-bit integer for LP64 platforms.
1424	(FT_Face_GetCharVariantIndex): Check `charcode' and
1425	`variantSelector' are within 32-bit integer for LP64
1426	platforms.
1427	(FT_Face_GetCharsOfVariant): Check `variantSelector' is
1428	within unsigned 32-bit integer for LP64 platforms.
1429
1430	* src/base/fttrigon.c (ft_trig_downscale): The FT_Fixed
1431	variable `val' and unsigned long constant FT_TRIG_SCALE
1432	are cast to FT_UInt32, when calculates FT_UInt32.
1433	(FT_Vector_Rotate): The long constant 1L is cast to
1434	FT_Int32 to calculate FT_Int32 `half'.
1435
14362009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1437
1438	cff: Cast the long variables to 32-bit for LP64 systems.
1439
1440	* src/cff/cffdrivr.c (cff_get_advances): Insert
1441	explicit cast to modify a 32-bit flag by unsigned
1442	long constant.
1443
1444	* src/cff/cffobjs.c (cff_face_init): Ditto.
1445
1446	* src/cff/cffgload.c (cff_decoder_parse_charstrings):
1447	Replace the casts to FT_Long by the casts to FT_Int32
1448	for LP64 platforms.
1449
14502009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1451
1452	pcf: Improve PCF_PropertyRec.value names on LP64 platforms.
1453
1454	* src/pcf/pcf.h: In PCF_PropertyRec.value, the member
1455	`integer' is replaced by `l', `cardinal' is replaced
1456	by `ul', to fix the difference between the name and
1457	the types on LP64 platforms.
1458
1459	* src/pcf/pcfdrivr.c (pcf_get_bdf_property): Reflect
1460	PCF_PropertyRec.value change, with appropriate casts
1461	to FT_Int32/FT_UInt32.  Their destinations
1462	BDF_PropertyRec.{integer|cardinal} are public and
1463	explicitly defined as FT_Int32/FT_UInt32.
1464
1465	* src/pcf/pcfread.c (pcf_get_properties, pcf_load_font):
1466	Reflect PCF_PropertyRec.value change.
1467
14682009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1469
1470	pcf: Fix some data types mismatching with their sources.
1471
1472	* src/pcf/pcfdrivr.c (pcf_cmap_char_index): The type of
1473	`code' is matched to PCF_Encoding->enc.
1474	(pcf_cmap_char_next): The type of `charcode' is matched
1475	to PCF_Encoding->enc.  When *acharcode is set by charcode,
1476	an overflow is checked and cast to unsigned 32-bit
1477	integer.
1478
14792009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1480
1481	bdf: Improve bdf_property_t.value names for LP64 platforms.
1482
1483	* src/bdf/bdf.h: In bdf_property_t.value, the member
1484	`int32' is replaced by `l', `card32' is replaced by
1485	`ul', to fix the difference between the name and the
1486	types on LP64 platforms.
1487
1488	* src/bdf/bdfdrivr.c (BDF_Face_Init): Reflect
1489	bdf_property_t.value change.
1490	(bdf_get_bdf_property): Reflect bdf_property_t.value
1491	change, with appropriate casts to FT_Int32/FT_UInt32.
1492	Their destinations BDF_PropertyRec.{integer|cardinal}
1493	are public and explicitly defined as FT_Int32/FT_UInt32.
1494
1495	* src/bdf/bdflib.c (_bdf_add_property): Reflect
1496	bdf_property_t.value change.
1497
14982009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1499
1500	bdf: Fix some data types mismatching with their sources.
1501
1502	* src/bdf/bdfdrivr.c (bdf_cmap_char_index): The type
1503	of `code' is matched with BDF_encoding_el->enc.
1504	(bdf_cmap_char_next): The type of `charcode' is
1505	matched with BDF_encoding_el->enc.  When *acharcode
1506	is set by charcode, an overflow is checked and
1507	cast to unsigned 32-bit integer.
1508
15092009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1510
1511	autofit: Improve Unicode range definitions.
1512
1513	* src/autofit/aftypes.h (AF_UNIRANGE_REC): New macro
1514	to declare a range by two unsigned 32-bit integer,
1515	to avoid 64-bit range definition on LP64 platforms.
1516
1517	* src/autofit/aflatin.c (af_latin_uniranges): Ditto.
1518
1519	* src/autofit/aflatin2.c (af_latin2_uniranges): Ditto.
1520
1521	* src/autofit/afindic.c (af_indic_uniranges): Ditto.
1522
1523	* src/autofit/afcjk.c (af_cjk_uniranges): Declare
1524	the ranges by AF_UNIRANGE_REC.
1525
15262009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1527
1528	smooth: Fix a data type mismatching with its source.
1529
1530	* src/smooth/ftgrays.c (gray_sweep): The type of
1531	`area' is matched with the 3rd argument `area'
1532	of gray_hline().
1533
15342009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1535
1536	smooth: Fix a data type mismatching with its source.
1537
1538	* src/smooth/ftgrays.c (gray_render_line): The type
1539	of `area' is matched with TWorker.area.
1540
15412009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1542
1543	cache: Disable the legacy compatibility if 16-bit system.
1544
1545	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Exclude
1546	the legacy behaviour from 16-bit platform, because the
1547	current hack cannot detect the caller uses this function
1548	via legacy convention.
1549	(FTC_SBitCache_Lookup): Ditto.
1550
15512009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1552
1553	cache: Check 32-bit glyph index on 16-bit systems.
1554
1555	* src/cache/ftcbasic.c (ftc_basic_family_get_count):
1556	Check overflow caused by the face including large
1557	number of glyphs > 64k.
1558
15592009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1560
1561	cache: Fix some data types mismatching with their sources.
1562
1563	* src/cache/ftccache.c (ftc_cache_resize): The types of
1564	`p', `mask', `count' are matched with FTC_Cache->{p,mask}.
1565	(FTC_Cache_Clear): The type of `old_index' is matched to
1566	FTC_Cache->{p,mask}.
1567
1568	* src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): The type
1569	of `_idx' is matched with FTC_Cache->{p,mask}.
1570
15712009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1572
1573	cache: Fix some data types mismatching with their sources.
1574
1575	* src/cache/ftcsbits.c (ftc_snode_load): The types
1576	of `xadvance' and `yadvance' are matched with
1577	FT_GlyphSlot->advance.{x|y}.
1578
15792009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1580
1581	cache: Cast NULL to a required function type explicitly.
1582
1583	* src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID):
1584	Insert explicit cast from NULL to function type.
1585
15862009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1587
1588	fttypes.h: Cast FT_MAKE_TAG output to FT_Tag explicitly.
1589
1590	* include/freetype/fttypes.h (FT_MAKE_TAG):
1591	Cast the result to FT_Tag.
1592
15932009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1594
1595	psnames: Handle Unicode codepoints by FT_UInt32 variables.
1596
1597	* src/psnames/psmodule.c (BASE_GLYPH): Cast the result
1598	to unsigned 32-bit integer for LP64 platform.
1599	(ps_unicode_value): Return the value by unsigned 32-bit
1600	integer instead of unsigned long.
1601
16022009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1603
1604	psaux: Use size_t variable to pass the buffer size.
1605
1606	* src/psaux/psaux.h (to_bytes): The type of `max_bytes'
1607	(the argument to pass the buffer size) is changed to
1608	size_t, to match with ANSI C string functions.
1609
1610	* src/psaux/psconv.h (PS_Conv_StringDecode,
1611	PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Ditto.
1612
1613	* src/psaux/psconv.c (PS_Conv_StringDecode,
1614	PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Ditto.
1615
1616	* src/psaux/psobjs.h (ps_parser_to_bytes): Ditto.
1617
1618	* src/psaux/psobjs.c (ps_parser_to_bytes): Ditto.
1619
16202009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1621
1622	type1: Use size_t variable to pass the string length.
1623
1624	* psaux.h: The type of `len' (the argument to pass
1625	the buffer size to the function in AFM_ParserRec)
1626	is changed to size_t, to match with ANSI C string
1627	functions.
1628
1629	* t1afm.c (t1_get_index): Ditto.
1630
1631	* test_afm.c (dummy_get_index): Ditto.
1632
1633	* afmparse.c (afm_parser_read_vals): To call
1634	AFM_ParserRec.get_index, the length of token
1635	`len' is cast to size_t.
1636
16372009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1638
1639	cid: Fix some data types mismatching with their sources.
1640
1641	* src/cid/cidparse.c (cid_parser_new): The types of
1642	`read_len' and `stream_len' are matched to
1643	FT_Stream->size.  Unrequired cast is removed.
1644
16452009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1646
1647	cff: Fix for unused variable `rest'.
1648
1649	* src/cff/cffparse.c (cff_parse_real): Insert
1650	FT_UNUSED() to hide the unused variable warning.
1651
16522009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1653
1654	cff: Fix some data types mismatching with their sources.
1655
1656	* src/cff/cffgload.c (cff_slot_load): The types of
1657	`top_upm' and `sub_upm' are matched with
1658	CFF_FontRecDict->units_per_em.
1659
1660	* src/cff/cffobjs.c (cff_size_select): Ditto.
1661	(cff_size_request): Ditto.
1662
16632009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1664
1665	bdf: Fix some data types mismatching with their sources.
1666
1667	* bdflib.c (_bdf_list_ensure): The type of `num_items'
1668	is matched with _bdf_list_t.used.  Also the types of
1669	`oldsize', `newsize', `bigsize' are matched too.
1670	(_bdf_readstream): `cursor' is used as an offset to
1671	the pointer, it should be typed as FT_Offset.  Also
1672	the types of `bytes', `start', `end', `avail' are matched.
1673
1674	* bdfdrivr.c: The type of BDF_CMap->num_encodings is
1675	matched with FT_CMap->clazz->size.
1676	(bdf_cmap_char_index): The types of `min', `max', `mid'
1677	are matched with BDF_CMap->num_encodings.  The type of
1678	`result' is matched with encoding->glyph.
1679	(bdf_cmap_char_next): Ditto, the type of `code' is
1680	matched with BDF_encoding_el.enc.
1681	(bdf_interpret_style): The type of `lengths' is changed
1682	to size_t, to take the value by ft_strlen().  Also the
1683	types of `len', `nn', `mm' are matched.
1684
16852009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1686
1687	sfnt: Count the size of the memory object by ptrdiff_t.
1688
1689	* src/sfnt/ttbdf.c (tt_face_find_bdf_prop): The type of
1690	`property_len' is changed from FT_UInt to FT_Offset,
1691	to match with size_t, which is appropriate type for the
1692	object in the memory buffer.
1693
16942009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1695
1696	lzw: Count the size of the memory object by ptrdiff_t.
1697
1698	* src/lzw/ftzopen.h: The types of FT_LzwState->{buf_total,
1699	stack_size} are changed from FT_UInt to FT_Offset, to match
1700	with size_t, which is appropriate type for the object in
1701	the memory buffer.
1702
1703	* src/lzw/ftzopen.c (ft_lzwstate_stack_grow): The types of
1704	`old_size' and `new_size' are changed from FT_UInt to
1705	FT_Offset, to match with size_t, which is appropriate type
1706	for the object in the memory buffer.
1707
17082009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1709
1710	otvalid: Count the table size on memory by ptrdiff_t.
1711
1712	* src/otvalid/otvgpos.c (otv_ValueRecord_validate):
1713	Change the type of table size from FT_UInt to
1714	FT_PtrDist because it is calculated by the memory
1715	addresses.
1716
17172009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1718
1719	otvalid: Prevent an overflow by GPOS/GSUB 32b-bit offset.
1720
1721	* src/otvalid/otvgpos.c (otv_ExtensionPos_validate):
1722	Extend ExtensionOffset from FT_UInt to FT_ULong, to
1723	cover 32-bit offset on 16-bit platform.
1724
1725	* src/otvalid/otvgsub.c (otv_ExtensionSubst_validate):
1726	Ditto.
1727
17282009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1729
1730	ftobjs.c: Prevent an overflow in glyph index handling.
1731
1732	* src/base/ftobjs.c (FT_Face_GetCharsOfVariant):
1733	Improve the cast in comparison to avoid the truncation.
1734
17352009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1736
1737	Improve the variable types in raccess_make_file_name().
1738
1739	* src/base/ftrfork.c (raccess_make_file_name):
1740	Change the type of cursor variable `tmp' to const char*,
1741	to prevent the unexpected modification of original pathname.
1742	(raccess_make_file_name): Change the type of new_length
1743	to size_t.
1744
17452009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1746
1747	ftpatent.c: Fix for unused variable `error'.
1748
1749	* src/base/ftpatent.c (_tt_check_patents_in_range):
1750	Fix warning for unused variable `error'.
1751
17522009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1753
1754	type1: Check invalid string longer than PostScript limit.
1755
1756	* src/type1/t1afm.c (t1_get_index): Check invalid string
1757	which exceeds the limit of PostScript string/name objects.
1758
17592009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1760
1761	gzip: Use FT2 zcalloc() & zfree() in ftgzip.c by default.
1762
1763	* src/gzip/ftgzip.c (zcalloc, zcfree): Disable all
1764	zcalloc() & zfree() by zlib in zutil.c, those in
1765	ftgzip.c by FT2 are enabled by default.  To use
1766	zlib zcalloc() & zfree(), define USE_ZLIB_ZCALLOC.
1767	See discussion:
1768	https://lists.gnu.org/archive/html/freetype-devel/2009-02/msg00000.html
1769
17702009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1771
1772	gzip: Distinguish PureC from TurboC on MSDOS.
1773
1774	* src/gzip/zutil.c (zcalloc, zcfree): Enable only for
1775	MSDOS platform.
1776
17772009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1778
1779	gxvalid: Insert PureC pragma to allow unevaluated variables.
1780
1781	* builds/atari/ATARI.H: Insert PureC pragma not to
1782	warn against set-but-unevaluated variable in gxvalid
1783	module.
1784
17852009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1786
1787	gxvalid: Pass the union by the pointer instead of the value.
1788
1789	* src/gxvalid/gxvcommn.h:
1790	  - Declare new type `GXV_LookupValueCPtr'.
1791	  - Update the type of the 2nd argument to pass GXV_LookupValueDesc
1792	    data to the function prototyped as GXV_Lookup_Value_Validate_Func,
1793	    from GXV_LookupValueDesc to GXV_LookupValueCPtr.
1794	  - Likewise for the function prototyped as
1795	    GXV_Lookup_Fmt4_Transit_Func.
1796
1797	  - Declare new type `GXV_StateTable_GlyphOffsetCPtr'.
1798	  - Update the type of the 3rd argument to pass
1799	    GXV_StateTable_GlyphOffsetDesc data to the function prototyped
1800	    as GXV_StateTable_Entry_Validate_Func, from
1801	    GXV_StateTable_GlyphOffsetDesc to GXV_StateTable_GlyphOffsetCPtr.
1802
1803	  - Declare new type `GXV_XStateTable_GlyphOffsetCPtr'.
1804	  - Update the type of the 3rd argument to pass
1805	    GXV_XStateTable_GlyphOffsetDesc data to the function prototyped
1806	    as GXV_XStateTable_Entry_Validate_Func,
1807	    from GXV_XStateTable_GlyphOffsetDesc
1808	    to GXV_XStateTable_GlyphOffsetCPtr.
1809
1810	* src/gxvalid/gxvcommn.c (gxv_LookupTable_fmt0_validate,
1811	gxv_XClassTable_lookupval_validate,
1812	gxv_XClassTable_lookupfmt4_transit):
1813	Update from GXV_LookupValueDesc to GXV_LookupValueCPtr.
1814
1815	* src/gxvalid/gxvbsln.c (gxv_bsln_LookupValue_validate,
1816	gxv_bsln_LookupFmt4_transit): Ditto.
1817
1818	* src/gxvalid/gxvjust.c
1819	(gxv_just_pcTable_LookupValue_entry_validate,
1820	gxv_just_classTable_entry_validate,
1821	gxv_just_wdcTable_LookupValue_validate): Ditto.
1822
1823	* src/gxvalid/gxvkern.c
1824	(gxv_kern_subtable_fmt1_entry_validate): Ditto.
1825
1826	* src/gxvalid/gxvlcar.c (gxv_lcar_LookupValue_validate,
1827	gxv_lcar_LookupFmt4_transit): Ditto.
1828
1829	* src/gxvalid/gxvopbd.c (gxv_opbd_LookupValue_validate,
1830	gxv_opbd_LookupFmt4_transit): Ditto.
1831
1832	* src/gxvalid/gxvprop.c (gxv_prop_LookupValue_validate,
1833	gxv_prop_LookupFmt4_transit): Ditto.
1834
1835	* src/gxvalid/gxvmort4.c
1836	(gxv_mort_subtable_type4_lookupval_validate): Ditto.
1837
1838	* src/gxvalid/gxvmort0.c
1839	(gxv_mort_subtable_type0_entry_validate): Update
1840	from GXV_StateTable_GlyphOffsetDesc
1841	to GXV_StateTable_GlyphOffsetCPtr.
1842
1843	* src/gxvalid/gxvmort1.c
1844	(gxv_mort_subtable_type1_entry_validate): Ditto.
1845
1846	* src/gxvalid/gxvmort2.c
1847	(gxv_mort_subtable_type2_entry_validate): Ditto.
1848
1849	* src/gxvalid/gxvmort5.c
1850	(gxv_mort_subtable_type5_entry_validate): Ditto.
1851
1852	* src/gxvalid/gxvmorx2.c
1853	(gxv_morx_subtable_type2_entry_validate): Ditto.
1854
1855	* src/gxvalid/gxvmorx5.c
1856	(gxv_morx_subtable_type5_entry_validate): Ditto.
1857
1858	* src/gxvalid/gxvmorx1.c
1859	(gxv_morx_subtable_type1_entry_validate): Ditto.
1860	(gxv_morx_subtable_type1_LookupValue_validate,
1861	gxv_morx_subtable_type1_LookupFmt4_transit):
1862	Update from GXV_LookupValueDesc to GXV_LookupValueCPtr.
1863
1864	* src/gxvalid/gxvmorx0.c
1865	(gxv_morx_subtable_type0_entry_validate): Update
1866	from GXV_XStateTable_GlyphOffsetDesc
1867	to GXV_XStateTable_GlyphOffsetCPtr.
1868
18692009-07-29  Fabrice Bellet  <fabrice@bellet.info>
1870
1871	Fix Redhat bugzilla #513582 and Savannah bug #26849.
1872
1873	* src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP) <FTC_INLINE>: Fix
1874	aliasing bug.
1875
18762009-07-19  Werner Lemberg  <wl@gnu.org>
1877
1878	Document recent library changes.
1879
1880	* docs/CHANGES: Do it.
1881
18822009-07-17  Werner Lemberg  <wl@gnu.org>
1883
1884	Fix Savannah bug #23786.
1885
1886	* src/truetype/ttobjs.c (tt_size_init_bytecode): Don't reset x_ppem
1887	and y_ppem.  Otherwise the `*_CVT_Stretched' functions in ttinterp.c
1888	get never called.
1889	An anonymous guy suggested this change on Savannah, and it seems to
1890	be the right solution.
1891
18922009-07-15  Werner Lemberg  <wl@gnu.org>
1893
1894	* docs/release: Updated.
1895
18962009-07-15  Werner Lemberg  <wl@gnu.org>
1897
1898	README.CVS -> README.git
1899
1900	* README.CVS: Renamed to...
1901	* README.git: This.
1902	Updated.
1903
19042009-07-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1905
1906	Borland C++ compiler patch proposed by Mirco Babin.
1907	https://lists.gnu.org/archive/html/freetype/2009-07/msg00016.html.
1908
1909	* builds/exports.mk: Delete unused flags, CCexe_{CFLAGS,LDFLAGS}.
1910	Fix APINAMES_C and APINAMES_EXE pathnames to reflect the platform
1911	specific pathname syntax.
1912	* builds/compiler/bcc.mk: Remove unused flag, CCexe_LDFLAGS.
1913	Define TE = `-e' separately (bcc32 cannot specify the pathname of
1914	binary executable by T = `-o').
1915	Extend the large page size in linking freetype.lib.
1916	Add extra CLEAN target to delete bcc specific temporary files.
1917	* builds/compiler/bcc-dev.mk: Ditto.
1918
19192009-07-14  Werner Lemberg  <wl@gnu.org>
1920
1921	Fix Savannah bug #27026.
1922
1923	* builds/win32/vc2005/freetype.sln: Use correct version number.
1924
19252009-07-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1926
1927	Add a script to check the undefined and unused trace macros.
1928
1929	* src/tools/chktrcmp.py: A script to check trace_XXXX macros
1930	that are used in C source but undefined in fttrace.h, or
1931	defined in fttrace.h but unused in C sources.  See
1932	https://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00013.html.
1933	* docs/DEBUG: Mention on chktrcmp.py.
1934	* docs/release: Ditto.
1935
19362009-07-09  Werner Lemberg  <wl@gnu.org>
1937
1938	[ftraster] Make it compile again with -D_STANDALONE_.
1939
1940	* src/raster/ftraster.c [_STANDALONE_]: Define
1941	FT_CONFIG_STANDARD_LIBRARY_H.
1942	Include `string.h'.
1943	Don't include `rastpic.h'.
1944	Define FT_DEFINE_RASTER_FUNCS.
1945
19462009-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1947
1948	smooth: Check glyph size by width/height, instead of pitch/height.
1949	Suggested by der Mouse <mouse@Rodents-Montreal.ORG>.
1950
1951	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Improve
1952	the check for too large glyph.  Replace the pair of `pitch' and
1953	`height' by the pair of `width' and `height'.  `pitch' cannot
1954	be greater than `height'.  The required is checking the product
1955	`pitch' * `height' <= FT_ULONG_MAX, but we use cheap checks for
1956	the realistic case only.
1957
19582009-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1959
1960	Register 2 missing trace components, t1afm and ttbdf.
1961
1962	* include/freetype/internal/fttrace.h: Add FT_TRACE_DEF( t1afm )
1963	and FT_TRACE_DEF( ttbdf ).  See
1964	https://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00013.html
1965
19662009-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1967
1968	Register a trace component for ftgloadr.c.
1969
1970	* include/freetype/internal/fttrace.h: Add FT_TRACE_DEF( gloader ).
1971	The macro `trace_gloader' was already used in the initial version
1972	on 2002-02-24.
1973
19742009-07-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1975
1976	Prevent the overflows by a glyph with too many points or contours.
1977	The bug is reported by Boris Letocha <b.letocha@gmc.net>.  See
1978	https://lists.gnu.org/archive/html/freetype-devel/2009-06/msg00031.html
1979	https://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00002.html
1980
1981	* include/freetype/ftimage.h (FT_OUTLINE_CONTOURS_MAX,
1982	FT_OUTLINE_POINTS_MAX): New macros to declare the maximum
1983	values of FT_Outline.{n_contours,n_points}.
1984	* src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Check the
1985	total numbers of points and contours cause no overflows in
1986	FT_Outline.{n_contours,n_points}.
1987
1988	* include/freetype/internal/ftgloadr.h (FT_GLYPHLOADER_CHECK_P,
1989	FT_GLYPHLOADER_CHECK_C): Compare the numbers of points and
1990	contours as unsigned long number, instead of signed int, to
1991	prevent the overflows on 16-bit systems.
1992
19932009-07-05  Bram Tassyns  <bramt@enfocus.be>
1994
1995	Improve compatibility to Acroread.
1996	This fixes Savannah bug #26944.
1997
1998	* src/cff/cffload.c (cff_charset_compute_cids): For multiple GID to
1999	single CID mappings, make the lowest value win.
2000
20012009-06-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2002
2003	ftpatent: Fix a bug by wrong usage of service->table_info().
2004	https://lists.gnu.org/archive/html/freetype-devel/2008-12/msg00039.html
2005
2006	* include/freetype/internal/services/svsfnt.h: Extend
2007	FT_SFNT_TableInfoFunc() to take new argument to obtain the offset
2008	to the specified table.
2009	* src/sfnt/sfdriver.c (sfnt_table_info): Extend to return the
2010	table-offset to the caller function.
2011	* src/base/ftpatent.c (_tt_check_patents_in_table): Use new
2012	service->table_info().
2013	* src/base/ftobjs.c (FT_Sfnt_Table_Info): Synchronize to new
2014	service->table_info().
2015
20162009-06-28  Werner Lemberg  <wl@gnu.org>
2017
2018	[psaux, cff] Protect against nested `seac' calls.
2019
2020	* include/freetype/internal/psaux.h (T1_Decoder), src/cff/cffgload.h
2021	(CFF_Decoder): Add `seac' boolean variable.
2022
2023	* src/cff/cffgload.c (cff_operator_seac), src/psaux/t1decode.c
2024	(t1operator_seac): Use it.
2025
20262009-06-28  Werner Lemberg  <wl@gnu.org>
2027
2028	Thinko.
2029
2030	* src/psaux/t1decode.c (t1operator_seac)
2031	[FT_CONFIG_OPTION_INCREMENTAL]: Test for existence of incremental
2032	interface.
2033
20342009-06-28  Werner Lemberg  <wl@gnu.org>
2035
2036	* devel/ftoption.h [FT_CONFIG_OPTION_INCREMENTAL]: Define.
2037
20382009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2039
2040	Add tools to preprocess the source files for AtariST PureC.
2041
2042	* builds/atari/deflinejoiner.awk: New file to filter C source files
2043	for broken C preprocessor of PureC compiler.
2044
2045	* builds/atari/gen-purec-patch.sh: New file to generate a patch set
2046	for PureC, by using deflinejoiner.awk.
2047
20482009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2049
2050	Keep existing modules.cfg in the building tree.
2051
2052	* configure: If `configure' is executed outside of the source tree,
2053	an existing `modules.cfg' file in the build directory should be
2054	kept, not overwritten by the version in the source tree.
2055
20562009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2057
2058	Filter --srcdir= option before invoking builds/unix/configure.
2059
2060	* configure: If builds/unix/configure is invoked with --srcdir
2061	option, the option should take `builds/unix' directory instead of
2062	the top source directory.  Thus the configure script in the top
2063	directory should modify the --srcdir= option if
2064	`builds/unix/configure' is invoked.
2065
20662009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2067
2068	Improve configure.raw for cross-building on exe-suffixed systems.
2069
2070	* builds/unix/configure.raw: Fix a bug in sed script to extract
2071	native suffix for binary executables, patch by Peter Breitenlohner.
2072	https://lists.gnu.org/archive/html/freetype-devel/2009-04/msg00036.html
2073
20742009-06-26  Werner Lemberg  <wl@gnu.org>
2075
2076	[truetype] Remove TT_SubGlyphRec.
2077
2078	* src/truetype/ttobjs.h (TT_SubGlyphRec): Removed, unused.
2079
20802009-06-26  Werner Lemberg  <wl@gnu.org>
2081
2082	* */*: For warning messages, replace FT_ERROR with FT_TRACE0.
2083
2084	FT_ERROR is now used only if a function produces a non-zero `error'
2085	value.
2086
2087	Formatting, improving and harmonizing debug strings.
2088
20892009-06-25  Werner Lemberg  <wl@gnu.org>
2090
2091	Provide version information better.
2092
2093	* src/base/ftinit.c (FT_Init_FreeType): Don't set version here
2094	but...
2095	* src/base/ftobjs.c (FT_New_Library): Here.
2096
20972009-06-22  Werner Lemberg  <wl@gnu.org>
2098
2099	Use 16.16 format while parsing Type 1 charstrings.
2100	This fixes Savannah bug #26867.
2101
2102	Previously, only integers have been used which can lead to serious
2103	rounding errors.
2104
2105	However, fractional values are only used internally; after the
2106	charstrings (of either Type 1 or 2) have been processed, the
2107	resulting coordinates get rounded to integers currently -- before
2108	applying scaling.  This should be fixed; at the same time a new load
2109	flag should be introduced, to be used in combination with
2110	FT_LOAD_NO_SCALE, which indicates that font units are returned in
2111	16.16 format.  Similarly, the incremental interface should be
2112	extended to allow fractional values for metrics.
2113
2114	* include/freetype/internal/psaux.h (T1_BuilderRec): Remove `shift'
2115	field.
2116	* include/freetype/internal/pshints.h (T1_Hints_SetStemFunc,
2117	T1_Hints_SetStem3Func): Use FT_Fixed for coordinates.
2118
2119	* src/psaux/psobjs.c: Include FT_INTERNAL_CALC_H.
2120	(t1_build_add_point): Always convert fixed to integer.
2121	* src/psaux/t1decode.c (t1_decoder_parse_charstrings):
2122	Use 16.16 format everywhere (except for large integers followed by a
2123	`div').
2124	[CAN_HANDLE_NON_INTEGRAL_T1_OPERANDS]: Remove #ifdef and activate
2125	code unconditionally.
2126	Add support for random numbers and update remaining code
2127	accordingly; this should work now.
2128	(t1operator_seac): Updated.
2129	* src/psaux/pshrec.c: Include FT_INTERNAL_CALC_H.
2130	(ps_hints_t1stem3, t1_hints_stem): Updated.
2131
2132	* src/cid/cidgload.c: Include FT_INTERNAL_CALC_H.
2133	(cid_load_glyph) [FT_CONFIG_OPTION_INCREMENTAL],
2134	(cid_face_compute_max_advance, cid_slot_load_glyph): Updated.
2135
2136	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String)
2137	[FT_CONFIG_OPTION_INCREMENTAL], (T1_Get_Advances, T1_Load_Glyph):
2138	Updated.
2139	* src/type1/t1load.c: Include FT_INTERNAL_CALC_H.
2140	* src/type1/t1objs.c (T1_Face_Init): Updated.
2141
21422009-06-21  Werner Lemberg  <wl@gnu.org>
2143
2144	* src/pshinter/pshrec.c: Use PSH_Err_Ok.
2145
21462009-06-21  Werner Lemberg  <wl@gnu.org>
2147
2148	Code beautification.
2149
2150	* src/type1/t1load.c (FT_INT_TO_FIXED): Removed.
2151	Replace everywhere with INT_TO_FIXED.
2152	(FT_FIXED_TO_INT): Move to ...
2153	* include/freetype/internal/ftcalc.h (FIXED_TO_INT): Here.
2154	Update all users.
2155
21562009-06-20  Werner Lemberg  <wl@gnu.org>
2157
2158	Remove unused variables.
2159
2160	* include/freetype/internal/psaux.h (T1_BuilderRec),
2161	src/cff/cffgload.h (CFF_Builder): Remove `last'.
2162	Update all users.
2163
21642009-06-20  Werner Lemberg  <wl@gnu.org>
2165
2166	[psaux] Check large integers while parsing charstrings.
2167
2168	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Large
2169	integers must be followed by a `div' operator.
2170
21712009-06-20  Werner Lemberg  <wl@gnu.org>
2172
2173	[cff] Revert last change.
2174
2175	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Do it.
2176	Next time, don't confuse Type 2 charstring opcodes with TOP DICT
2177	values...
2178
21792009-06-20  Werner Lemberg  <wl@gnu.org>
2180
2181	* src/autofit/aflatin.c (af_latin_metrics_check_digits): Fix
2182	compiler warning.
2183
21842009-06-20  Werner Lemberg  <wl@gnu.org>
2185
2186	* builds/compiler/gcc.mk (CFLAGS): Use -O3, not -O6.
2187
21882009-06-19  Werner Lemberg  <wl@gnu.org>
2189
2190	[cff] Fix handling of reserved byte 0xFF.
2191
2192	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Abort if byte
2193	0xFF is encountered.
2194
21952009-06-19  Werner Lemberg  <wl@gnu.org>
2196
2197	Improve debug messages for Type1 charstrings.
2198
2199	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Emit newlines
2200	after instructions.
2201	Prettify output.
2202
22032009-06-19  Werner Lemberg  <wl@gnu.org>
2204
2205	More ftgray fixes for FT_STATIC_RASTER.
2206	Problems reported by suyu@cooee.cn.
2207
2208	* src/smooth/ftgrays.c (gray_move_to, gray_raster_render): Use
2209	RAS_VAR.
2210
22112009-06-18  Werner Lemberg  <wl@gnu.org>
2212
2213	* docs/CHANGES: Updated.
2214
22152009-06-18  Werner Lemberg  <wl@gnu.org>
2216
2217	Fix B/W rasterization of subglyphs with different drop-out modes.
2218
2219	Normally, the SCANMODE instruction (if present) to set the drop-out
2220	mode in a TrueType font is located in the `prep' table only and thus
2221	valid for all glyphs.  However, there are fonts like `pala.ttf'
2222	which additionally contain this instruction in the hinting code of
2223	some glyphs (but not all).  As a result it can happen that a
2224	composite glyph needs multiple drop-out modes for its subglyphs
2225	since the rendering state gets reset for each subglyph.
2226
2227	FreeType collects the hinted outlines from all subglyphs, then it
2228	sends the data to the rasterizer.  It also sends the drop-out mode
2229	-- after hinting has been applied -- and here is the error: It sends
2230	the drop-out mode of the last subglyph only; drop-out modes of all
2231	other subglyphs are lost.
2232
2233	This patch fixes the problem; it adds a second, alternative
2234	mechanism to pass the drop-out mode: For each contour, the
2235	rasterizer now checks the first `tags' array element.  If bit 2 is
2236	set, bits 5-7 contain the contour's drop-out mode, overriding the
2237	global drop-out mode.
2238
2239	* include/freetype/ftimage.h (FT_CURVE_TAG_HAS_SCANMODE): New macro.
2240
2241	* src/truetype/ttgload.c (TT_Hint_Glyph): Store drop-out mode in
2242	`tags[0]'.
2243
2244	* src/raster/ftraster.c (Flow_Up, Overshoot_Top, Overshoot_Bottom):
2245	Use bits 3-5 instead of 0-2.
2246	(New_Profile): Set the drop-out mode in the profile's `flags' field.
2247	(Decompose_Curve): Check `tags[0]' and set `dropOutControl' if
2248	necessary.
2249	(Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
2250	Horizontal_Gray_Sweep_Drop, Draw_Sweep): Use the profile's drop-out
2251	mode.
2252
22532009-06-16  Werner Lemberg  <wl@gnu.org>
2254
2255	Improve scan conversion rules 4 and 6.
2256
2257	Two new constraints are introduced to better identify a `stub' -- a
2258	concept which is only vaguely described in the OpenType
2259	specification.  The old code was too rigorous and suppressed more
2260	pixel than it should.
2261
2262	  . The intersection of the two profiles with the scanline is less
2263	    than a half pixel.  Code related to this was already present in
2264	    the sources but has been commented out.
2265
2266	  . The endpoint of the original contour forming a profile has a
2267	    distance (`overshoot') less than half a pixel to the scanline.
2268
2269	Note that the two additional conditions fix almost all differences
2270	to the Windows rasterizer, but some problematic cases remain.
2271
2272	* src/raster/ftraster.c (Overshoot_Top, Overshoot_Bottom): New
2273	macros for the `flags' field in the `TProfile' structure.
2274	(IS_BOTTOM_OVERSHOOT, IS_TOP_OVERSHOOT): New macros.
2275	(New_Profile, End_Profile): Pass overshoot flag as an argument and
2276	set it accordingly.
2277	Update callers.
2278	(Vertical_Sweep_Drop, Horizontal_Sweep_Drop): Implement the two new
2279	constraints.
2280
22812009-06-11  Werner Lemberg  <wl@gnu.org>
2282
2283	Increase precision for B/W rasterizer.
2284
2285	* src/raster/ftraster.c (Set_High_Precision): Add two more bits to
2286	the precision.  This corrects rendering of some small glyphs, for
2287	example, glyph `xi' in verdana.ttf at 13 ppem.  Testing with ftbench
2288	on my GNU/Linux box I don't see a performance degradation.
2289
22902009-06-08  Michael Zucchi  <notzed@gmail.com>
2291
2292	Handle FT_STROKER_LINECAP_BUTT.
2293	This fixes Savannah bug #26757.
2294
2295	* src/base/ftstroke.c (ft_stroker_cap): Implement it.
2296
22972009-06-07  Harald Fernengel  <harry@kdevelop.org>
2298
2299	Fix some potential out-of-memory crashes.
2300
2301	* src/base/ftobjs.c (ft_glyphslot_done): Check `slot->internal'.
2302	* src/base/ftstream.c (FT_Stream_ReleaseFrame): Check `stream'.
2303	* src/truetype/ttinterp.c (TT_New_Context): Avoid double-free of
2304	`exec' in case of failure.
2305
23062009-06-07  Werner Lemberg  <wl@gnu.org>
2307
2308	Simplify math.
2309	Suggested by Alexei Podtelezhnikov <apodtele@gmail.com>.
2310
2311	* src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
2312	Horizontal_Gray_Sweep_Drop): Do it.
2313
23142009-06-04  Werner Lemberg  <wl@gnu.org>
2315
2316	Preparation for fixing scan conversion rules 4 and 6.
2317
2318	* src/raster/ftraster.c (TFlow): Replace enumeration with...
2319	(Flow_Up): This macro.
2320	(TProfile): Replace `flow' member with `flags' bit field.
2321	Update all affected code.
2322
23232009-05-29  James Cloos  <cloos@jhcloos.com>
2324
2325	Enable autohinting for glyphs rotated by multiples of 90°.
2326
2327	* src/base/ftobjs.c (FT_Load_Glyph): Alter check for permitted
2328	matrices to allow rotations by multiples of 90°, not only unrotated,
2329	possibly slanted matrices.
2330
23312009-05-28  Werner Lemberg  <wl@gnu.org>
2332
2333	Remove compiler warning.
2334	Reported by Krzysztof Kowalczyk <kkowalczyk@gmail.com>.
2335
2336	* src/autofit/aflatin2.c (af_latin2_hint_edges): Move declaration of
2337	`n_edges' into `#if' block.
2338
23392009-05-28  Werner Lemberg  <wl@gnu.org>
2340
2341	Make compilation work with FT_CONFIG_OPTION_USE_ZLIB not defined.
2342	Reported by Krzysztof Kowalczyk <kkowalczyk@gmail.com>.
2343
2344	* src/pcf/pcfdrivr.c (PCF_Face_Init) [!FT_CONFIG_OPTION_USE_ZLIB]:
2345	Make it work.
2346	Simplify #ifdef logic.
2347
23482009-05-22  Werner Lemberg  <wl@gnu.org>
2349
2350	Improve b/w rasterizer.
2351	Problem reported by Krzysztof Kotlenga <pocek@users.sf.net>.
2352
2353	* src/raster/raster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
2354	Horizontal_Gray_Sweep_Drop): For smart drop-out mode, if
2355	intersections are equally distant relative to next pixel center,
2356	select the left pixel, not the right one.
2357
23582009-05-19  Werner Lemberg  <wl@gnu.org>
2359
2360	Fix Savannah bug #26600.
2361
2362	* src/type42/t42parse.c (t42_load_keyword): Handle
2363	T1_FIELD_LOCATION_FONT_EXTRA.
2364
23652009-04-30  Werner Lemberg  <wl@gnu.org>
2366
2367	Document recent changes to ftview.
2368
2369	* docs/CHANGES: Do it.
2370
23712009-04-27  Werner Lemberg  <wl@gnu.org>
2372
2373	autohinter: Don't change digit widths if all widths are the same.
2374	This fixes FreeDesktop bug #21197.
2375
2376	* src/autofit/afglobal.c (AF_DIGIT): New macro.
2377	(af_face_globals_compute_script_coverage): Mark ASCII digits in
2378	`glyph_scripts' array.
2379	(af_face_globals_get_metrics): Updated.
2380	(af_face_globals_is_digit): New function.
2381	* src/autofit/afglobal.h: Updated.
2382	(AF_ScriptMetricsRec): Add `digits_have_same_width' flag.
2383
2384	* src/autofit/aflatin.c: Include FT_ADVANCES_H.
2385	(af_latin_metrics_check_digits): New function.
2386	(af_latin_metrics_init): Use it.
2387	* src/autofit/aflatin.h: Updated.
2388	* src/autofit/afcjk.c (af_cjk_metrics_init): Updated.
2389
2390	* src/autofit/aflatin2.c: Similar changes as with aflatin.c.
2391
2392	* src/autofit/afloader.c (af_loader_load_g): Test digit width.
2393
2394	* docs/CHANGES: Document it.
2395
23962009-04-26  Werner Lemberg  <wl@gnu.org>
2397
2398	Make ftgrays compile with _STANDALONE_ and FT_STATIC_RASTER again.
2399	Problems reported by suyu@cooee.cn.
2400
2401	* src/smooth/ftgrays.c (FT_DEFINE_OUTLINE_FUNCS,
2402	FT_DEFINE_RASTER_FUNCS) [_STANDALONE_]: Define.
2403	[!_STANDALONE_]: Include ftspic.h only here.
2404	(ras): Define/declare after definition of `TWorker'.
2405	Use `RAS_VAR_' where necessary.
2406
24072009-04-21  Karl Berry  <karl@gnu.org>
2408
2409	Fix AC_CHECK_FT2.
2410
2411	* builds/unix/freetype2.m4: Only check PATH for freetype-config if
2412	we did not already find it from a prefix option.
2413
24142009-04-05  Oran Agra  <oran@monfort.co.il>
2415
2416	Add #error to modules and files that do not support PIC yet.
2417
2418	When FT_CONFIG_OPTION_PIC is defined the following files will
2419	create #error:
2420	* src/bdf/bdfdrivr.h
2421	* src/cache/ftcmanag.c
2422	* src/cid/cidriver.h
2423	* src/gxvalid/gxvmod.h
2424	* src/gzip/ftgzip.c
2425	* src/lzw/ftlzw.c
2426	* src/otvalid/otvmod.h
2427	* src/pcf/pcfdrivr.h
2428	* src/pfr/pfrdrivr.h
2429	* src/psaux/psauxmod.h
2430	* src/type1/t1driver.h
2431	* src/type42/t42drivr.h
2432	* src/winfonts/winfnt.h
2433
24342009-04-05  Oran Agra  <oran@monfort.co.il>
2435
2436	Position Independent Code (PIC) support in autofit module.
2437
2438	* include/freetype/internal/autohint.h add macros to init
2439	instances of FT_AutoHinter_ServiceRec.
2440
2441	* src/autofit/afmodule.h declare autofit_module_class
2442	using macros from ftmodapi.h,
2443	when FT_CONFIG_OPTION_PIC is defined create and destroy
2444	functions will be declared.
2445	* src/autofit/afmodule.c when FT_CONFIG_OPTION_PIC is defined
2446	af_autofitter_service and autofit_module_class structs
2447	will have functions to init or create and destroy them
2448	instead of being allocated in the global scope.
2449	And macros will be used from afpic.h in order to access them.
2450
2451	* src/autofit/aftypes.h add macros to init and declare
2452	instances of AF_ScriptClassRec.
2453
2454	* src/autofit/afcjk.h declare af_cjk_script_class
2455	using macros from aftypes.h,
2456	when FT_CONFIG_OPTION_PIC is defined init function will be declared.
2457	* src/autofit/afcjk.c when FT_CONFIG_OPTION_PIC is defined
2458	af_cjk_script_class struct will have function to init it instead of
2459	being allocated in the global scope.
2460
2461	* src/autofit/afdummy.h declare af_dummy_script_class
2462	using macros from aftypes.h,
2463	when FT_CONFIG_OPTION_PIC is defined init function will be declared.
2464	* src/autofit/afdummy.c when FT_CONFIG_OPTION_PIC is defined
2465	af_dummy_script_class struct will have function to init it instead of
2466	being allocated in the global scope.
2467
2468	* src/autofit/afindic.h declare af_indic_script_class
2469	using macros from aftypes.h,
2470	when FT_CONFIG_OPTION_PIC is defined init function will be declared.
2471	* src/autofit/afindic.c when FT_CONFIG_OPTION_PIC is defined
2472	af_indic_script_class struct will have function to init it instead of
2473	being allocated in the global scope.
2474
2475	* src/autofit/aflatin.h declare af_latin_script_class
2476	using macros from aftypes.h,
2477	when FT_CONFIG_OPTION_PIC is defined init function will be declared.
2478	* src/autofit/aflatin.c when FT_CONFIG_OPTION_PIC is defined
2479	af_latin_script_class struct will have function to init it instead of
2480	being allocated in the global scope.
2481	Change af_latin_blue_chars to be PIC-compatible by being a two
2482	dimensional array rather than array of pointers.
2483
2484
2485	* src/autofit/aflatin2.h declare af_latin2_script_class
2486	using macros from aftypes.h,
2487	when FT_CONFIG_OPTION_PIC is defined init function will be declared.
2488	* src/autofit/aflatin2.c when FT_CONFIG_OPTION_PIC is defined
2489	af_latin2_script_class struct will have function to init it instead of
2490	being allocated in the global scope.
2491	Change af_latin2_blue_chars to be PIC-compatible by being a two
2492	dimensional array rather than array of pointers.
2493
2494	* src/autofit/afglobal.c when FT_CONFIG_OPTION_PIC is defined
2495	af_script_classes array initialization was moved to afpic.c and
2496	is later referred using macros defined in afpic.h.
2497
2498	New Files:
2499	* src/autofit/afpic.h declare struct to hold PIC globals for autofit
2500	module and macros to access them.
2501	* src/autofit/afpic.c implement functions to allocate, destroy and
2502	initialize PIC globals for autofit module.
2503
2504	* src/autofit/autofit.c add new file to build: afpic.c.
2505	* src/autofit/jamfile add new files to FT2_MULTI build: afpic.c.
2506
25072009-04-05  Oran Agra  <oran@monfort.co.il>
2508
2509	Position Independent Code (PIC) support in pshinter module.
2510
2511	* include/freetype/internal/pshints.h add macros to init
2512	instances of PSHinter_Interface.
2513
2514	* src/pshinter/pshmod.h declare pshinter_module_class
2515	using macros from ftmodapi.h,
2516	when FT_CONFIG_OPTION_PIC is defined create and destroy
2517	functions will be declared.
2518	* src/pshinter/pshmod.c when FT_CONFIG_OPTION_PIC is defined
2519	pshinter_interface and pshinter_module_class structs
2520	will have functions to init or create and destroy them
2521	instead of being allocated in the global scope.
2522	And macros will be used from pshpic.h in order to access them.
2523
2524	New Files:
2525	* src/pshinter/pshpic.h declare struct to hold PIC globals for pshinter
2526	module and macros to access them.
2527	* src/pshinter/pshpic.c implement functions to allocate, destroy and
2528	initialize PIC globals for pshinter module.
2529
2530	* src/pshinter/pshinter.c add new file to build: pshpic.c.
2531	* src/pshinter/jamfile add new files to FT2_MULTI build: pshpic.c.
2532
25332009-04-05  Oran Agra  <oran@monfort.co.il>
2534
2535	Position Independent Code (PIC) support in psnames module.
2536
2537	* include/freetype/internal/services/svpscmap.h add macros to init
2538	instances of FT_Service_PsCMapsRec.
2539
2540	* src/psnames/psmodule.h declare psnames_module_class
2541	using macros from ftmodapi.h,
2542	when FT_CONFIG_OPTION_PIC is defined create and destroy
2543	functions will be declared.
2544	* src/psnames/psmodule.c when FT_CONFIG_OPTION_PIC is defined
2545	pscmaps_interface and pscmaps_services structs
2546	and psnames_module_class array
2547	will have functions to init or create and destroy them
2548	instead of being allocated in the global scope.
2549	And macros will be used from pspic.h in order to access them.
2550
2551	New Files:
2552	* src/psnames/pspic.h declare struct to hold PIC globals for psnames
2553	module and macros to access them.
2554	* src/psnames/pspic.c implement functions to allocate, destroy and
2555	initialize PIC globals for psnames module.
2556
2557	* src/psnames/psnames.c add new file to build: pspic.c.
2558	* src/psnames/jamfile add new files to FT2_MULTI build: pspic.c.
2559
25602009-04-05  Oran Agra  <oran@monfort.co.il>
2561
2562	Position Independent Code (PIC) support in raster renderer.
2563
2564	* src/raster/ftrend1.h declare ft_raster1_renderer_class
2565	and ft_raster5_renderer_class
2566	using macros from ftrender.h,
2567	when FT_CONFIG_OPTION_PIC is defined create and destroy
2568	functions will be declared.
2569	* src/smooth/ftrend1.c when FT_CONFIG_OPTION_PIC is defined
2570	ft_raster1_renderer_class and ft_raster5_renderer_class structs
2571	will have functions to init or create and destroy them
2572	instead of being allocated in the global scope.
2573	Macros will be used from rastpic.h in order to access
2574	ft_standard_raster from the pic_container (allocated in ftraster.c).
2575	In ft_raster1_render when PIC is enabled, the last letter of
2576	module_name is used to verify the renderer class rather than the
2577	class pointer.
2578
2579	* src/raster/ftraster.c when FT_CONFIG_OPTION_PIC is defined
2580	ft_standard_raster struct will have function to init it
2581	instead of being allocated in the global scope.
2582
2583	New Files:
2584	* src/raster/rastpic.h declare struct to hold PIC globals for raster
2585	renderer and macros to access them.
2586	* src/raster/rastpic.c implement functions to allocate, destroy and
2587	initialize PIC globals for raster renderer.
2588
2589	* src/raster/raster.c add new file to build: rastpic.c.
2590	* src/raster/jamfile add new files to FT2_MULTI build: rastpic.c.
2591
25922009-04-05  Oran Agra  <oran@monfort.co.il>
2593
2594	Position Independent Code (PIC) support in smooth renderer.
2595
2596	* src/smooth/ftsmooth.h declare ft_smooth_renderer_class,
2597	ft_smooth_lcd_renderer_class and ft_smooth_lcdv_renderer_class
2598	using macros from ftrender.h,
2599	when FT_CONFIG_OPTION_PIC is defined create and destroy
2600	functions will be declared.
2601	* src/smooth/ftsmooth.c when FT_CONFIG_OPTION_PIC is defined
2602	the following structs:
2603	ft_smooth_renderer_class, ft_smooth_lcd_renderer_class
2604	and ft_smooth_lcdv_renderer_class
2605	will have functions to init or create and destroy them
2606	instead of being allocated in the global scope.
2607	And macros will be used from ftspic.h in order to access
2608	ft_grays_raster from the pic_container (allocated in ftgrays.c).
2609
2610	* src/smooth/ftgrays.h include FT_CONFIG_CONFIG_H
2611	* src/smooth/ftgrays.c when FT_CONFIG_OPTION_PIC is NOT defined
2612	func_interface was moved from gray_convert_glyph_inner function
2613	to the global scope.
2614	When FT_CONFIG_OPTION_PIC is defined
2615	func_interface and ft_grays_raster structs
2616	will have functions to init them
2617	instead of being allocated in the global scope.
2618	And func_interface will be allocated on the stack of
2619	gray_convert_glyph_inner.
2620
2621	New Files:
2622	* src/smooth/ftspic.h declare struct to hold PIC globals for smooth
2623	renderer and macros to access them.
2624	* src/smooth/ftspic.c implement functions to allocate, destroy and
2625	initialize PIC globals for smooth renderer.
2626
2627	* src/smooth/smooth.c add new file to build: ftspic.c.
2628	* src/smooth/jamfile add new files to FT2_MULTI build: ftspic.c.
2629
26302009-04-05  Oran Agra  <oran@monfort.co.il>
2631
2632	Position Independent Code (PIC) support in cff driver.
2633
2634	* include/freetype/internal/services/svcid.h add macros to init
2635	instances of FT_Service_CIDRec.
2636	* include/freetype/internal/services/svpsinfo.h add macros to init
2637	instances of FT_Service_PsInfoRec.
2638
2639	* src/cff/cffcmap.h declare cff_cmap_encoding_class_rec
2640	and cff_cmap_unicode_class_rec using macros from
2641	ftobjs.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
2642	functions will be declared.
2643	* src/cff/cffcmap.c when FT_CONFIG_OPTION_PIC is defined
2644	the following structs:
2645	cff_cmap_encoding_class_rec and cff_cmap_unicode_class_rec
2646	will have functions to init or create and destroy them
2647	instead of being allocated in the global scope.
2648
2649	* src/cff/cffdrivr.h declare cff_driver_class using macros from
2650	ftdriver.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
2651	functions will be declared.
2652	* src/cff/cffdrivr.c when FT_CONFIG_OPTION_PIC is defined
2653	the following structs:
2654	cff_service_glyph_dict, cff_service_ps_info, cff_service_ps_name
2655	cff_service_get_cmap_info, cff_service_cid_info, cff_driver_class,
2656	and cff_services array
2657	will have functions to init or create and destroy them
2658	instead of being allocated in the global scope.
2659	And macros will be used from cffpic.h in order to access them
2660	from the pic_container.
2661	Use macros from cffpic.h in order to access the
2662	structs allocated in cffcmap.c
2663
2664	* src/cff/cffobjs.c Use macros from cffpic.h in order to access the
2665	structs allocated in cffcmap.c
2666
2667	* src/cff/parser.c when FT_CONFIG_OPTION_PIC is defined
2668	implement functions to create and destroy cff_field_handlers array
2669	instead of being allocated in the global scope.
2670	And macros will be used from cffpic.h in order to access it
2671	from the pic_container.
2672
2673	New Files:
2674	* src/cff/cffpic.h declare struct to hold PIC globals for cff
2675	driver and macros to access them.
2676	* src/cff/cffpic.c implement functions to allocate, destroy and
2677	initialize PIC globals for cff driver.
2678
2679	* src/cff/cff.c add new file to build: cffpic.c.
2680	* src/cff/jamfile add new files to FT2_MULTI build: cffpic.c.
2681
26822009-04-05  Oran Agra  <oran@monfort.co.il>
2683
2684	Position Independent Code (PIC) support in sfnt driver.
2685
2686	* include/freetype/internal/services/svbdf.h add macros to init
2687	instances of FT_Service_BDFRec.
2688	* include/freetype/internal/services/svgldict.h add macros to init
2689	instances of FT_Service_GlyphDictRec.
2690	* include/freetype/internal/services/svpostnm.h add macros to init
2691	instances of FT_Service_PsFontNameRec.
2692	* include/freetype/internal/services/svsfnt.h add macros to init
2693	instances of FT_Service_SFNT_TableRec.
2694	* include/freetype/internal/services/svttcmap.h add macros to init
2695	instances of FT_Service_TTCMapsRec.
2696	* include/freetype/internal/sfnt.h add macros to init
2697	instances of SFNT_Interface.
2698
2699	* src/sfnt/sfdriver.h declare sfnt_module_class using macros from
2700	ftmodapi.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
2701	functions will be declared.
2702	* src/sfnt/sfdriver.c when FT_CONFIG_OPTION_PIC is defined
2703	the following structs:
2704	sfnt_service_sfnt_table, sfnt_service_glyph_dict, sfnt_service_ps_name
2705	tt_service_get_cmap_info, sfnt_service_bdf, sfnt_interface,
2706	sfnt_module_class, and sfnt_services array
2707	will have functions to init or create and destroy them
2708	instead of being allocated in the global scope.
2709	And macros will be used from sfntpic.h in order to access them
2710	from the pic_container.
2711
2712	* src/sfnt/ttcmap.h add macros to init
2713	instances of TT_CMap_ClassRec.
2714	* src/sfnt/ttcmap.c when FT_CONFIG_OPTION_PIC is defined
2715	the following structs:
2716	tt_cmap0_class_rec, tt_cmap2_class_rec, tt_cmap4_class_rec
2717	tt_cmap6_class_rec, tt_cmap8_class_rec, tt_cmap10_class_rec,
2718	tt_cmap12_class_rec, tt_cmap14_class_rec and tt_cmap_classes array
2719	will have functions to init or create and destroy them
2720	instead of being allocated in the global scope.
2721	And macros will be used from sfntpic.h in order to access them
2722	from the pic_container.
2723	The content of tt_cmap_classes is now described in the
2724	new file 'ttcmapc.h'.
2725
2726	New Files:
2727	* src/sfnt/sfntpic.h declare struct to hold PIC globals for sfnt
2728	driver and macros to access them.
2729	* src/sfnt/sfntpic.c implement functions to allocate, destroy and
2730	initialize PIC globals for sfnt driver.
2731	* src/sfnt/ttcmapc.h describing the content of
2732	tt_cmap_classes allocated in ttcmap.c
2733
2734	* src/sfnt/sfnt.c add new file to build: sfntpic.c.
2735	* src/sfnt/jamfile add new files to FT2_MULTI build: sfntpic.c.
2736
27372009-04-05  Oran Agra  <oran@monfort.co.il>
2738
2739	Position Independent Code (PIC) support in truetype driver.
2740
2741	* include/freetype/internal/services/svmm.h add macros to init
2742	instances of FT_Service_MultiMastersRec.
2743	* include/freetype/internal/services/svttglyf.h add macros to init
2744	instances of FT_Service_TTGlyfRec.
2745
2746	* src/truetype/ttdriver.h declare tt_driver_class using macros from
2747	ftdriver.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
2748	functions will be declared.
2749	* src/truetype/ttdriver.c when FT_CONFIG_OPTION_PIC is defined
2750	the following structs:
2751	tt_service_gx_multi_masters, tt_service_truetype_glyf, tt_driver_class
2752	and tt_services array,
2753	will have functions to init or create and destroy them
2754	instead of being allocated in the global scope.
2755	And macros will be used from ttpic.h in order to access them
2756	from the pic_container.
2757	* src/truetype/ttobjs.c change trick_names array to be
2758	PIC-compatible by being a two dimensional array rather than array
2759	of pointers.
2760
2761	New Files:
2762	* src/truetype/ttpic.h declare struct to hold PIC globals for truetype
2763	driver and macros to access them.
2764	* src/truetype/ttpic.c implement functions to allocate, destroy and
2765	initialize PIC globals for truetype driver.
2766
2767	* src/truetype/truetype.c add new file to build: ttpic.c.
2768	* src/truetype/jamfile add new files to FT2_MULTI build: ttpic.c.
2769
27702009-04-05  Oran Agra  <oran@monfort.co.il>
2771
2772	Position Independent Code (PIC) support and infrastructure in base.
2773
2774	* include/freetype/config/ftoption.h add FT_CONFIG_OPTION_PIC
2775	* include/freetype/internal/ftobjs.h Add pic_container member to
2776	FT_LibraryRec.
2777	Add macros to declare and init instances of FT_CMap_ClassRec.
2778	Add macros to init instances of FT_Outline_Funcs and FT_Raster_Funcs.
2779	Add macros to declare, allocate and initialize modules
2780	(FT_Module_Class).
2781	Add macros to declare, allocate and initialize renderers
2782	(FT_Renderer_Class).
2783	Add macro to init instances of FT_Glyph_Class.
2784	Add macros to declare, allocate and initialize drivers
2785	(FT_Driver_ClassRec).
2786	* include/freetype/internal/ftpic.h new file to declare the
2787	FT_PIC_Container struct and the functions to allocate and destroy it.
2788	* include/freetype/internal/ftserv.h add macros to allocate and
2789	destroy arrays of FT_ServiceDescRec.
2790	* include/freetype/internal/internal.h define macro to include
2791	ftpic.h.
2792
2793	New Files:
2794	* src/base/ftpic.c implement functions to allocate and destroy the
2795	global pic_container.
2796	* src/base/basepic.h declare struct to hold PIC globals for base and
2797	macros to access them.
2798	* src/base/basepic.c implement functions to allocate, destroy and
2799	initialize PIC globals for base.
2800
2801	* src/base/ftinit.c when FT_CONFIG_OPTION_PIC is defined implement
2802	functions that allocate and destroy ft_default_modules according to
2803	FT_CONFIG_MODULES_H in the pic_container instead of the global scope
2804	and use macro from basepic.h to access it.
2805	* src/base/ftobjs.c add calls to the functions that allocate and
2806	destroy the global pic_container when the library is created and
2807	destroyed.
2808
2809	* src/base/jamfile add new files to FT2_MULTI build:
2810	ftpic.c and basepic.c.
2811	* src/base/ftbase.c add new files to build:
2812	ftpic.c and basepic.c.
2813
2814	* src/base/ftglyph.c when FT_CONFIG_OPTION_PIC is defined
2815	ft_bitmap_glyph_class and ft_outline_glyph_class will be allocated
2816	in the pic_container instead of the global scope and use macros from
2817	basepic.h to access them.
2818	* src/base/ftbbox.c allocate bbox_interface struct on the stack
2819	instead of the global scope when FT_CONFIG_OPTION_PIC is defined.
2820	* src/base/ftstroke.c access ft_outline_glyph_class allocated in
2821	ftglyph.c via macros from basepic.h
2822
28232009-04-05  Oran Agra  <oran@monfort.co.il>
2824
2825	Preparing changes in cff parser later needed for PIC version.
2826
2827	* src/cff/cffload.c, src/cff/cffload.h, src/cff/cffobjs.c,
2828	src/cff/cffparse.c, src/cff/cffparse.h: Add library pointer to
2829	'CFF_ParserRec' set by `cff_parser_init'.
2830	Route library pointer from 'cff_face_init' to 'cff_subfont_load'
2831	for `cff_parser_init'.
2832
2833	* src/cff/cffparse.c (CFF_Field_Handler): Move it to...
2834	* src/cff/cffparse.h: This file, to be used by other C files.
2835
28362009-04-05  Oran Agra  <oran@monfort.co.il>
2837
2838	Minor change in ftstroke.c.
2839
2840	* src/base/ftstroke.c (FT_StrokerRec): Replace `memory' member with
2841	`library' needed for PIC version.
2842	Update all callers.
2843
28442009-04-04  Werner Lemberg  <wl@gnu.org>
2845
2846	ftnames.c -> ftsnames.c
2847
2848	* src/base/ftnames.c: Rename to...
2849	* src/base/ftsnames.c: This.
2850	* src/base/Jamfile, src/base/rules.mk, src/base/ftbase.c: Updated.
2851
28522009-04-04  Werner Lemberg  <wl@gnu.org>
2853
2854	Add support for cmap type 13.
2855
2856	* devel/ftoption.h, include/freetype/config/ftoption.h
2857	(TT_CONFIG_CMAP_FORMAT_13): New macro.
2858
2859	* src/sfnt/ttcmap.c (TT_CMap13Rec, tt_cmap13_init,
2860	tt_cmap13_validate, tt_cmap13_char_index, tt_cmap13_char_next,
2861	tt_cmap13_get_info, tt_cmap13_char_map_def_binary,
2862	tt_cmap14_class_rec): New functions and structures for cmap 13
2863	support.
2864	(tt_cmap_classes): Register tt_cmap13_class_rec.
2865
2866	* docs/CHANGES: Mention cmap 13 support.
2867
28682009-04-01  Werner Lemberg  <wl@gnu.org>
2869
2870	Ignore empty contours in CFF glyphs.
2871
2872	Problem reported by Albert Astals Cid <aacid@kde.org>.
2873
2874	* src/cff/cffgload.c (cff_builder_close_contour): Synchronize with
2875	t1_builder_close_contour.
2876
28772009-03-21  Werner Lemberg  <wl@gnu.org>
2878
2879	Another redundant header inclusion.
2880
2881	* src/truetype/ttgxvar.c: Fix Ghostscript Coverity issue #4041.
2882
28832009-03-21  Werner Lemberg  <wl@gnu.org>
2884
2885	Remove redundant header inclusions.
2886
2887	This covers many Ghostscript Coverity issues.
2888
2889	* src/*: Do it.
2890
28912009-03-21  Werner Lemberg  <wl@gnu.org>
2892
2893	Fix Ghostscript Coverity issue #3904.
2894
2895	* src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against
2896	invalid values of `runcnt'.
2897
28982009-03-20  Werner Lemberg  <wl@gnu.org>
2899
2900	Fix `make multi' run.
2901
2902	* src/smooth/ftsmooth.h: Include FT_INTERNAL_DEBUG_H.
2903
29042009-03-20  Werner Lemberg  <wl@gnu.org>
2905
2906	Fix Savannah bug #25923.
2907
2908	* src/cache/ftccmap.c (FTC_CMAP_HASH): Fix typo.
2909
29102009-03-20  Werner Lemberg  <wl@gnu.org>
2911
2912	Protect against too large glyphs.
2913
2914	Problem reported by Tavis Ormandy <taviso@google.com>.
2915
2916	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Don't allow
2917	`pitch' or `height' to be larger than 0xFFFF.
2918
29192009-03-20  Werner Lemberg  <wl@gnu.org>
2920	    Tavis Ormandy  <taviso@google.com>
2921
2922	Fix validation for various cmap table formats.
2923
2924	* src/sfnt/ttcmap.c (tt_cmap8_validate, tt_cmap10_validate,
2925	tt_cmap12_validate): Check `length' correctly.
2926	(tt_cmap_14_validate): Check `length' and `numMappings' correctly.
2927
29282009-03-20  Werner Lemberg  <wl@gnu.org>
2929
2930	Protect against malformed compressed data.
2931
2932	* src/lzw/ftzopen.c (ft_lzwstate_io): Test whether `state->prefix' is
2933	zero.
2934
29352009-03-20  Werner Lemberg  <wl@gnu.org>
2936
2937	Protect against invalid SID values in CFFs.
2938
2939	Problem reported by Tavis Ormandy <taviso@google.com>.
2940
2941	* src/cff/cffload.c (cff_charset_load): Reject SID values larger
2942	than 64999.
2943
29442009-03-19  Vincent Richomme  <richom.v@free.fr>
2945
2946	Update WinCE Visual C project files.
2947
2948	* builds/wince/vc2005-ce/freetype.vcproj,
2949	builds/wince/vc2008-ce/freetype.vcproj: Add missing base extension
2950	files.
2951
29522009-03-19  Werner Lemberg  <wl@gnu.org>
2953
2954	Remove unused Win32 code.
2955
2956	* builds/wince/ftdebug.c: Remove code guarded with `!_WIN32_WCE'.
2957	Since Win32 is handled separately this is no longer needed.
2958
29592009-03-19  Vincent Richomme  <richom.v@free.fr>
2960
2961	Make `gzip' module compile on WinCE.
2962
2963	* src/gzip/zconf.h [_WIN32_WCE]: Define NO_ERRNO_H.
2964
29652009-03-19  Werner Lemberg  <wl@gnu.org>
2966
2967	Remove unused WinCE code.
2968
2969	* builds/win32/ftdebug.c: Remove code guarded with `_WIN32_WCE'.
2970	Since WinCE is handled separately this is no longer needed.
2971
29722009-03-16  Werner Lemberg  <wl@gnu.org>
2973
2974	docmaker: Don't ignore single-line code blocks.
2975
2976	* src/tools/docmaker/content.py (DocBlock::_init__): Fix change from
2977	2009-01-31.
2978
29792009-03-15  Steve Langasek  <steve.langasek@canonical.com>
2980
2981	Use __asm__ for declaring assembly instead of asm.
2982
2983	* builds/unix/ftconfig.in (FT_MulFix_arm): Use __asm__ instead of
2984	asm on arm, fixing a build failure on armel with -pedantic.
2985
29862009-03-14  Werner Lemberg  <wl@gnu.org>
2987
2988	Fix valgrind warning.
2989
2990	* src/sfnt/ttsbit0.c (tt_sbit_decoder_load_bit_aligned): Don't read
2991	past the end of the frame.
2992
29932009-03-12  Werner Lemberg  <wl@gnu.org>
2994
2995	* Version 2.3.9 released.
2996	=========================
2997
2998
2999	Tag sources with `VER-2-3-9'.
3000
30012009-03-12  Werner Lemberg  <wl@gnu.org>
3002
3003	* builds/unix/freetype2.in: Move @FT2_EXTRA_LIBS@ to `Libs.private'.
3004
30052009-03-12  Werner Lemberg  <wl@gnu.org>
3006
3007	Fix some FreeType Coverity issues as reported for Ghostscript.
3008
3009	* src/base/ftobjs.c (FT_New_Face, FT_New_Memory_Face): Initialize
3010	`args.stream' (#3874, #3875).
3011	(open_face_PS_from_sfnt_stream): Improve error management (#3786).
3012	* src/base/ftmm.c (ft_face_get_mm_service): Fix check of `aservice'
3013	(#3870).
3014	* src/base/ftstroke.c (ft_stroke_border_get_counts): Remove dead
3015	code (#3790).
3016	* src/base/ftrfork.c (raccess_guess_apple_generic): Check error
3017	value of `FT_Stream_Skip' (#3784).
3018
3019	* src/type1/t1gload.c (T1_Load_Glyph): Check `size' before accessing
3020	it (#3872)
3021
3022	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): Check `face' before accessing
3023	it (#3871).
3024	* src/pcf/pcfread.c (pcf_get_metrics): Handle return value of
3025	`pcf_get_metric' (#3789, #3782).
3026	(pcf_get_properties): Use FT_STREAM_SKIP (#3783).
3027
3028	* src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Fix check of
3029	`acache' (#3797)
3030
3031	* src/cff/cffdrivr.c (cff_ps_get_font_info): Fix check of `cff'
3032	(#3796).
3033	* src/cff/cffgload.c (cff_decoder_prepare): Check `size' (#3795).
3034	* src/cff/cffload.c (cff_index_get_pointers): Add comment (#3794).
3035
3036	* src/bdf/bdflib.c (_bdf_add_property): Check `fp->value.atom'
3037	(#3793).
3038	(_bdf_parse_start): Add comment (#3792).
3039
3040	* src/raster/ftraster.c (Finalize_Profile_Table): Check
3041	`ras.fProfile' (#3791).
3042
3043	* src/sfnt/ttsbit.c (Load_SBit_Image): Use FT_STREAM_SKIP (#3785).
3044
3045	* src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Properly ignore
3046	seek error (#3781).
3047
30482009-03-11  Michael Toftdal  <toftdal@gmail.com>
3049
3050	Extend CID service functions to handle CID-keyed CFFs as CID fonts.
3051
3052	* include/freetype/ftcid.h (FT_Get_CID_Is_Internally_CID_keyed,
3053	FT_Get_CID_From_Glyph_Index): New functions.
3054
3055	* include/freetype/internal/services/svcid.h
3056	(FT_CID_GetIsInternallyCIDKeyedFunc,
3057	FT_CID_GetCIDFromGlyphIndexFunc): New function typedefs.
3058	(CID Service): Use them.
3059
3060	* src/base/ftcid.c: Include FT_CID_H.
3061	(FT_Get_CID_Is_Internally_CID_keyed, FT_Get_CID_From_Glyph_Index):
3062	New functions.
3063
3064	* src/cff/cffdrivr.c (cff_get_is_cid, cff_get_cid_from_glyph_index):
3065	New functions.
3066	(cff_service_cid_info): Add them.
3067	* src/cff/cffload.c (cff_font_load): Don't free `font->charset.sids'
3068	-- it is needed for access as a CID-keyed font.  It gets deleted
3069	later on.
3070
3071	* src/cid/cidriver.c (cid_get_is_cid, cid_get_cid_from_glyph_index):
3072	New functions.
3073	(cid_service_cid_info): Add them.
3074
3075	* docs/CHANGES: Updated.
3076
30772009-03-11  Bram Tassyns  <bramt@enfocus.be>
3078
3079	Fix Savannah bug #25597.
3080
3081	* src/cff/cffparse.c (cff_parse_real): Don't allow fraction_length
3082	to become larger than 9.
3083
30842009-03-11  Werner Lemberg  <wl@gnu.org>
3085
3086	Fix Savannah bug #25814.
3087
3088	* builds/unix/freetype2.in: As suggested in the bug report, move
3089	@LIBZ@ to `Libs.private'.
3090
30912009-03-11  Werner Lemberg  <wl@gnu.org>
3092
3093	Fix Savannah bug #25781.
3094	We now simply check for a valid `offset', no longer handling `delta
3095	= 1' specially.
3096
3097	* src/sfnt/ttcmap.c (tt_cmap4_validate): Don't check `delta' for
3098	last segment.
3099	(tt_cmap4_set_range, tt_cmap4_char_map_linear,
3100	tt_cmap4_char_map_binary): Check offset.
3101
31022009-03-11  Werner Lemberg  <wl@gnu.org>
3103
3104	* src/base/Jamfile: Fix handling of ftadvanc.c.
3105	Reported by Oran Agra <oran@monfort.co.il>.
3106
31072009-03-10  Vincent Richomme  <richom.v@free.fr>
3108
3109	Restructure Win32 and Wince compiler support.
3110
3111	* src/builds/win32: Remove files for WinCE.
3112	Move VC 2005 support to a separate directory.
3113	Add directory for VC 2008 support.
3114
3115	* src/builds/wince: New directory hierarchy for WinCE compilers
3116	(VC 2005 and VC 2008).
3117
31182009-03-09  Werner Lemberg  <wl@gnu.org>
3119
3120	More preparations for 2.3.9 release.
3121
3122	* docs/CHANGES: Updated.
3123
3124	* Jamfile, README: s/2.3.8/2.3.9/, s/238/239/.
3125
31262009-03-09  Werner Lemberg  <wl@gnu.org>
3127
3128	* src/sfnt/rules.mk (SFNT_DRV_H): Add ttsbit0.c.
3129
31302009-03-09  Alexey Kryukov  <anagnost@yandex.ru>
3131
3132	Fix handling of EBDT formats 8 and 9 (part 2).
3133
3134	This patch fixes the following problems in ttsbit0.c:
3135
3136	. Bitmaps for compound glyphs were never allocated.
3137
3138	. `SBitDecoder' refused to load metrics if some other metrics have
3139	  already been loaded.  This condition certainly makes no sense for
3140	  recursive calls, so I've just disabled it.  Another possibility
3141	  would be resetting `decoder->metrics_loaded' to false before
3142	  loading each composite component.  However, we must restore the
3143	  original metrics after finishing the recursion; otherwise we can
3144	  get a misaligned glyph.
3145
3146	. `tt_sbit_decoder_load_bit_aligned' incorrectly handled `x_pos',
3147	  causing some glyph components to be shifted too far to the right
3148	  (especially noticeable for small sizes).
3149
3150	Note that support for grayscale bitmaps (not necessarily compound) is
3151	completely broken in ttsbit0.c.
3152
3153	* src/sfnt/tt_sbit_decoder_load_metrics: Always load metrics.
3154	(tt_sbit_decoder_load_bit_aligned): Handle `x_pos' correctly in case
3155	of `h == height'.
3156	(tt_sbit_decoder_load_compound): Reset metrics after loading
3157	components.
3158	Allocate bitmap.
3159
31602009-03-09  Werner Lemberg  <wl@gnu.org>
3161
3162	* builds/unix/configure.raw (version_info): Set to 9:20:3.
3163
31642009-03-03  David Turner  <david@freetype.org>
3165
3166	Protect SFNT kerning table parser against malformed tables.
3167
3168	This closes Savannah BUG #25750.
3169
3170	* src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning): Fix a
3171	bug where a malformed table would be successfully loaded but later
3172	crash the engine during parsing.
3173
31742009-03-03  David Turner  <david@freetype.org>
3175
3176	Update documentation and bump version number to 2.3.9.
3177
3178	* include/freetype/freetype.h: Bump patch version to 9.
3179	* docs/CHANGES: Document the ABI break in 2.3.8.
3180	* docs/VERSION.DLL: Update version numbers table for 2.3.9.
3181
31822009-03-03  David Turner  <david@freetype.org>
3183
3184	Remove ABI-breaking field in public PS_InfoFontRec definition.
3185
3186	Instead, we define a new internal PS_FontExtraRec structure to
3187	hold the additional field, then place it in various internal
3188	positions of the corresponding FT_Face derived objects.
3189
3190	* include/freetype/t1tables.h (PS_FontInfoRec): Remove the
3191	`fs_type' field from the public structure.
3192	* include/freetype/internal/psaux.h (T1_FieldLocation): New
3193	enumeration `T1_FIELD_LOCATION_FONT_EXTRA'.
3194	* include/freetype/internal/t1types.h (PS_FontExtraRec): New
3195	structure.
3196	(T1_FontRec, CID_FaceRec): Add it.
3197
3198	* src/cid/cidload.c (cid_load_keyword): Handle
3199	T1_FIELD_LOCATION_FONT_EXTRA.
3200	* src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c:
3201	Adjust FT_STRUCTURE and T1CODE properly to handle `FSType'.
3202	* src/type1/t1load.c (t1_load_keyword): Handle
3203	T1_FIELD_LOCATION_FONT_EXTRA.
3204
3205	* include/freetype/internal/services/svpsinfo.h (PsInfo service):
3206	Add `PS_GetFontExtraFunc' function typedef.
3207
3208	* src/base/ftfstype.c: Include FT_INTERNAL_SERVICE_H and
3209	FT_SERVICE_POSTSCRIPT_INFO_H.
3210	(FT_Get_FSType_Flags): Use POSTSCRIPT_INFO service.
3211
3212	* src/cff/cffdrivr.c (cff_service_ps_info): Updated.
3213	* src/cid/cidriver.c (cid_ps_get_font_extra): New function.
3214	(cid_service_ps_info): Updated.
3215	* src/type1/t1driver.c (t1_ps_get_font_extra): New function.
3216	(t1_service_ps_info): Updated.
3217	* src/type42/t42drivr.c (t42_ps_get_font_extra): New function.
3218	(t42_service_ps_info): Updated.
3219
32202009-03-02  Alexey Kryukov  <anagnost@yandex.ru>
3221
3222	Fix handling of EBDT formats 8 and 9.
3223
3224	The main cycle in `blit_sbit' makes too many iterations: it actually
3225	needs the count of lines in the source bitmap rather than in the
3226	target image.
3227
3228	* src/sfnt/ttsbit.c (blit_sbit) [FT_CONFIG_OPTION_OLD_INTERNALS]:
3229	Add parameter `source_height' and use it for main loop.
3230	(Load_SBit_Single) [FT_CONFIG_OPTION_OLD_INTERNALS]: Updated.
3231
32322009-02-23  Werner Lemberg  <wl@gnu.org>
3233
3234	Fix Savannah bug #25669.
3235
3236	* src/base/ftadvanc.h (FT_Get_Advances): Fix serious typo.
3237
3238	* src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics): Fix
3239	scaling factor for non-scalable fonts.
3240
3241	* src/cff/cffdrivr.c (cff_get_advances): Use correct advance width
3242	value to prevent incorrect scaling.
3243
3244	* docs/CHANGES: Document it.
3245
32462009-02-15  Matt Godbolt  <matt@godbolt.org>
3247
3248	Fix Savannah bug #25588.
3249
3250	* builds/unix/ftconfig.in (FT_MulFix_arm): Use correct syntax for
3251	`orr' instruction.
3252
32532009-02-11  Werner Lemberg  <wl@gnu.org>
3254
3255	* src/truetype/ttobjs.c (tt_check_trickyness): Add `DFKaiShu'.
3256	Reported by David Bevan <dbevan@emtex.com>.
3257
32582009-02-09  Werner Lemberg  <wl@gnu.org>
3259
3260	Fix Savannah bug #25495.
3261
3262	* src/sfnt/sfobjs.c (sfnt_load_face): Test for bitmap strikes before
3263	setting metrics and bbox values.  This ensures that the check for a
3264	font with neither a `glyf' table nor bitmap strikes can be performed
3265	early enough to set metrics and bbox values too.
3266
32672009-02-04  Werner Lemberg  <wl@gnu.org>
3268
3269	Fix Savannah bug #25480.
3270
3271	* builds/unix/freetype-config.in: For --ftversion, don't use $prefix
3272	but $includedir.
3273
32742009-01-31  Werner Lemberg  <wl@gnu.org>
3275
3276	Minor docmaker improvements.
3277
3278	* src/tools/docmaker/content.py (DocBlock::__init__): Ignore empty
3279	code blocks.
3280
32812009-01-25  Werner Lemberg  <wl@gnu.org>
3282
3283	Fix SCANCTRL handling in TTFs.
3284	Problem reported by Alexey Kryukov <anagnost@yandex.ru>.
3285
3286	* src/truetype/ttinterp.c (Ins_SCANCTRL): Fix threshold handling.
3287
32882009-01-23  Werner Lemberg  <wl@gnu.org>
3289
3290	Move FT_Get_FSType_Flags to a separate file.
3291	Problem reported by Mickey Gabel <mickey@monfort.co.il>.
3292
3293	* src/base/ftobjs.c (FT_Get_FSType_Flags): Move to...
3294	* src/base/ftfstype.c: This new file.
3295
3296	* modules.cfg (BASE_EXTENSION): Add ftfstype.c.
3297
3298	* docs/INSTALL.ANY: Updated.
3299
3300	* builds/mac/*.txt, builds/amiga/*makefile*,
3301	builds/win32/{visualc,visualce}/freetype.*, builds/symbian/*:
3302	Updated.
3303
33042009-01-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3305
3306	* builds/unix/ftsystem.c (FT_Stream_Open): Fix 2 error
3307	messages ending without "\n".
3308
33092009-01-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3310
3311	Fix Savannah bug #25347.
3312
3313	* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Rewind
3314	the stream to the original position passed to this function,
3315	when ft_lookup_PS_in_sfnt_stream() failed.
3316	(Mac_Read_sfnt_Resource): Rewind the stream to the head of
3317	sfnt resource body, when open_face_PS_from_sfnt_stream()
3318	failed.
3319
33202009-01-19  Michael Lotz  <mmlr@mlotz.ch>
3321
3322	Fix Savannah bug #25355.
3323
3324	* include/freetype/config/ftconfig.h (FT_MulFix_i386): Make
3325	assembler code work with gcc 2.95.3 (as used by the Haiku project).
3326	Add `cc' register to the clobber list.
3327
33282009-01-18  Werner Lemberg  <wl@gnu.org>
3329
3330	Protect FT_Get_Next_Char.
3331
3332	* src/sfnt/ttcmap.c (tt_cmap4_set_range): Apply fix similar to
3333	change from 2008-07-22.
3334
3335	Patch from Ronen Ghoshal <rghoshal@emtex.com>.
3336
33372009-01-18  Werner Lemberg  <wl@gnu.org>
3338
3339	Implement FT_Get_Name_Index for SFNT driver.
3340
3341	* src/sfnt/sfdriver.c (sfnt_get_name_index): New function.
3342	(sfnt_service_glyph_dict): Use it.
3343
3344	Problem reported by Truc Truong <tructv@necsv.com>.
3345
33462009-01-18  Werner Lemberg  <wl@gnu.org>
3347
3348	* include/freetype/ftstroke.h (FT_Outline_GetInsideBorder): Fix
3349	documentation.  Problem reported by Truc Truong <tructv@necsv.com>.
3350
3351	* docs/CHANGES: Updated.
3352
33532009-01-14  Werner Lemberg  <wl@gnu.org>
3354
3355	* Version 2.3.8 released.
3356	=========================
3357
3358
3359	Tag sources with `VER-2-3-8'.
3360
3361	* docs/VERSION.DLL: Update documentation and bump version number to
3362	2.3.8.
3363
3364	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
3365	builds/win32/visualc/freetype.dsp,
3366	builds/win32/visualc/freetype.vcproj,
3367	builds/win32/visualce/index.html,
3368	builds/win32/visualce/freetype.dsp,
3369	builds/win32/visualce/freetype.vcproj: s/2.3.7/2.3.8/, s/237/238/.
3370
3371	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.
3372
3373	* builds/unix/configure.raw (version_info): Set to 9:19:3.
3374
3375	* docs/release: Updated.
3376
33772009-01-14  Werner Lemberg  <wl@gnu.org>
3378
3379	* builds/toplevel.mk (dist): Compress better.
3380
33812009-01-13  Werner Lemberg  <wl@gnu.org>
3382
3383	* src/base/ftobjs.c (FT_Get_FSType_Flags): Cast for compilation
3384	with C++.
3385
33862009-01-13  Werner Lemberg  <wl@gnu.org>
3387
3388	Don't use stdlib.h and friends directly.
3389	Reported by Mickey Gabel <mickey@monfort.co.il>.
3390
3391	* src/base/ftdbgmem.c: s/<stdlib.h>/FT_CONFIG_STANDARD_LIBRARY_H/.
3392
3393	* src/gzip/ftgzip.c, src/lzw/ftlzw.c, src/raster/ftmisc.h:
3394	s/<string.h>/FT_CONFIG_STANDARD_LIBRARY_H/.
3395
3396	* src/autofit/aftypes.h, src/autofit/afhints.c,
3397	src/pshinter/pshalgo.c: s/<stdio.h>/FT_CONFIG_STANDARD_LIBRARY_H/
3398
3399	* src/lzw/ftlzw.c, src/base/ftdbgmem.c: Don't include stdio.h.
3400
34012009-01-12  Werner Lemberg  <wl@gnu.org>
3402
3403	Avoid compiler warnings.
3404
3405	* */*: s/do ; while ( 0 )/do { } while ( 0 )/.
3406	Reported by Sean McBride <sean@rogue-research.com>.
3407
34082009-01-12  Werner Lemberg  <wl@gnu.org>
3409
3410	Fix stdlib dependencies.
3411
3412	Problem reported by Mickey Gabel <mickey@monfort.co.il>.
3413
3414	* include/freetype/config/ftstdlib.h (ft_exit): Removed.  Unused.
3415
3416	* src/autofit/afhints.c, src/base/ftlcdfil.c, src/smooth/ftsmooth.c:
3417	s/memcpy/ft_memcpy/.
3418	* src/psaux/t1decode.c: s/memset/ft_memset/, s/memcpy/ft_memcpy/.
3419
34202009-01-11  Werner Lemberg  <wl@gnu.org>
3421
3422	* docs/formats.txt: Add link to PCF specification.
3423
3424	* include/freetype/ftbdf.h (FT_Get_BDF_Property): Improve
3425	documentation.
3426
34272009-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3428
3429	* src/base/ftadvanc.c (_ft_face_scale_advances, FT_Get_Advance,
3430	FT_Get_Advances): Change the type of load_flags from FT_UInt32 to
3431	FT_Int32, to match with the flags for FT_Load_Glyph().
3432	* src/cff/cffdrivr.c (cff_get_advances): Ditto.
3433	* src/truetype/ttdriver.c (tt_get_advances): Ditto.
3434	* include/freetype/ftadvanc.h (FT_Get_Advance, FT_Get_Advances):
3435	Ditto.
3436	* include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc):
3437	Ditto.
3438
34392009-01-09  Daniel Zimmermann  <netzimme@aol.com>
3440
3441	* src/gxvalid/gxvmort.c (gxv_mort_feature_validate): Fix wrong
3442	length check.  From Savannah patch #6682.
3443
34442009-01-09  Werner Lemberg  <wl@gnu.org>
3445
3446	Fix problem with T1_FIELD_{NUM,FIXED}_TABLE2.
3447
3448	* src/psaux/psobjs.c (ps_parser_load_field_table): Don't handle
3449	`count_offset' if it is zero (i.e., unused).  Otherwise, the first
3450	element of the structure which holds the data is erroneously
3451	modified.  Problem reported by Chi Nguyen <chint@necsv.com>.
3452
34532009-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3454
3455	* src/base/ftadvanc.c (_ft_face_scale_advances, FT_Get_Advance,
3456	FT_Get_Advances): Extend the type of load_flags from FT_UInt to
3457	FT_UInt32, to pass 32-bit flags on 16bit platforms.
3458	* src/cff/cffdrivr.c (cff_get_advances): Ditto.
3459	* src/truetype/ttdriver.c (tt_get_advances): Ditto.
3460	* include/freetype/ftadvanc.h (FT_Get_Advance, FT_Get_Advances):
3461	Ditto.
3462	* include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc):
3463	Ditto.
3464
34652009-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3466
3467	* src/base/ftobjs.c (FT_Done_Library): Issue an error message when
3468	FT_Done_Face() cannot free all faces. If the list of the opened
3469	faces includes broken face which FT_Done_Face() cannot free,
3470	FT_Done_Library() retries FT_Done_Face() and it can fall into
3471	an endless loop. See the discussion:
3472	https://lists.gnu.org/archive/html/freetype-devel/2008-09/msg00047.html
3473	https://lists.gnu.org/archive/html/freetype-devel/2008-10/msg00000.html
3474
34752009-01-07  Werner Lemberg  <wl@gnu.org>
3476
3477	* docs/CHANGES: Document new key `a' in ftdiff.
3478
34792009-01-06  Werner Lemberg  <wl@gnu.org>
3480
3481	* autogen.sh: Don't use GNUisms while calling sed.  Problem reported
3482	by Sean McBride.
3483
34842009-01-06  Werner Lemberg  <wl@gnu.org>
3485
3486	* src/base/ftbitmap.c (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_LCD
3487	and FT_PIXEL_MODE_LCD_V.  Problem reported by Chi Nguyen
3488	<chint@necsv.com>.
3489
34902009-01-06  Diego Pettenò  <flameeyes@gmail.com>
3491
3492	* builds/unix/configure.raw: Don't call AC_CANONICAL_BUILD and
3493	AC_CANONICAL_TARGET and use $host_os only.  A nice explanation for
3494	this change can be found at
3495	https://blog.flameeyes.eu/s/canonical-target.
3496
3497	From Savannah patch #6712.
3498
34992009-01-06  Sean McBride  <sean@rogue-research.com>
3500
3501	* src/base/ftdbgmem.c (_debug_mem_dummy): Make it static.
3502
3503	* src/base/ftmac.c: Remove some #undefs.
3504
35052008-12-26  Werner Lemberg  <wl@gnu.org>
3506
3507	Set `face_index' field in FT_Face for all font formats.
3508
3509	* cff/cffobjs.c (cff_face_init), winfonts/winfnt.c (FNT_Face_Init),
3510	sfnt/sfobjs.c (sfnt_init_face): Do it.
3511
3512	* docs/CHANGES: Document it.
3513
35142008-12-22  Steve Grubb
3515
3516	* builds/unix/ftsystem.c (FT_Stream_Open): Reject zero-length files.
3517	Patch from Savannah bug #25151.
3518
35192008-12-21  Werner Lemberg  <wl@gnu.org>
3520
3521	* src/pfr/pfrdrivr.c, src/winfonts/winfnt.c, src/cache/ftcmanag.c,
3522	src/smooth/ftgrays.c, src/base/ftobjs.c, src/sfobjs.c:
3523	s/_Err_Bad_Argument/_Err_Invalid_Argument/.  The former is for
3524	errors in the bytecode interpreter only.
3525
35262008-12-21  Werner Lemberg  <wl@gnu.org>
3527
3528	* src/base/ftpfr.c (FT_Get_PFR_Metrics): Protect against NULL
3529	arguments.
3530	Fix return value for non-PFR fonts.  Both problems reported by Chi
3531	Nguyen <chint@necsv.com>.
3532
35332008-12-21  anonymous
3534
3535	FT_USE_MODULE declares things as:
3536
3537	  extern const FT_Module_Class
3538
3539	(or similar for C++).  However, the actual types of the variables
3540	being declared are often different, e.g., FT_Driver_ClassRec or
3541	FT_Renderer_Class.  (Some are, indeed, FT_Module_Class.)
3542
3543	This works with most C compilers (since those structs begin with an
3544	FT_Module_Class struct), but technically it's undefined behavior.
3545
3546	To quote the ISO/IEC 9899:TC2 final committee draft, section 6.2.7
3547	paragraph 2:
3548
3549	  All declarations that refer to the same object or function shall
3550	  have compatible type; otherwise, the behavior is undefined.
3551
3552	(And they are not compatible types.)
3553
3554	Most C compilers don't reject (or even detect!) code which has this
3555	issue, but the GCC LTO development branch compiler does.  (It
3556	outputs the types of the objects while generating .o files, along
3557	with a bunch of other information, then compares them when doing the
3558	final link-time code generation pass.)
3559
3560	Patch from Savannah bug #25133.
3561
3562	* src/base/ftinit.c (FT_USE_MODULE): Include variable type.
3563
3564	* builds/amiga/include/freetype/config/ftmodule.h,
3565	include/freetype/config/ftmodule.h, */module.mk: Updated to declare
3566	pass correct types to FT_USE_MODULE.
3567
35682008-12-21  Hongbo Ni  <hongbo@njstar.com>
3569
3570	* src/autofit/aflatin.c (af_latin_hint_edges),
3571	src/autofit/aflatin2.c (af_latin2_hint_edges), src/autofit/afcjk.c
3572	(af_cjk_hint_edges): Protect against division by zero.  This fixes
3573	Savannah bug #25124.
3574
35752008-12-18  Werner Lemberg  <wl@gnu.org>
3576
3577	* docs/CHANGES: Updated.
3578
35792008-12-18  David Bevan  <dbevan@emtex.com>
3580
3581	Provide API for accessing embedding and subsetting restriction
3582	information.
3583
3584	* include/freetype.h (FT_FSTYPE_INSTALLABLE_EMBEDDING,
3585	FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING,
3586	FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING, FT_FSTYPE_EDITABLE_EMBEDDING,
3587	FT_FSTYPE_NO_SUBSETTING, FT_FSTYPE_BITMAP_EMBEDDING_ONLY): New
3588	macros.
3589	(FT_Get_FSType_Flags): New function declaration.
3590
3591	* src/base/ftobjs.c (FT_Get_FSType_Flags): New function.
3592
3593	* src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c
3594	(t42_keywords): Handle `FSType'.
3595
3596	* include/freetype/t1tables.h (PS_FontInfoRec): Add `fs_type' field.
3597
35982008-12-17  Werner Lemberg  <wl@gnu.org>
3599
3600	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Don't use internal
3601	macros so that copying the source code into an application works
3602	out of the box.
3603
36042008-12-17  Werner Lemberg  <wl@gnu.org>
3605
3606	* include/freetype/ftsynth.h, src/base/ftsynth.c: Move
3607	FT_GlyphSlot_Own_Bitmap to...
3608	* include/freetype/ftbitmap.h, src/base/ftbitmap.c: These files.
3609
3610	* docs/CHANGES: Document it.
3611
36122008-12-10  Werner Lemberg  <wl@gnu.org>
3613
3614	Generalize the concept of `tricky' fonts by introducing
3615	FT_FACE_FLAG_TRICKY to indicate that the font format's hinting
3616	engine is necessary for correct rendering.
3617
3618	At the same time, slightly modify the behaviour of tricky fonts:
3619	FT_LOAD_NO_HINTING is now ignored.  To really force raw loading
3620	of tricky fonts (without hinting), both FT_LOAD_NO_HINTING and
3621	FT_LOAD_NO_AUTOHINT must be used.
3622
3623	Finally, tricky TrueType fonts always use the bytecode interpreter
3624	even if the patented code is used.
3625
3626	* include/freetype/freetype.h (FT_FACE_FLAG_TRICKY, FT_IS_TRICKY):
3627	New macros.
3628
3629	* src/truetype/ttdriver.c (Load_Glyph): Handle new load flags
3630	semantics as described above.
3631
3632	* src/truetype/ttobjs.c (tt_check_trickyness): New function, using
3633	code of ...
3634	(tt_face_init): This function, now simplified and updated to new
3635	semantics.
3636
3637	* src/base/ftobjs.c (FT_Load_Glyph): Don't use autohinter for tricky
3638	fonts.
3639
3640	* docs/CHANGES: Document it.
3641
36422008-12-09  Werner Lemberg  <wl@gnu.org>
3643
3644	Really fix Savannah bug #25010: An SFNT font with neither outlines
3645	nor bitmaps can be considered as containing space `glyphs' only.
3646
3647	* src/truetype/ttpload.c (tt_face_load_loca): Handle the case where
3648	a `glyf' table is missing.
3649
3650	* src/truetype/ttgload.c (load_truetype_glyph): Abort if we have no
3651	`glyf' table but a non-zero `loca' entry.
3652	(tt_loader_init): Handle missing `glyf' table.
3653
3654	* src/base/ftobjs.c (FT_Load_Glyph): Undo change 2008-12-05.
3655
3656	* src/sfnt/sfobjs.c (sfnt_load_face): A font with neither outlines
3657	nor bitmaps is scalable.
3658
36592008-12-05  Werner Lemberg  <wl@gnu.org>
3660
3661	* src/autofit/aflatin.c (af_latin_uniranges): Add more ranges.  This
3662	fixes Savannah bug #21190 which also provides a basic patch.
3663
36642008-12-05  Werner Lemberg  <wl@gnu.org>
3665
3666	* include/freetype/freetype.h (FT_LOAD_ADVANCE_ONLY): Use value
3667	0x100 instead of 0x10000; the latter value is already occupied by
3668	FT_LOAD_TARGET_LIGHT.  Bug reported by James Cloos.
3669
3670
3671	Handle SFNT with neither outlines nor bitmaps.  This fixes Savannah
3672	bug #25010.
3673
3674	* src/base/ftobjs.c (FT_Load_Glyph): Reject fonts with neither
3675	outlines nor bitmaps.
3676
3677	* src/sfnt/sfobjs.c (sfnt_load_face): Don't return an error if there
3678	is no table with glyphs.
3679
3680
3681	* src/sfnt/ttload.c (tt_face_lookup_table): Improve debugging
3682	message.
3683
36842008-12-01  Werner Lemberg  <wl@gnu.org>
3685
3686	GDEF tables need `glyph_count' too for validation.  Problem reported
3687	by Chi Nguyen <chint@necsv.com>.
3688
3689	* src/otvalid/otvgdef.c (otv_GDEF_validate), src/otvalid/otvalid.h
3690	(otv_GDEF_validate), src/otvalid/otvmod.c (otv_validate): Pass
3691	`glyph_count'.
3692
36932008-11-29  Werner Lemberg  <wl@gnu.org>
3694
3695	* src/autofit/afcjk.c, src/base/ftoutln.c, src/base/ftrfork.c,
3696	src/bdf/bdfdrivr.c, src/gxvalid/gxvmorx.c, src/otvalid/otvmath.c,
3697	src/pcf/pcfdrivr.c, src/psnames/pstables.h, src/smooth/ftgrays.c,
3698	src/tools/glnames.py, src/truetype/ttinterp.c, src/type1/t1load.c,
3699	src/type42/t42objs.c, src/winfonts/winfnt.c: Fix compiler warnings
3700	(Atari PureC).
3701
37022008-11-29  James Cloos  <cloos@jhcloos.com>
3703
3704	* src/type/t1load.c (mm_axis_unmap): Revert previous patch and fix
3705	it correctly by using FT_INT_TO_FIXED (FreeType expects 16.16 values
3706	in the /BlendDesignMap space).
3707
37082008-11-29  James Cloos  <cloos@jhcloos.com>
3709
3710	* src/type1/t1load.c (mm_axis_unmap): `blend_points' is FT_Fixed*,
3711	whereas `design_points' is FT_Long*.  Therefore, return blend rather
3712	than design points.
3713
37142008-11-27  Werner Lemberg  <wl@gnu.org>
3715
3716	* src/cff/cffparse.c (cff_parse_real): Handle more than nine
3717	significant digits correctly.  This fixes Savannah bug #24953.
3718
37192008-11-25  Daniel Zimmermann  <netzimme@aol.com>
3720
3721	* src/base/ftstream.c (FT_Stream_ReadFields): Don't access stream
3722	before the NULL check.  From Savannah patch #6681.
3723
37242008-11-24  Werner Lemberg  <wl@gnu.org>
3725
3726	Fixes from the gnuwin32 port.
3727
3728	* src/base/ftlcdfil.c: s/EXPORT/EXPORT_DEF/.
3729
3730	* src/base/ftotval.c: Include FT_OPENTYPE_VALIDATE_H.
3731
3732	* src/psaux/psobjs.c (ps_table_add): Check `length'.
3733
37342008-11-15  Werner Lemberg  <wl@gnu.org>
3735
3736	* src/truetype/ttinterp.c (tt_default_graphics_state): The default
3737	value for `scan_type' is zero, as confirmed by Greg Hitchcock from
3738	Microsoft.  Problem reported by Michal Nowakowski
3739	<miszka@limes.com.pl>.
3740
37412008-11-12  Tor Andersson  <tor.andersson@gmail.com>
3742
3743	* src/cff/cffdrivr.c (cff_get_cmap_info): Initialize `format' field.
3744	This fixes Savannah bug #24819.
3745
37462008-11-08  Werner Lemberg  <wl@gnu.org>
3747
3748	* src/sfnt/sfobjs.c (sfnt_load_face): Remove #if 0/#endif guards
3749	since OpenType version 1.5 has been released.
3750
3751	* include/ttnameid.h (TT_NAME_ID_WWS_FAMILY,
3752	TT_NAME_ID_WWS_SUBFAMILY): New macros for OpenType 1.5.
3753	(TT_URC_COPTIC, TT_URC_VAI, TT_URC_NKO, TT_URC_BALINESE,
3754	TT_URC_PHAGSPA, TT_URC_NON_PLANE_0, TT_URC_PHOENICIAN,
3755	TT_URC_TAI_LE, TT_URC_NEW_TAI_LUE, TT_URC_BUGINESE,
3756	TT_URC_GLAGOLITIC, TT_URC_YIJING, TT_URC_SYLOTI_NAGRI,
3757	TT_URC_LINEAR_B, TT_URC_ANCIENT_GREEK_NUMBERS, TT_URC_UGARITIC,
3758	TT_URC_OLD_PERSIAN, TT_URC_SHAVIAN, TT_URC_OSMANYA,
3759	TT_URC_CYPRIOT_SYLLABARY, TT_URC_KHAROSHTHI, TT_URC_TAI_XUAN_JING,
3760	TT_URC_CUNEIFORM, TT_URC_COUNTING_ROD_NUMERALS, TT_URC_SUNDANESE,
3761	TT_URC_LEPCHA, TT_URC_OL_CHIKI, TT_URC_SAURASHTRA, TT_URC_KAYAH_LI,
3762	TT_URC_REJANG, TT_URC_CHAM, TT_URC_ANCIENT_SYMBOLS,
3763	TT_URC_PHAISTOS_DISC, TT_URC_OLD_ANATOLIAN, TT_URC_GAME_TILES): New
3764	macros for OpenType 1.5.
3765
37662008-11-08  Wenlin Institute  <wenlin@wenlin.com>
3767
3768	* src/base/ftobjs.c (ft_glyphslot_free_bitmap): Protect against
3769	slot->internal == NULL.  Reported by Graham Asher.
3770
37712008-11-08  Werner Lemberg  <wl@gnu.org>
3772
3773	* src/sfnt/sfobjs.c (tt_face_get_name): Modified to return an error
3774	code so that memory allocation problems can be distinguished from
3775	missing table entries.  Reported by Graham Asher.
3776	(GET_NAME): New macro.
3777	(sfnt_load_face): Use it.
3778
37792008-11-05  Werner Lemberg  <wl@gnu.org>
3780
3781	* devel/ftoption.h, include/freetype/config/ftoption.h
3782	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Undefine
3783	TT_CONFIG_OPTION_UNPATENTED_HINTING.  This fixes the return value of
3784	`FT_Get_TrueType_Engine_Type' (and makes it work as documented).
3785	Reported in bug #441638 of bugzilla.novell.com.
3786
3787	* docs/CHANGES: Document it.
3788
37892008-11-03  Werner Lemberg  <wl@gnu.org>
3790
3791	* src/type1/t1load.c (parse_subrs): Use an endless loop.  There are
3792	fonts (like HELVI.PFB version 003.001, used on OS/2) which define
3793	some `subrs' elements more than once.  Problem reported by Peter
3794	Weilbacher <mozilla@weilbacher.org>.
3795
37962008-10-15  Graham Asher  <graham.asher@btinternet.com>
3797
3798	* src/sfnt/ttpost.c (tt_post_default_names): Add `const'.
3799
38002008-10-15  David Turner  <david@freetype.org>
3801
3802	* src/truetype/ttgxvar.c (TT_Set_MM_Blend): Disambiguate for
3803	meddlesome compilers' warning against `for ( ...; ...; ...) ;'.
3804
38052008-10-14  Werner Lemberg  <wl@gnu.org>
3806
3807	* src/cff/cffobjs.c (cff_face_init): Remove compiler warning.
3808	Suggested by Bram Tassyns in Savannah patch #6651.
3809
38102008-10-12  Graham Asher  <graham.asher@btinternet.com>
3811
3812	* src/sfnt/sfobjs.c (sfnt_load_face): Fix computation of
3813	`underline_position'.
3814
38152008-10-12  Werner Lemberg  <wl@gnu.org>
3816
3817	* docs/CHANGES: Updated.
3818
38192008-10-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3820
3821	Fix Savannah bug #24468.
3822
3823	According to include/freetype/internal/ftobjs.h, the appropriate
3824	type to interchange single character codepoint is FT_UInt32. It
3825	should be distinguished from FT_UInt which can be 16bit integer.
3826
3827	* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Change the type
3828	of the second argument `pcharcode' from FT_UInt* to FT_UInt32*.
3829	(tt_cmap4_char_map_binary): Ditto.
3830	(tt_cmap14_get_nondef_chars): Change the type of return value
3831	from FT_UInt* to FT_UInt32*.
3832
38332008-10-08  John Tytgat  <John.Tytgat@esko.com>
3834
3835	Fix Savannah bug #24485.
3836
3837	* src/type1/t1load.c (parse_charstrings): Assure that we always have
3838	a .notdef glyph.
3839
38402008-10-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3841
3842	* src/base/ftmac.c: Include FT_TRUETYPE_TAGS_H for multi build.
3843	* builds/mac/ftmac.c: Ditto.
3844
38452008-10-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3846
3847	* include/freetype/tttags.h (TTAG_TYP1, TTAG_typ1): Fix definitions.
3848	* src/base/ftobjs.c: Include FT_TRUETYPE_TAGS_H.
3849
38502008-10-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3851
3852	* src/sfnt/sfobjs.c (sfnt_open_font): Allow `typ1' version tag in
3853	the beginning of sfnt container.
3854	* src/sfnt/ttload.c (check_table_dir): Return
3855	`SFNT_Err_Table_Missing' when sfnt table directory structure is
3856	correct but essential tables for TrueType fonts (`head', `bhed' or
3857	`SING') are missing.  Other errors are returned by
3858	SFNT_Err_Unknown_File_Format.
3859
3860	* src/base/ftobjs.c (FT_Open_Face): When TrueType driver returns
3861	`FT_Err_Table_Missing', try `open_face_PS_from_sfnt_stream'.  It is
3862	enabled only when old mac font support is configured.
3863
38642008-10-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3865
3866	* include/freetype/tttags.h (TTAG_CID, TTAG_FOND, TTAG_LWFN,
3867	TTAG_POST, TTAG_sfnt, TTAG_TYP1, TTAG_typ1): New tags to simplify
3868	the repeated calculations of these values in ftobjs.c and ftmac.c.
3869	* src/base/ftobjs.c: Replace all FT_MAKE_TAG by new tags.
3870	* src/base/ftmac.c: Ditto.
3871	* builds/mac/ftmac.c: Ditto.
3872
38732008-10-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3874
3875	* src/base/ftobjs.c (ft_lookup_PS_in_sfnt_stream): Remove wrong
3876	initialization of *is_sfnt_cid.
3877
38782008-10-04  Werner Lemberg  <wl@gnu.org>
3879
3880	* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Remove compiler
3881	warnings.
3882
38832008-10-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3884
3885	* src/base/ftobjs.c (ft_lookup_PS_in_sfnt): Replaced by...
3886	(ft_lookup_PS_in_sfnt_stream): This.
3887	(open_face_PS_from_sfnt_stream): New function.  It checks whether
3888	the stream is sfnt-wrapped Type1 PS font or sfnt-wrapped CID-keyed
3889	font, then try to open a face for given face_index.
3890	(Mac_Read_sfnt_Resource): Replace the combination of
3891	`ft_lookup_PS_in_sfnt' and `open_face_from_buffer' by
3892	`open_face_PS_from_sfnt_stream'.
3893	* src/base/ftmac.c (FT_New_Face_From_SFNT): Ditto.
3894	* builds/mac/ftmac.c (FT_New_Face_From_SFNT): Ditto.
3895	* src/base/ftbase.h: Remove `ft_lookup_PS_in_sfnt' and add
3896	`open_face_PS_from_sfnt_stream'.
3897
38982008-10-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3899
3900	* src/base/ftobjs.c (ft_lookup_PS_in_sfnt): Set *is_sfnt_cid to
3901	FALSE if neither `CID ' nor `TYP1' is found in the sfnt container.
3902
39032008-10-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3904
3905	* include/freetype/config/ftconfig.h: Define FT_MACINTOSH when SC or
3906	MrC compiler of MPW is used.  These compilers do not define the
3907	macro __APPLE__ by themselves.
3908	* builds/unix/ftconfig.in: Ditto.
3909	* builds/vms/ftconfig.h: Ditto.
3910	* src/base/ftbase.c: Use FT_MACINTOSH instead of __APPLE__, to
3911	include ftmac.c if FreeType 2 is built by MPW.
3912	* src/base/ftobjs.c: Use FT_MACINTOSH instead of __APPLE__, to
3913	enable shared functions for ftmac.c if FreeType 2 is built by MPW.
3914
3915	* builds/mac/ftmac.c: Include ftbase.h.
3916	(memory_stream_close): Removed.
3917	(new_memory_stream): Ditto.
3918	(open_face_from_buffer): Removed.  Use the implementation in
3919	ftobjs.c.
3920	(ft_lookup_PS_in_sfnt): Ditto.
3921
3922	* builds/mac/FreeType.m68k_far.make.txt: Build ftmac.c as an
3923	included part of ftbase.c, to share the functions in ftobjs.c.  The
3924	rule compiling ftmac.c separately is removed and the rule copying
3925	ftbase.c from src/base/ftbase.c to builds/mac/ftbase.c is added.
3926	* builds/mac/FreeType.m68k_cfm.make.txt: Ditto.
3927	* builds/mac/FreeType.ppc_classic.make.txt: Ditto.
3928	* builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
3929
39302008-10-02  Bram Tassyns  <bramt@enfocus.be>
3931
3932	* src/cff/cffgload.c (cff_slot_load): Map CID 0 to GID 0.  This
3933	fixes Savannah bug #24430.
3934
39352008-10-02  Werner Lemberg  <wl@gnu.org>
3936
3937	* builds/freetype.mk (BASE_H): Rename to...
3938	(INTERNAL_H): This.
3939	(FREETYPE_H): Updated.
3940	* src/base/rules.mk: (BASE_OBJ_S, OBJ_DIR/%.$O): Add BASE_H.
3941	* src/bdf/rules.mk (BDF_DRV_H): Add bdferror.h.
3942	* src/cache/rules.mk (CACHE_DRV_H): Add ftccache.h and ftcsbits.h.
3943	* src/pcf/rules.mk (PCF_DRV_H): Add pcfread.h.
3944	* src/raster/rules.mk (RASTER_DRV_H): Add ftmisc.h.
3945	* src/type42/rules.mk (T42_DRV_H): Add t42types.h.
3946
39472008-10-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3948
3949	* src/base/ftbase.h: New file to declare the private utility
3950	functions shared by the sources of base modules.  Currently,
3951	`ft_lookup_PS_in_sfnt' and `open_face_from_buffer' are declared to
3952	share between ftobjs.c and ftmac.c.
3953
3954	* src/base/rule.mk: Add ftbase.h.
3955
3956	* src/base/ftobjs.c: Include ftbase.h.
3957	(memory_stream_close): Build on any platform when old MacOS font
3958	support is enabled.
3959	(new_memory_stream): Ditto.
3960	(open_face_from_buffer): Build on any platform when old MacOS font
3961	support is enabled.  The counting of the face in a font file is
3962	slightly different between Carbon-dependent parser and Carbon-free
3963	parser.  They are merged with the platform-specific conditional.
3964	(ft_lookup_PS_in_sfnt): Ditto.
3965
3966	* src/base/ftmac.c: Include ftbase.h.
3967	(memory_stream_close): Removed.
3968	(new_memory_stream): Ditto.
3969	(open_face_from_buffer): Removed.  Use the implementation in
3970	ftobjs.c.
3971	(ft_lookup_PS_in_sfnt): Ditto.
3972
39732008-10-02  Werner Lemberg  <wl@gnu.org>
3974
3975	* src/sfnt/sfobjs.c (sfnt_load_face): `psnames_error' is only needed
3976	if TT_CONFIG_OPTION_POSTSCRIPT_NAMES is defined.
3977
39782008-10-01  Werner Lemberg  <wl@gnu.org>
3979
3980	* src/truetype/ttobjs.c (tt_face_done), src/cff/cffobjs.c
3981	(cff_face_done), src/pfr/pfrobjs.c (pfr_face_done),
3982	src/pcf/pcfdrivr.c (PCF_Face_Done), src/cid/cidobjs.c
3983	(cid_face_done), src/bdf/bdfdrivr. (BDF_Face_Done),
3984	src/sfnt/sfobjs.c (sfnt_face_done): Protect against face == 0.
3985	Reported by Graham Asher.
3986
39872008-09-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3988
3989	* src/base/rules.mk: Add conditional source to BASE_SRC, for `make
3990	multi' on Mac OS X.  If the macro $(ftmac_c) is defined,
3991	$(BASE_DIR)/$(ftmac_c) is added to BASE_SRC.  In a normal build, the
3992	lack of ftmac.c in BASE_SRC is not serious because ftbase.c includes
3993	ftmac.c.
3994	* builds/unix/unix-def.in: Add a macro definition of $(ftmac_c).
3995	* builds/unix/configure.raw: Add procedure to set up appropriate
3996	value of $(ftmac_c) with the consideration of the availability of
3997	Carbon framework.
3998
39992008-09-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4000
4001	* src/base/Jamfile: Add target for multi build by jam on Mac OS X.
4002	* src/base/ftobjs.c (FT_New_Face): Fix the condition to include this
4003	function for MPW building.  It is synchronized the condition to
4004	include ftmac.c source into ftbase.c.
4005
40062008-09-22  Werner Lemberg  <wl@gnu.org>
4007
4008	* src/cff/cffgload.c (CFF_Operator, cff_argument_counts,
4009	cff_decoder_parse_charstrings): Handle (invalid)
4010	`callothersubr' and `pop' instructions.
4011
40122008-09-22  John Tytgat  <John.Tytgat@esko.com>
4013
4014	Fix Savannah bug #24307.
4015
4016	* include/freetype/internal/t1types.h (CID_FaceRec),
4017	src/type42/t42types.h (T42_FaceRec): Comment out `afm_data'.
4018
40192008-09-21  Werner Lemberg  <wl@gnu.org>
4020
4021	* src/smooth/ftgrays.c (gray_raster_render): Don't dereference
4022	`target_map' if FT_RASTER_FLAG_DIRECT is set.  Problem reported by
4023	Stephan T. Lavavej <stl@nuwen.net>.
4024
40252008-09-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4026
4027	* src/otvalid/Jamfile: Add missing target `otvmath' for multi build
4028	by jam.
4029	* src/sfnt/Jamfile: Add missing target `ttmtx' for multi build by
4030	jam.
4031
40322008-09-20  Werner Lemberg  <wl@gnu.org>
4033
4034	* src/smooth/ftgrays.c (gray_find_cell): Fix threshold.  The values
4035	passed to this function are already `normalized'.  Problem reported
4036	by Stephan T. Lavavej <stl@nuwen.net>.
4037
4038	* docs/CHANGES: Document it.
4039
40402008-09-20  Werner Lemberg  <wl@gnu.org>
4041
4042	* src/base/ftoutln.c: Include FT_INTERNAL_DEBUG_H.
4043	(FT_Outline_Decompose): Decorate with tracing messages.
4044
4045	* src/smooth/ftgrays.c [DEBUG_GRAYS]: Replace with
4046	FT_DEBUG_LEVEL_TRACE.
4047	[_STANDALONE_ && FT_DEBUG_LEVEL_TRACE]: Include stdio.h and
4048	stdarg.h.
4049
4050	(FT_TRACE) [_STANDALONE_]: Remove.
4051	(FT_Message) [_STANDALONE_ && FT_DEBUG_LEVEL_TRACE]: New function.
4052	(FT_TRACE5, FT_TRACE7) [_STANDALONE_]: New macros.
4053	(FT_ERROR) [_STANDALONE_]: Updated.
4054
4055	(gray_hline) [FT_DEBUG_LEVEL_TRACE]: Fix condition.
4056	Use FT_TRACE7.
4057	(gray_dump_cells): Make it `static void'.
4058	(gray_convert_glyph): Use FT_TRACE7.
4059
4060	(FT_Outline_Decompose) [_STANDALONE_]: Synchronize with version in
4061	ftoutln.c.
4062
4063	* src/base/ftadvanc.c (FT_Get_Advance, FT_Get_Advances): Use
4064	FT_ERROR_BASE.
4065
4066	* docs/formats.txt: Updated.
4067
40682008-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4069
4070	* src/base/ftmac.c: Import sfnt-wrapped Type1 and sfnt-wrapped
4071	CID-keyed font support.
4072	* builds/mac/ftmac.c: Ditto.
4073
40742008-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4075
4076	* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Fix double free bug in
4077	sfnt-wrapped Type1 and sfnt-wrapped CID-keyed font support code.
4078	`open_face_from_buffer' frees the passed buffer if it cannot open a
4079	face from the buffer, so the caller must not free it.
4080
40812008-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4082
4083	* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add initial support
4084	for sfnt-wrapped Type1 and sfnt-wrapped CID-keyed font.
4085	(ft_lookup_PS_in_sfnt): New function to look up `TYP1' or `CID '
4086	table in sfnt table directory.  It is used before loading TrueType
4087	font driver.
4088
4089	* docs/CHANGES: Add note about the current status of sfnt-wrapped
4090	Type1 and sfnt-wrapped CID-keyed font support.
4091
40922008-09-18  Werner Lemberg  <wl@gnu.org>
4093
4094	* src/base/ftsystem.c (FT_Done_Memory): Use ft_sfree directly for
4095	orthogonality (ft_free and ft_sfree could belong to different memory
4096	pools).  This fixes Savannah bug #24297.
4097
40982008-09-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4099
4100	* src/cff/cffobjs.c (cff_face_init): Use TTAG_OTTO defined
4101	in tttags.h instead of numerical value 0x4F54544FL.
4102
41032008-09-16  Werner Lemberg  <wl@gnu.org>
4104
4105	* src/cff/cffgload.h, src/cff/cffgload.c
4106	(cff_decoder_set_width_only): Eliminate function call.
4107
41082008-09-15  George Williams  <gww@silcom.com>
4109
4110	Fix Savannah bug #24179, reported by Bram Tassyns.
4111
4112	* src/type1/t1load.c (mm_axis_unmap, T1_Get_MM_Var): Fix computation
4113	of default values.
4114
41152008-09-15  Werner Lemberg  <wl@gnu.org>
4116
4117	* src/tools/glnames.py (main): Surround `ft_get_adobe_glyph_index'
4118	and `ft_adobe_glyph_list' with FT_CONFIG_OPTION_ADOBE_GLYPH_LIST to
4119	prevent unconditional definition.  This fixes Savannah bug #24241.
4120
4121	* src/psnames/pstables.h: Regenerated.
4122
41232008-09-13  Werner Lemberg  <wl@gnu.org>
4124
4125	* autogen.sh, builds/unix/configure.raw,
4126	include/freetype/config/ftconfig.h, builds/unix/ftconfig.in: Minor
4127	beautifying.
4128
4129	* include/freetype/ftadvanc.h, include/freetype/ftgasp.h,
4130	include/freetype/ftlcdfil.h: Protect against FreeType 1.
4131	Some other minor fixes.
4132
4133	* devel/ftoption.h: Synchronize with
4134	include/freetype/config/ftoption.h.
4135
41362008-09-11  Werner Lemberg  <wl@gnu.org>
4137
4138	* src/base/ftbase.c: Include ftadvanc.c.
4139
41402008-09-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4141
4142	* builds/unix/ftconfig.in: Duplicate the cpp computation of
4143	FT_SIZEOF_{INT|LONG} from include/freetype/config/ftconfig.h.
4144	(FT_USE_AUTOCONF_SIZEOF_TYPES): New macro.  If defined, the cpp
4145	computation is disabled and the statically configured sizes are
4146	used.  This fixes Savannah bug #21250.
4147
4148	* builds/unix/configure.raw: Add the checks to compare the cpp
4149	computation results of the bit length of int and long versus the
4150	sizes detected by running `configure'.  If the results are
4151	different, FT_USE_AUTOCONF_SIZEOF_TYPES is defined to prioritize the
4152	results.
4153	New option --{enable|disable}-biarch-config is added to define or
4154	undefine FT_USE_AUTOCONF_SIZEOF_TYPES manually.
4155
41562008-09-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4157
4158	* builds/unix/configure.raw: Clear FT2_EXTRA_LIBS when Carbon or
4159	ApplicationServices framework is missing.  Although this value is not
4160	used in building of FreeType2, it is written in `freetype2.pc' and
4161	`freetype-config'.
4162
41632008-09-01  David Turner  <david@freetype.org>
4164
4165	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Accept a negative cmap
4166	index to mean `use default cached FT_Face's charmap'.  This fixes
4167	Savannah bug #22625.
4168	* include/freetype/ftcache.h: Document it.
4169
4170
4171	Make FT_MulFix an inlined function.  This is done to speed up
4172	FreeType a little (on x86 3% when loading+hinting, 10% when
4173	rendering, ARM savings are more important though).  Disable this by
4174	undefining FT_CONFIG_OPTION_INLINE_MULFIX.
4175
4176	Use of assembler code can now be controlled with
4177	FT_CONFIG_OPTION_NO_ASSEMBLER.
4178
4179	* include/freetype/config/ftconfig.h, builds/unix/ftconfig.in
4180	[!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MulFix_arm): New assembler
4181	implementation.
4182	[!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MulFix_i386): Assembler
4183	implementation taken from `ftcalc.c'.
4184	[!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MULFIX_ASSEMBLER): New macro
4185	which is defined to the platform-specific assembler implementation
4186	of FT_MulFix.
4187	[FT_CONFIG_OPTION_INLINE_MULFIX && FT_MULFIX_ASSEMBLER]
4188	(FT_MULFIX_INLINED): New macro.
4189
4190	* include/freetype/config/ftoption.h (FT_CONFIG_OPTION_NO_ASSEMBLER,
4191	FT_CONFIG_OPTION_INLINE_MULFIX): New macros.
4192
4193	* include/freetype/freetype.h: Updated to handle FT_MULFIX_INLINED.
4194
4195	* src/base/ftcalc.c: Updated to use FT_MULFIX_ASSEMBLER and
4196	FT_MULFIX_INLINED.
4197
4198
4199	Add a new header named FT_ADVANCES_H declaring some new APIs to
4200	extract the advances of one or more glyphs without necessarily
4201	loading their outlines.  Also provide `fast loaders' for the
4202	TrueType, Type1, and CFF font drivers (more to come later).
4203
4204	* src/base/ftadvanc.c, include/freetype/ftadvanc.h: New files.
4205
4206	* include/freetype/config/ftheader.h (FT_ADVANCES_H): New macro.
4207	* include/freetype/freetype.h (FT_LOAD_ADVANCE_ONLY): New macro.
4208
4209	* include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc):
4210	`flags' and `advances' are now of type `FT_UInt' and `FT_Fixed',
4211	respectively.
4212
4213	* src/base/Jamfile (_sources), src/base/rules.mk (BASE_SRC): Add
4214	ftadvanc.c.
4215
4216	* src/cff/cffdrivr.c (cff_get_advances): New function.
4217	(cff_driver_class): Register it.
4218
4219	* src/cff/cffgload.c (cff_decoder_set_width_only): New function.
4220	(cff_decoder_parse_charstrings): Handle `width_only'.
4221	(cff_slot_load): Handle FT_LOAD_ADVANCE_ONLY.
4222
4223	* src/cff/cffgload.h (cff_decoder): New element `width_only'.
4224	(cff_decoder_set_width_only): New declaration.
4225
4226	* src/truetype/ttdriver.c (tt_get_advances): New function.
4227	(tt_driver_class): Register it.
4228
4229	* src/truetype/ttgload.c (Get_HMetrics, Get_VMetrics): Renamed to...
4230	(TT_Get_HMetrics, TT_Get_VMetrics): This.
4231	Update callers.
4232	* src/truetype/ttgload.h: Declare them.
4233
4234	* src/type1/t1gload.h, src/type1/t1gload.c (T1_Get_Advances): New
4235	function.
4236	* src/type1/t1driver.c (t1_driver_class): Register T1_Get_Advances.
4237
4238
4239	Add checks for minimum version of the `autotools' stuff.
4240
4241	* autogen.sh: Implement it.
4242	(get_major_version, get_minor_version, get_patch_version,
4243	compare_to_minimum_version, check_tool_version): New auxiliary
4244	functions.
4245
4246	* README.CVS: Document it.
4247
42482008-08-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4249
4250	* src/sfnt/sfobjs.c (sfnt_open_font): Use TTAG_OTTO defined in
4251	tttags.h instead of FT_MAKE_TAG( 'O', 'T', 'T', 'O' ).
4252
42532008-08-28  Werner Lemberg  <wl@gnu.org>
4254
4255	* src/type1/t1load.c (parse_encoding): Protect against infinite
4256	loop.  This fixes Savannah bug #24150 (where a patch has been posted
4257	too).
4258
42592008-08-23  Werner Lemberg  <wl@gnu.org>
4260
4261	* src/type/t1afm.c (compare_kern_pairs), src/psaux/afmparse.c
4262	(afm_compare_kern_pairs): Fix comparison.  This fixes Savannah bug
4263	#24119.
4264
42652008-08-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4266
4267	* src/base/ftobjs.c (FT_Stream_New): Initialize *astream always,
4268	even if passed library or arguments are invalid.  This fixes a bug
4269	that an uninitialized stream is freed when an invalid library handle
4270	is passed.  Originally proposed by Mike Fabian, 2008/08/18 on
4271	freetype-devel.
4272	(FT_Open_Face): Ditto (stream).
4273	(load_face_in_embedded_rfork): Ditto (stream2).
4274
42752008-08-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4276
4277	* src/base/ftmac.c: Add a fallback to guess the availability of the
4278	`ResourceIndex' type.  It is used when built without configure
4279	(e.g., a build with Jam).
4280	* builds/mac/ftmac.c: Ditto.
4281	* builds/unix/configure.raw: Set HAVE_TYPE_RESOURCE_INDEX to 1 or 0
4282	explicitly, even if `ResourceIndex' is unavailable.
4283
42842008-08-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4285
4286	* builds/unix/configure.raw: In checking of Mac OS X features,
4287	all-in-one header file `Carbon.h' is replaced by the minimum
4288	header file `CoreServices.h', similar to current src/base/ftmac.c.
4289
42902008-08-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4291
4292	* src/sfnt/ttcmap.c (tt_cmap2_validate): Skip the validation of
4293	sub-header when its code_count is 0.  Many Japanese Dynalab fonts
4294	include such an empty sub-header (code_count == 0, first_code == 0
4295	delta == 0, but offset != 0) as the second sub-header in SJIS cmap.
4296
42972008-08-04  Werner Lemberg  <wl@gnu.org>
4298
4299	* src/type1/t1tokens.h: Handle `ForceBold' keyword.  This fixes
4300	Savannah bug #23995.
4301
4302	* src/cid/cidload.c (parse_expansion_factor): New callback function.
4303	(cid_field_records): Use it for `ExpansionFactor'.
4304	* src/cod/cidtoken.h: Handle `ForceBold' keyword.
4305	Don't handle `ExpansionFactor'.
4306
43072008-08-04  Bram Tassyns  <bramt@enfocus.be>
4308
4309	* src/cff/cffparse.c (cff_parse_fixed_scaled): Fix thinko which
4310	resulted in incorrect scaling.  This fixes Savannah bug #23973.
4311
43122008-08-04  Werner Lemberg  <wl@gnu.org>
4313
4314	Be more tolerant w.r.t. invalid entries in SFNT table directory.
4315
4316	* src/sfnt/ttload.c (check_table_dir): Ignore invalid entries and
4317	adjust table count.
4318	Add more trace messages.
4319	(tt_face_load_font_dir): Updated.
4320
43212008-07-30  Werner Lemberg  <wl@gnu.org>
4322
4323	* src/cff/cffgload.c (cff_decoder_parse_charstrings): No longer
4324	assume that the first argument on the stack is the bottom-most
4325	element.  Two reasons:
4326
4327	  o According to people from Adobe it is missing in the Type 2
4328	    specification that pushing of additional, superfluous arguments
4329	    on the stack is prohibited.
4330
4331	  o Acroread in general handles fonts differently, namely by popping
4332	    the number of arguments needed for a particular operand (as a PS
4333	    interpreter would do).  In case of buggy fonts this causes a
4334	    different interpretation which of the elements on the stack are
4335	    superfluous and which not.
4336
4337	Since there are CFF subfonts (embedded in PDFs) which rely on
4338	Acroread's behaviour, FreeType now does the same.
4339
43402008-07-27  Werner Lemberg  <wl@gnu.org>
4341
4342	Add extra mappings for `Tcommaaccent' and `tcommaaccent'.  This
4343	fixes Savannah bug #23940.
4344
4345	* src/psnames/psmodule.c (WGL_EXTRA_LIST_SIZE): Rename to...
4346	(EXTRA_GLYPH_LIST_SIZE): This.
4347	Increase by 2.
4348	(ft_wgl_extra_unicodes): Rename to...
4349	(ft_extra_glyph_unicodes): This.
4350	Add two code values.
4351	(ft_wgl_extra_glyph_names): Rename to...
4352	(ft_extra_glyph_names): This.
4353	Add two glyphs.
4354	(ft_wgl_extra_glyph_name_offsets): Rename to...
4355	(ft_extra_glyph_name_offsets): This.
4356	Add two offsets.
4357
4358	(ps_check_wgl_name, ps_check_wgl_unicode): Rename to...
4359	(ps_check_extra_glyph_name, ps_check_extra_glyph_unicode): This.
4360	Updated.
4361	(ps_unicodes_init): Updated.
4362
43632008-07-26  Werner Lemberg  <wl@gnu.org>
4364
4365	* src/cff/cffgload.c (cff_decoder_prepare,
4366	cff_decoder_parse_charstrings): Improve debug output.
4367
43682008-07-22  Martin McBride  <mmcbride@emtex.com>
4369
4370	* src/sfnt/ttcmap.c (tt_cmap4_validate, tt_cmap4_char_map_linear,
4371	tt_cmap4_char_map_binary): Handle fonts which treat the last segment
4372	specially.  According to the specification, such fonts would be
4373	invalid but acroread accepts them.
4374
43752008-07-16  Jon Foster  <Jon.Foster@cabot.co.uk>
4376
4377	* src/pfr/pfrdrivr.c (pfr_get_advance): Fix off-by-one error.
4378
4379	* src/base/ftcalc.c (FT_MulFix): Fix portability issue.
4380
4381	* src/sfnt/ttpost.c (MAC_NAME) [!FT_CONFIG_OPTION_POSTSCRIPT_NAMES]:
4382	Fix compiler warning.
4383
43842008-07-16  Werner Lemberg  <wl@gnu.org>
4385
4386	Handle CID-keyed fonts wrapped in an SFNT (with cmaps) correctly.
4387
4388	* src/cff/cffload.c (cff_font_load): Pass `pure_cff'.
4389	Invert sids table only if `pure_cff' is set.
4390	* src/cff/cffload.h: Updated.
4391
4392	* src/cff/cffobjs.c (cff_face_init): Updated.
4393	Set FT_FACE_FLAG_CID_KEYED only if pure_cff is set.
4394
4395	* docs/CHANGES: Updated.
4396
43972008-07-09  Werner Lemberg  <wl@gnu.org>
4398
4399	* src/truetype/ttpload.c (tt_face_load_loca): Handle buggy fonts
4400	where num_locations < num_glyphs.  Problem reported by Ding Li.
4401
44022008-07-05  Werner Lemberg  <wl@gnu.org>
4403
4404	Since FreeType uses `$(value ...)', we now need GNU make 3.80 or
4405	newer.  This fixes Savannah bug #23648.
4406
4407	* configure: zsh doesn't like ${1+"$@"}.
4408	Update needed GNU make version.
4409	* builds/toplevel.mk: Check for `$(eval ...)'.
4410	* docs/INSTALL.GNU, docs/INSTALL.CROSS, docs/INSTALL.UNIX: Document
4411	it.
4412
44132008-07-04  Werner Lemberg  <wl@gnu.org>
4414
4415	* src/raster/ftraster.c (Draw_Sweep): If span is smaller than one
4416	pixel, only check for dropouts if neither start nor end point lies
4417	on a pixel center.  This fixes Savannah bug #23762.
4418
44192008-06-29  Werner Lemberg  <wl@gnu.org>
4420
4421	* Version 2.3.7 released.
4422	=========================
4423
4424
4425	Tag sources with `VER-2-3-7'.
4426
4427	* docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
4428	version number to 2.3.7.
4429
4430	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
4431	builds/win32/visualc/freetype.dsp,
4432	builds/win32/visualc/freetype.vcproj,
4433	builds/win32/visualce/index.html,
4434	builds/win32/visualce/freetype.dsp,
4435	builds/win32/visualce/freetype.vcproj: s/2.3.6/2.3.7/, s/236/237/.
4436
4437	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 7.
4438
4439	* builds/unix/configure.raw (version_info): Set to 9:18:3.
4440
4441	* docs/release: Updated.
4442
44432008-06-28  Werner Lemberg  <wl@gnu.org>
4444
4445	* src/ftglyph.c (FT_Matrix_Multiply, FT_Matrix_Invert): Move to...
4446	* src/ftcalc.c: Here.  This fixes Savannah bug #23729.
4447
44482008-06-27  Werner Lemberg  <wl@gnu.org>
4449
4450	* src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
4451	Horizontal_Gray_Sweep_Drop): Test for intersections which
4452	degenerate to a single point can be ignored; this has been confirmed
4453	by Greg Hitchcock from Microsoft.  (This was commented out code.)
4454
44552008-06-26  Werner Lemberg  <wl@gnu.org>
4456
4457	Improve navigation in API reference.
4458
4459	* src/tools/docmaker/tohtml.py (html_header_3): Renamed to...
4460	(html_header_6): This.
4461	(html_header_3, html_header_3i, html_header_4, html_header_5,
4462	html_header_5t): New strings.
4463	(toc_footer_start, toc_footer_end): New strings.
4464	(HtmlFormatter::html_header): Updated.
4465	(HtmlFormatter::html_index_header, HtmlFormatter::html_toc_header):
4466	New strings.
4467	(HtmlFormatter::index_enter): Use `html_index_header'.
4468	(HtmlFormatter::index_exit): Print `html_footer'.
4469	(HtmlFormatter::toc_enter): Use `html_toc_header'.
4470	(HtmlFormatter::toc_exit): Print proper footer.
4471
4472	Convert ~ to non-breakable space.
4473
4474	* src/tools/docmaker/tohtml.py (make_html_para): Implement it.
4475	Update header files accordingly.
4476
44772008-06-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4478
4479	* builds/unix/configure.raw: Check type `ResourceIndex' explicitly
4480	and define HAVE_TYPE_RESOURCE_INDEX if it is defined.  Mac OS X 10.5
4481	bundles 10.4u SDK with MAC_OS_X_VERSION_10_5 macro but without
4482	ResourceIndex type definition.  The macro does not inform the type
4483	availability.
4484	* src/base/ftmac.c: More parentheses are inserted to clarify the
4485	conditionals to disable legacy APIs in `10.5 and later' cases.  If
4486	HAVE_TYPE_RESOURCE_INDEX is not defined, ResourceIndex is defined.
4487
44882008-06-24  Werner Lemberg  <wl@gnu.org>
4489
4490	* src/truetype/ttinterp.c (Ins_SCANTYPE): Don't check rendering
4491	mode.
4492
4493	* src/raster/ftraster.c (Render_Glyph, Render_Gray_Glyph,
4494	Draw_Sweep): No-dropout mode is value 2, not value 0.
4495	(Draw_Sweep): Really skip dropout handling for no-dropout mode.
4496
44972008-06-24  Werner Lemberg  <wl@gnu.org>
4498
4499	* src/psaux/psobjs.c (t1_builder_close_contour): Don't add contour
4500	if it consists of one point only.  Based on a patch from Savannah
4501	bug #23683 (from John Tytgat).
4502
45032008-06-22  Werner Lemberg  <wl@gnu.org>
4504
4505	* src/truetype/ttgload.c (TT_Load_Glyph): Protect bytecode stuff
4506	with IS_HINTED.
4507
4508	* docs/CHANGES: Updated.
4509
45102008-06-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4511
4512	* builds/unix/configure.raw: If CFLAGS has `-isysroot XXX' option
4513	but LDFLAGS does not, import it to LDFLAGS.  The option is used to
4514	specify non-default SDK on Mac OS X (e.g., universal binary SDK for
4515	Mac OS X 10.4 on PowerPC platform).  Although Apple TechNote 2137
4516	recommends to add the option only to CFLAGS, LDFLAGS should include
4517	it because libfreetype.la is built with -no-undefined.  This fixes a
4518	bug reported by Ryan Schmidt in MacPorts,
4519	https://trac.macports.org/ticket/15331.
4520
45212008-06-21  Werner Lemberg  <wl@gnu.org>
4522
4523	Enable access to the various dropout rules of the B&W rasterizer.
4524	Pass dropout rules from the TT bytecode interpreter to the
4525	rasterizer.
4526
4527	* include/freetype/ftimage.h (FT_OUTLINE_SMART_DROPOUTS,
4528	FT_OUTLINE_EXCLUDE_STUBS): New flags for FT_Outline.
4529
4530	* src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
4531	Horizontal_Gray_Sweep_Drop): Use same mode numbers as given in the
4532	OpenType specification.
4533	Fix mode 4 computation.
4534	(Render_Glyph, Render_Gray_Glyph): Handle new outline flags.
4535
4536	* src/truetype/ttgload.c (TT_Load_Glyph) Convert scan conversion
4537	mode to FT_OUTLINE_XXX flags.
4538
4539	* src/truetype/ttinterp.c (Ins_SCANCTRL): Enable ppem check.
4540
45412008-06-19  Werner Lemberg  <wl@gnu.org>
4542
4543	* src/cff/cffobjs.c (cff_face_init): Compute final
4544	`dict->units_per_em' value before assigning it to
4545	`cffface->units_per_EM'.  Otherwise, CFFs without subfonts are
4546	scaled incorrectly if the font matrix is non-standard.  This fixes
4547	Savannah bug #23630.
4548
4549	* docs/CHANGES: Updated.
4550
45512008-06-19  Werner Lemberg  <wl@gnu.org>
4552
4553	* src/type/t1objs.c (T1_Face_Init): Slightly improve algorithm fix
4554	from 2008-06-19.
4555
45562008-06-18  Werner Lemberg  <wl@gnu.org>
4557
4558	* src/type/t1objs.c (T1_Face_Init): Fix change from 2008-03-21.
4559	Reported by Peter Weilbacher <mozilla@weilbacher.org>.
4560
4561	* docs/CHANGES: Updated.
4562
45632008-06-15  George Williams  <gww@silcom.com>
4564
4565	* src/otvalid/otvgpos.c (otv_MarkBasePos_validate): Set
4566	`valid->extra2' to 1.  This is undocumented in the OpenType 1.5
4567	specification.
4568
45692008-06-15  Werner Lemberg  <wl@gnu.org>
4570
4571	* src/base/ftcalc.c (FT_MulFix) <asm>: Protect registers correctly
4572	from clobbering.  Patch from Savannah bug report #23556.
4573
4574	* docs/CHANGES: Document it.
4575
45762008-06-10  Werner Lemberg  <wl@gnu.org>
4577
4578	* autogen.sh: Add option `--install' to libtoolize.
4579
45802008-06-10  Werner Lemberg  <wl@gnu.org>
4581
4582	* Version 2.3.6 released.
4583	=========================
4584
4585
4586	Tag sources with `VER-2-3-6'.
4587
4588	* docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
4589	version number to 2.3.6.
4590
4591	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
4592	builds/win32/visualc/freetype.dsp,
4593	builds/win32/visualc/freetype.vcproj,
4594	builds/win32/visualce/index.html,
4595	builds/win32/visualce/freetype.dsp,
4596	builds/win32/visualce/freetype.vcproj: s/2.3.5/2.3.6/, s/235/236/.
4597
4598	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.
4599
4600	* builds/unix/configure.raw (version_info): Set to 9:17:3.
4601
4602
4603	* include/freetype/internal/psaux.h (T1_BuilderRec): Remove `scale_x'
4604	and `scale_y'.
4605	* src/cff/cffgload.h (CFF_Builder): Remove `scale_x' and `scale_y'.
4606
4607
4608	* src/cff/cffparse.c: Include FT_INTERNAL_DEBUG_H.
4609	* src/cff/cffobjs.h: Include FT_INTERNAL_POSTSCRIPT_HINTS_H.
4610
46112008-06-10  Werner Lemberg  <wl@gnu.org>
4612
4613	* src/base/ftobjs.c (open_face): Check `clazz->init_face' and
4614	`clazz->done_face'.
4615
46162008-06-09  VaDiM  <s_sliva@rambler.ru>
4617
4618	Support debugging on WinCE.  From Savannah patch #6536; this fixes
4619	bug #23497.
4620
4621	* builds/win32/ftdebug.c (OutputDebugStringEx): New function/macro
4622	as a replacement for OutputDebugStringA (which WinCE doesn't have).
4623	Update all callers.
4624	(ft_debug_init) [_WIN32_CE]: WinCE apparently doesn't have
4625	environment variables.
4626
46272008-06-09  Werner Lemberg  <wl@gnu.org>
4628
4629	* README.CVS: Updated.
4630
4631	* builds/unix/configure.raw, builds/unix/freetype-config.in: Updated
4632	for newer versions of autoconf and friends.
4633
46342008-06-08  Werner Lemberg  <wl@gnu.org>
4635
4636	* src/type1/t1parse.h (T1_ParserRec): Make `base_len' and
4637	`private_len' unsigned.
4638
4639	* src/type1/t1parse.c (read_pfb_tag): Make `asize' unsigned and read
4640	it as such.
4641	(T1_New_Parser, T1_Get_Private_Dict): Make `size' unsigned.
4642
4643
4644	* src/base/ftstream.c (FT_Stream_Skip): Reject negative values.
4645
4646
4647	* src/type1/t1load.c (parse_blend_design_positions): Check `n_axis'
4648	for sane value.
4649	Fix typo.
4650
4651
4652	* src/psaux/psobjs.c (ps_table_add): Check `idx' correctly.
4653
4654
4655	* src/truetype/ttinterp (Ins_SHC): Use BOUNDS() to check
4656	`last_point'.
4657
4658
4659	* src/sfnt/ttload.c (tt_face_load_max_profile): Limit
4660	`maxTwilightPoints'.
4661
46622008-06-06  Werner Lemberg  <wl@gnu.org>
4663
4664	* src/truetype/ttinterp.c (Ins_IP): Handle case `org_dist == 0'
4665	correctly.  This fixes glyphs `t' and `h' of Arial Narrow at 12ppem.
4666
46672008-06-03  Werner Lemberg  <wl@gnu.org>
4668
4669	* include/freetype/ftcache.h (FTC_FaceID): Change type back to
4670	FT_Pointer.  Reported by Ian Britten <britten@caris.com>.
4671
46722008-06-02  Werner Lemberg  <wl@gnu.org>
4673
4674	Emit header info for defined FreeType objects in reference.
4675
4676	* src/tools/docmaker/content.py (re_header_macro): New regexp.
4677	(ContentProcessor::__init__): Initialize new dictionary `headers'.
4678	(DocBlock::__init__): Collect macro header definitions.
4679
4680	* src/tools/docmaker/tohtml.py (header_location_header,
4681	header_location_footer): New strings.
4682	(HtmlFormatter::__init__): Pass `headers' dictionary.
4683	(HtmlFormatter::print_html_field): Don't emit paragraph tags.
4684	(HtmlFormatter::print_html_field_list): Emit empty paragraph.
4685	(HtmlFormatter::block_enter): Emit header info.
4686
46872008-06-01  Werner Lemberg  <wl@gnu.org>
4688
4689	* include/freetype/config/ftheader.h (FT_UNPATENTED_HINTING_H,
4690	FT_INCREMENTAL_H): Added.
4691
46922008-05-28  Werner Lemberg  <wl@gnu.org>
4693
4694	* src/tools/docmaker/sources.py (SourceBlock::__init__): While
4695	looking for markup tags, return immediately as soon a single one is
4696	found.
4697
46982008-05-28  Werner Lemberg  <wl@gnu.org>
4699
4700	* src/truetype/ttinterp.c (Ins_MD): The MD instruction also uses
4701	original, unscaled input values.  Confirmed by Greg Hitchcock from
4702	Microsoft.
4703
47042008-05-27  Werner Lemberg  <wl@gnu.org>
4705
4706	* src/tools/docmaker/tohtml.py (block_footer_start,
4707	block_footer_middle): Beautify output.
4708
47092008-05-25  Werner Lemberg  <wl@gnu.org>
4710
4711	* src/raster/ftraster.c (fc_black_render): Return 0 when we are
4712	trying to render into a zero-width/height bitmap, not an error code.
4713
4714	* src/truetype/ttgload.c (load_truetype_glyph): Move initialization
4715	of the graphics state for subglyphs to...
4716	(TT_Hint_Glyph): This function.
4717	Hinting instructions for a composite glyph apparently refer to the
4718	just hinted subglyphs, not the unhinted, unscaled outline.  This
4719	seems to fix Savannah bugs #20973 and (at least partially) #23310.
4720
47212008-05-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4722
4723	* src/base/ftmac.c (FT_New_Face_From_Suitcase): Check if valid
4724	`aface' is returned by FT_New_Face_From_FOND().  The patch was
4725	proposed by an anonymous reporter of Savannah bug #23204.
4726
47272008-05-18  Werner Lemberg  <wl@gnu.org>
4728
4729	* src/pshinter/pshalgo.c (ps_hints_apply): Reset scale values after
4730	correction for pixel boundary.  Without this patch, the effect can
4731	be cumulative under certain circumstances, making glyphs taller and
4732	taller after each call.  This fixes Savannah bug #19976.
4733
47342008-05-18  Werner Lemberg  <wl@gnu.org>
4735
4736	* src/base/ftdebug.c (FT_Message, FT_Panic): Send output to stderr.
4737	This fixes Savannah bug #23280.
4738
4739	* docs/CHANGES: Updated.
4740
47412008-05-18  David Turner  <david@freetype.org>
4742
4743	* src/psnames/psmodule.c (ft_wgl_extra_unicodes,
4744	ft_wgl_extra_glyph_names, ft_wgl_extra_glyph_name_offsets,
4745	ps_check_wgl_name, ps_check_wgl_unicode): Use `static' to make
4746	declarations non-global.
4747
4748	* src/type1/t1load.c: Add missing comment.
4749
47502008-05-17  Sam Hocevar  <samh>
4751
4752	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle zero-contour
4753	glyphs correctly.  Patch from Savannah bug #23277.
4754
47552008-05-16  Werner Lemberg  <wl@gnu.org>
4756
4757	* docs/CHANGES: Updated.
4758
47592008-05-16  Sergey Tolstov  <stolstov@esri.com>
4760
4761	Improve support for WGL4 encoded fonts.
4762
4763	* src/psnames/psmodule.c (WGL_EXTRA_LIST_SIZE): New macro.
4764	(ft_wgl_extra_unicodes, ft_wgl_extra_glyph_names,
4765	ft_wgl_extra_glyph_name_offsets): New arrays.
4766	(ps_check_wgl_name, ps_check_wgl_unicode): New functions.
4767	(ps_unicodes_init): Use them to add additional Unicode mappings.
4768
47692008-05-15  Werner Lemberg  <wl@gnu.org>
4770
4771	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
4772	<op_closepath>: `closepath' without a path is a no-op, not an error
4773	(cf. the PS reference manual).
4774
4775	Reported by Martin McBride.
4776
47772008-05-15  Werner Lemberg  <wl@gnu.org>
4778
4779	* builds/toplevel.mk (CONFIG_GUESS, CONFIG_SUB): Updated.
4780
47812008-05-15  Werner Lemberg  <wl@gnu.org>
4782
4783	* src/type1/t1load.c (parse_subrs): Accept fonts with a subrs array
4784	which contains a single but empty entry.  This is technically
4785	invalid (since it must end with `return'), but...
4786
4787	Reported by Martin McBride.
4788
47892008-05-14  Werner Lemberg  <wl@gnu.org>
4790
4791	Finish fix of scaling bug of CID-keyed CFF subfonts.
4792
4793	* include/freetype/internal/ftcalc.h, src/base/ftcalc.c
4794	(FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled): New
4795	functions.
4796
4797	* src/cff/cffobjs.h (CFF_Internal): New struct.  It is used to
4798	provide global hinting data for both the top-font and all subfonts
4799	(with proper scaling).
4800
4801	* src/cff/cffobjs.c (cff_make_private_dict): New function, using
4802	code from `cff_size_init'.
4803	(cff_size_init, cff_size_done, cff_size_select, cff_size_request):
4804	Use CFF_Internal and handle subfonts.
4805	(cff_face_init): Handle top-dict and subfont matrices correctly;
4806	apply some heuristic in case of unlikely matrix concatenation
4807	results.  This has been discussed with people from Adobe (thanks
4808	goes mainly to David Lemon) who confirm that the CFF specs are fuzzy
4809	and not correct.
4810
4811	* src/cff/cffgload.h (cff_decoder_prepare): Add `size' argument.
4812
4813	* src/cff/cffgload.c (cff_builder_init): Updated.
4814	(cff_decoder_prepare): Handle hints globals for subfonts.
4815	Update all callers.
4816	(cff_slot_load): Handling scaling of subfonts properly.
4817
4818	* src/cff/cffparse.c (cff_parse_fixed_dynamic): New function.
4819	(cff_parse_font_matrix): Use it.
4820
4821	* src/cff/cfftypes.h (CFF_FontDictRec): Make `units_per_em'
4822	FT_ULong.
4823
4824	* docs/CHANGES: Document it.
4825
48262008-05-13  Werner Lemberg  <wl@gnu.org>
4827
4828	* src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
4829	Handle case `face_index < 0'.
4830	* docs/CHANGES: Document it.
4831
48322008-05-04  Werner Lemberg  <wl@gnu.org>
4833
4834	First steps to fix the scaling bug of CID-keyed CFF subfonts,
4835	reported by Ding Li on 2008/03/28 on freetype-devel.
4836
4837	* src/base/cff/cffparse.c (power_tens): New array.
4838	(cff_parse_real): Rewritten to introduce a fourth parameter which
4839	returns the `scaling' of the real number so that we have no
4840	precision loss.  This is not used yet.
4841	Update all callers.
4842	(cff_parse_fixed_thousand): Replace with...
4843	(cff_parse_fixed_scaled): This function.  Update all callers.
4844
48452008-05-03  Werner Lemberg  <wl@gnu.org>
4846
4847	* src/base/ftobjs.c (FT_Load_Glyph): Call the auto-hinter without
4848	transformation since it recursively calls FT_Load_Glyph.  This fixes
4849	Savannah bug #23143.
4850
48512008-04-26  Werner Lemberg  <wl@gnu.org>
4852
4853	* include/freetype/internal/psaux.h (T1_BuilderRec): Mark `scale_x'
4854	and `scale_y' as obsolete since they aren't used.
4855	* src/psaux/psobjs.c (t1_builder_init): Updated.
4856
4857	* src/cff/cffgload.h (CFF_Builder): Mark `scale_x' and `scale_y' as
4858	obsolete since they aren't used.
4859	* src/cff/cffgload.c (cff_builder_init): Updated.
4860
48612008-04-14  Werner Lemberg  <wl@gnu.org>
4862
4863	* src/pcf/pcfdrivr.c (PCF_Face_Init): Protect call to
4864	`FT_Stream_OpenLZW' with `FT_CONFIG_OPTION_USE_LZW'.  From Savannah
4865	bug #22909.
4866
48672008-04-13  Werner Lemberg  <wl@gnu.org>
4868
4869	* src/psaux/psconv.c (PS_Conv_ToFixed): Increase precision if
4870	integer part is zero.
4871
48722008-04-01  Werner Lemberg  <wl@gnu.org>
4873
4874	Fix compilation with g++ 4.1 (with both `single' and `multi'
4875	targets).
4876
4877	* src/base/ftobjs.c (FT_Open_Face): Don't define a variable in block
4878	which is crossed by a `goto'.
4879
4880	* src/otvalid/otvalid.h (otv_MATH_validate): Add prototype.
4881
48822008-03-31  Werner Lemberg  <wl@gnu.org>
4883
4884	Fix support for subsetted CID-keyed CFFs.
4885
4886	* include/freetype/freetype.h (FT_FACE_FLAG_CID_KEYED,
4887	FT_IS_CID_KEYED): New macros.
4888
4889	* src/cff/cffobjs.c (cff_face_init): Set number of glyphs to the
4890	maximum CID value in CID-keyed CFFs.
4891	Handle FT_FACE_FLAG_CID_KEYED flag.
4892
4893	* docs/CHANGES: Document it.
4894
4895
4896	Fix CFF font matrix calculation and improve precision.
4897
4898	* src/cff/cffparse.c (cff_parse_real): Increase precision if integer
4899	part is zero.
4900	(cff_parse_font_matrix): Simplify computation of `units_per_em';
4901	this prevents overflow also.
4902
4903
4904	Support FT_Get_CID_Registry_Ordering_Supplement for PS CID fonts.
4905
4906	* src/cid/cidriver.c: Include FT_SERVICE_CID_H.
4907	(cid_get_ros): New function.
4908	(cid_service_cid_info): New service structure.
4909	(cid_services): Register it.
4910
49112008-03-23  Werner Lemberg  <wl@gnu.org>
4912
4913	Adjustments for Visual C++ 8.0, as reported by Rainer Deyke.
4914
4915	* builds/compiler/visualc.mk (CFLAGS): Remove /W5.
4916	(ANSIFLAGS): Add _CRT_SECURE_NO_DEPRECATE.
4917
49182008-03-21  Laurence Darby  <ldarby>
4919
4920	* src/type1/t1objs.c (T1_Face_Init): Use `/Weight'.  Patch from
4921	Savannah bug #22675.
4922
49232008-03-13  Derek Clegg  <dclegg@apple.com>
4924
4925	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix named style loop.
4926	Patch from Savannah bug #22541.
4927
49282008-03-03  Masatoshi Kimura  <VYV03354@nifty.ne.jp>
4929
4930	* src/sfnt/ttcmap.c (tt_cmap14_char_map_nondef_binary,
4931	tt_cmap14_find_variant): Return correct value.
4932	(tt_cmap14_variant_chars): Fix check for `di'.
4933
49342008-02-29  Werner Lemberg  <wl@gnu.org>
4935
4936	* docs/CHANGES: Updated.
4937
49382008-02-29  Wolf
4939
4940	Add build support for symbian platform.  From Savannah bug #22440.
4941
4942	* builds/symbian/*: New files.
4943
49442008-02-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4945
4946	* src/base/ftmac.c (parse_fond): Fix a bug of PostScript font name
4947	synthesis.  For any face of a specified FOND, always the name for
4948	the first face was used.  Except of a FOND that refers multiple
4949	Type1 font files, wrong synthesized font names are not used at all,
4950	so this is an invisible bug.  A few limit checks are added too.
4951
4952	* builds/mac/ftmac.c: Ditto.
4953
49542008-02-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4955
4956	* builds/unix/configure.raw: Split compiler option to link Carbon
4957	frameworks to one option for CoreServices framework and another
4958	option for ApplicationServices framework.  The split options can be
4959	managed by GNU libtool to avoid unrequired duplication when FreeType
4960	is linked with other applications.  Suggested by Daniel Macks,
4961	Savannah bug #22366.
4962
49632008-02-18  Victor Stinner  <victor.stinner@haypocalc.com>
4964
4965	* src/truetype/ttinterp.c (Ins_IUP): Check number of points.  Fix
4966	from Savannah bug #22356.
4967
49682008-02-17  Jonathan Blow  <jon@number-none.com>
4969
4970	* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
4971	Check for valid callback pointers.
4972
49732008-02-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4974
4975	* src/base/ftmac.c (FT_New_Face_From_SFNT): Check the sfnt resource
4976	handle by its value instead of ResError(), fix provided by Deron
4977	Kazmaier.  According to the Resource Manager Reference,
4978	GetResource(), Get1Resource(), GetNamedResource(),
4979	Get1NamedResource() and RGetResource() set noErr but return NULL
4980	handle when they can not find the requested resource.  These
4981	functions never return undefined values, so it is sufficient to
4982	check if the handle is not NULL.
4983
4984	* builds/mac/ftmac.c (FT_New_Face_From_SFNT): Ditto.
4985
49862008-02-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4987
4988	* src/base/ftbase.c: <ftmac.c> is replaced by "ftmac.c" as other
4989	inclusion styles.  Now it always includes src/base/ftmac.c;
4990	builds/mac/ftmac.c is never included in any configuration.
4991
4992	* builds/unix/configure.raw: Print warning if configure is executed
4993	with options to specify Carbon functionalities explicitly.
4994
4995	* docs/INSTALL.MAC: Note that legacy builds/mac/ftmac.c is not
4996	included automatically and manual replacement is required.
4997
49982008-02-11  Werner Lemberg  <wl@gnu.org>
4999
5000	* builds/modules.mk (CLOSE_MODULE, REMOVE_MODULE), builds/detect.mk
5001	(dos_setup), builds/freetype.mk (clean_project_dos,
5002	distclean_project_dos): Don't use \ but $(SEP).  Reported by Duncan
5003	Murdoch.
5004
50052008-01-18  Sylvain Pasche  <sylvain.pasche@gmail.com>
5006
5007	* src/base/ftlcdfil.c (_ft_lcd_filter_legacy): Updated comment to
5008	mention intra-pixel algorithm.
5009
5010	* include/freetype/freetype.h (FT_Render_Mode): Mention that
5011	FT_Library_SetLcdFilter can be used to reduce fringes.
5012
50132008-01-16  Werner Lemberg  <wl@gnu.org>
5014
5015	* src/raster/ftraster.c (ft_black_render): Check `outline' before
5016	using it.  Reported by Allan Yang.
5017
50182008-01-12  Werner Lemberg  <wl@gnu.org>
5019
5020	* src/raster/ftraster.c (FT_CONFIG_OPTION_5_GRAY_LEVELS): Remove.
5021
50222008-01-12  Allan Yang, Jian Hua - SH  <Allan.Yang@fmc.fujitsu.com>
5023
5024	* src/raster/ftraster.c (ft_black_init)
5025	[FT_RASTER_OPTION_ANTI_ALIASING]: Fix compilation.
5026
50272008-01-10  Werner Lemberg  <wl@gnu.org>
5028
5029	* src/truetype/ttgload.c (load_truetype_glyph): Handle the case
5030	where the number of contours in a simple glyph is zero (and which
5031	does contain an entry in the `glyf' table).  This fixes Savannah bug
5032	#21990.
5033
50342008-01-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5035
5036	Formatting suggested by Sean McBride.
5037
5038	* builds/mac/ftmac.c: Formatting (tab expanded).
5039	* src/autofit/afindic.c: Ditto.
5040	* src/base/ftcid.c: Ditto.
5041	* src/base/ftmac.c: Ditto.
5042
50432007-12-30  Werner Lemberg  <wl@gnu.org>
5044
5045	* src/smooth/ftgrays.c (gray_raster_render): Check `outline'
5046	correctly.
5047
50482007-12-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5049
5050	Improvement of POSIX resource-fork accessor to load unsorted
5051	references in a resource.  In HelveLTMM (resource-fork PostScript
5052	Type1 font bundled with Mac OS X since 10.3.x), the appearance order
5053	of PFB chunks is not sorted; sorting the chunks by reference IDs is
5054	required.
5055
5056	* include/freetype/internal/ftrfork.h (FT_RFork_Ref): New structure
5057	type to store a pair of reference ID and offset to the chunk.
5058
5059	* src/base/ftrfork.c (ft_raccess_sort_ref_by_id): New function to
5060	sort FT_RFork_Ref by their reference IDs.
5061
5062	(FT_Raccess_Get_DataOffsets): Returns an array of offsets that is
5063	sorted by reference ID.
5064
50652007-12-14  Werner Lemberg  <wl@gnu.org>
5066
5067	* src/cff/cffparse.c (cff_parse_real): Don't apply `power_ten'
5068	division too early; otherwise the most significant digit(s) of the
5069	final result are lost as the value is truncated to an integer.  This
5070	fixes Savannah bug #21794 (where the patch has been posted too).
5071
50722007-12-06  Fix  <4d876b82@gmail.com>
5073
5074	Pass options from one configure script to another as-is (not
5075	expanded).  This is needed for options like
5076	--includedir='${prefix}/include'.
5077
5078	* builds/unix/detect.mk, configure: Prevent argument expansion in
5079	call to the (real) `configure' script.
5080
50812007-12-06  Werner Lemberg  <wl@gnu.org>
5082
5083	* src/truetype/ttgload.c (load_truetype_glyph): Fix compilation if
5084	TT_USE_BYTECODE_INTERPRETER isn't defined.
5085
50862007-12-06  Werner Lemberg  <wl@gnu.org>
5087
5088	There exist CFFs which contain opcodes for the Type 1 operators
5089	`hsbw' and `closepath' which are both invalid in Type 2 charstrings.
5090	However, it doesn't harm to support them.
5091
5092	* src/cff/cffgload.c (CFF_Operator): Add `cff_op_hsbw' and
5093	`cff_op_closepath.'
5094	(cff_argument_counts): Ditto.
5095
5096	(cff_decoder_parse_charstrings): Handle Type 1 opcodes 9 (closepath)
5097	and 13 (hsbw) which are invalid in Type 2 charstrings.
5098
50992007-12-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5100
5101	* src/base/ftrfork.c (raccess_guess_darwin_newvfs): New function to
5102	support new pathname syntax `..namedfork/rsrc' to access a resource
5103	fork on Mac OS X.  The legacy syntax `/rsrc' does not work on
5104	case-sensitive HFS+.
5105	(raccess_guess_darwin_hfsplus): Fix a bug in the calculation of
5106	buffer size to store a pathname.
5107	* include/freetype/internal/ftrfork.h: Increment the number of
5108	resource fork guessing rule.
5109
51102007-12-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5111
5112	* builds/unix/configure.raw: Improve the compile tests to search
5113	Carbon functions.
5114	* builds/mac/ftmac.c: Import fixes for Carbon incompatibilities
5115	proposed by Sean McBride from src/base/ftmac.c (see 2007-11-16).
5116
51172007-12-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5118
5119	The documents and comments for Mac OS X are improved by Sean
5120	McBride.
5121
5122	* src/base/ftmac.c: Fix a comment.
5123	* include/freetype/ftmac.h: Ditto.
5124	* docs/INSTALL.MAC: Improve English and add comment on lowest
5125	system version specified by MACOSX_DEPLOYMENT_TARGET.
5126
51272007-12-04  Werner Lemberg  <wl@gnu.org>
5128
5129	* src/cff/cffload.c (cff_subfont_load): Don't use logical OR to
5130	concatenate error codes.
5131	* src/sfnt/ttsbit.c (Load_SBit_Range): Ditto.
5132
51332007-12-04  Graham Asher  <graham.asher@btinternet.com>
5134
5135	* src/truetype/ttobjs.c (tt_face_init): Don't use logical OR to
5136	concatenate error codes.
5137
51382007-12-04  Sean McBride  <sean@rogue-research.com>
5139
5140	* src/pfr/pfrgload.c (pfr_glyph_load_compound): Remove compiler
5141	warning.
5142
51432007-11-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5144
5145	Fix MacOS legacy font support by Masatake Yamato on Mac OS X.  It is
5146	not working since 2.3.5.  In FT_Open_New(), if FT_New_Stream()
5147	cannot mmap() the specified file and cannot seek to head of the
5148	specified file, it returns NULL stream and FT_Open_New() returns the
5149	error immediately.  On MacOS, most legacy MacOS fonts fall into such
5150	a scenario because their data forks are zero-sized and cannot be
5151	sought.  To proceed to guessing of resource fork fonts, the
5152	functions for legacy MacOS font must properly handle the NULL stream
5153	returned by FT_New_Stream().
5154
5155	* src/base/ftobjs.c (IsMacBinary): Return error
5156	FT_Err_Invalid_Stream_Operation immediately when NULL stream is
5157	passed.
5158	(FT_Open_Face): Even when FT_New_Stream() returns an error, proceed
5159	to fallback.  Originally, legacy MacOS font is tested in the cases
5160	of FT_Err_Invalid_Stream_Operation (occurs when data fork is empty)
5161	or FT_Err_Unknown_File_Format (occurs when AppleSingle header or
5162	.dfont header is combined).  Now the case of
5163	FT_Err_Cannot_Open_Stream is included.
5164
5165	* src/base/ftrfork.c (FT_Raccess_Guess): When passed stream is NULL,
5166	skip FT_Stream_Seek(), which seeks to the head of stream, and
5167	proceed to unit testing of raccess_guess_XXX().  FT_Stream_Seek()
5168	for a NULL stream causes a Bus error on Mac OS X.
5169	(raccess_guess_apple_double): Return FT_Err_Cannot_Open_Stream
5170	immediately if passed stream is NULL.
5171	(raccess_guess_apple_single): Ditto.
5172
51732007-11-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5174
5175	Fix for Carbon incompatibilities since Mac OS X 10.5,
5176	proposed by Sean McBride.
5177
5178	* doc/INSTALL.MAC: Comment on MACOSX_DEPLOYMENT_TARGET.
5179
5180	* include/freetype/ftmac.h: Deprecate FT_New_Face_From_FOND and
5181	FT_GetFilePath_From_Mac_ATS_Name.  Since Mac OS X 10.5, calling
5182	Carbon functions from a forked process is classified as unsafe
5183	by Apple.  All Carbon-dependent functions should be deprecated.
5184
5185	* src/base/ftmac.c: Use essential header files
5186	<CoreServices/CoreServices.h> and
5187	<ApplicationServices/ApplicationServices.h> instead of
5188	all-in-one header file <Carbon/Carbon.h>.
5189
5190	Include <sys/syslimits.h> and replace HFS_MAXPATHLEN by Apple
5191	genuine macro PATH_MAX.
5192
5193	Add fallback macro for kATSOptionFlagsUnRestrictedScope which
5194	is not found in Mac OS X 10.0.
5195
5196	Multi-character constants ('POST', 'sfnt' etc) are replaced by
5197	64bit constants calculated by FT_MAKE_TAG() macro.
5198
5199	For the index in the segment of resource fork, new portable
5200	type ResourceIndex is introduced for better compatibility.
5201	This type is since Mac OS X 10.5, so it is defined as short
5202	when built on older platforms.
5203
5204	(FT_ATSFontGetFileReference): If build target is only the systems
5205	10.5 and newer, it calls Apple genuine ATSFontGetFileReference().
5206
5207	(FT_GetFile_From_Mac_ATS_Name): Return an error if system is 10.5
5208	and newer or 64bit platform, because legacy type FSSpec type is
5209	removed completely.
5210
5211	(FT_New_Face_From_FSSpec): Ditto.
5212
52132007-11-01  Werner Lemberg  <wl@gnu.org>
5214
5215	* src/sfnt/sfobjs.c (sfnt_done_face): Check `sfnt' everywhere.  This
5216	fixes Savannah bug #21485.
5217
52182007-10-29  Daniel Svoboda  <dasvo@planeta@cz>
5219
5220	* src/winfonts/winfnt.c (FNT_Face_Init): Check first that the driver
5221	can handle the font at all, then check `face_index'.  Otherwise, the
5222	driver might return the wrong error code.  This fixes Savannah bug
5223	#21468.
5224
52252007-10-21  Werner Lemberg  <wl@gnu.org>
5226
5227	* src/sfnt/sfobjs.c (sfnt_load_face): Support bit 9 and prepare
5228	support for bit 8 of the `fsSelection' field in the `OS/2' table.
5229	MS is already using this; hopefully, this becomes part of OpenType
5230	1.5.
5231	Prepare also support for `name' IDs 21 (WWS_FAMILY) and 22
5232	(WWS_SUBFAMILY).
5233
52342007-10-20  Werner Lemberg  <wl@gnu.org>
5235
5236	* src/tools/docmaker/tohtml.py (html_header_2): Fix typo.
5237	Add `td.left' element to CSS.
5238	(toc_section_enter): Use it.
5239
52402007-10-18  David Turner  <david@freetype.org>
5241
5242	* include/freetype/freetype.h, src/base/ftobjs.c: Rename API
5243	functions related to cmap type 14 support to the
5244	`FT_Object_ActionName' scheme:
5245
5246	  FT_Get_Char_Variant_Index     -> FT_Face_GetCharVariantIndex
5247	  FT_Get_Char_Variant_IsDefault -> FT_Face_GetCharVariantIsDefault
5248	  FT_Get_Variant_Selectors      -> FT_Face_GetVariantSelectors
5249	  FT_Get_Variants_Of_Char       -> FT_Face_GetVariantsOfChar
5250	  FT_Get_Chars_Of_Variant       -> FT_Face_GetCharsOfVariant
5251
5252	Update documentation accordingly.
5253
5254	* src/sfnt/ttcmap.c: Stronger cmap 14 validation.
5255	Make the code a little more consistent with FreeType coding
5256	conventions and modify the cmap14 functions that returned a newly
5257	allocated array to use a persistent vector from the TT_CMap14 object
5258	instead.
5259
5260	(TT_CMap14Rec): Provide array and auxiliary data for result.
5261	(tt_cmap14_done, tt_cmap14_ensure): New functions.
5262
5263	(tt_cmap14_init, tt_cmap14_validate, tt_cmap14_char_map_def_binary,
5264	tt_cmap14_char_map_nondef_binary, tt_cmap14_find_variant,
5265	tt_cmap14_char_var_index, tt_cmap14_variants,
5266	tt_cmap14_char_variants, tt_cmap14_def_char_count,
5267	tt_cmap14_get_def_chars, tt_cmap14_get_nondef_chars,
5268	tt_cmap14_variant_chars, tt_cmap14_class_rec): Updated and improved.
5269
52702007-10-15  George Williams  <gww@silcom.com>
5271
5272	Add support for cmap type 14.
5273
5274	* devel/ftoption.h, include/freetype/config/ftoption.h
5275	(TT_CONFIG_CMAP_FORMAT_14): New macro.
5276
5277	* include/freetype/internal/ftobjs.h (FT_CMap_CharVarIndexFunc,
5278	FT_CMap_CharVarIsDefaultFunc, FT_CMap_VariantListFunc,
5279	FT_CMap_CharVariantListFunc, FT_CMap_VariantCharListFunc): New
5280	support function prototypes.
5281	(FT_CMap_ClassRec): Add them.
5282	Update all users.
5283
5284	* include/freetype/ttnameid.h (TT_APPLE_ID_VARIANT_SELECTOR): New
5285	macro.
5286
5287	* include/freetype/freetype.h (FT_Get_Char_Variant_Index,
5288	FT_Get_Char_Variant_IsDefault, FT_Get_Variant_Selectors,
5289	FT_Get_Variants_Of_Char, FT_Get_Chars_Of_Variant): New API
5290	functions.
5291
5292	* src/base/ftobjs.c (find_variant_selector_charmap): New auxiliary
5293	function.
5294	(FT_Set_Charmap): Disallow cmaps of type 14.
5295	(FT_Get_Char_Variant_Index, FT_Get_Char_Variant_IsDefault,
5296	FT_Get_Variant_Selectors, FT_Get_Variants_Of_Char,
5297	FT_Get_Chars_Of_Variant): New API functions.
5298
5299	* src/sfnt/ttcmap.c (TT_PEEK_UINT24, TT_NEXT_UINT24): New macros.
5300
5301	(TT_CMap14Rec, tt_cmap14_init, tt_cmap14_validate,
5302	tt_cmap14_char_index, tt_cmap14_char_next, tt_cmap14_get_info,
5303	tt_cmap14_char_map_def_binary, tt_cmap14_char_map_nondef_binary,
5304	tt_cmap14_find_variant, tt_cmap14_char_var_index,
5305	tt_cmap14_char_var_isdefault, tt_cmap14_variants,
5306	tt_cmap14_char_variants, tt_cmap14_def_char_count,
5307	tt_cmap14_get_def_chars, tt_cmap14_get_nondef_chars,
5308	tt_cmap14_variant_chars, tt_cmap14_class_rec): New functions and
5309	structures for cmap 14 support.
5310	(tt_cmap_classes): Register tt_cmap14_class_rec.
5311	(tt_face_build_cmaps): One more error message.
5312
5313	* docs/CHANGES: Mention cmap 14 support.
5314
53152007-10-01  Werner Lemberg  <wl@gnu.org>
5316
5317	* src/base/ftobjs.c (find_unicode_charmap): If search for a UCS-4
5318	charmap fails, do the loop again while searching a UCS-2 charmap.
5319	This favours MS charmaps over Apple ones.
5320
53212007-08-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5322
5323	* src/base/ftmac.c: Introduction of abstract `short' data types,
5324	ResFileRefNum and ResID.  These types were introduced for Copland,
5325	then backported to MPW.  The variables exchanged with FileManager
5326	QuickDraw frameworks are redefined by these data types.  Patch was
5327	proposed by Sean McBride.
5328	* builds/mac/ftmac.c: Ditto.
5329
53302007-08-18  Werner Lemberg  <wl@gnu.org>
5331
5332	* src/otvalid/otvcommn.c (otv_x_y_ux_sy): Skip context glyphs.  Found
5333	by Imran Yousaf.  Fixes Savannah bug #20773.
5334
5335	(otv_Lookup_validate): Correct handling of LookupType.  Found by
5336	Imran Yousaf.  Fixes Savannah bug #20782.
5337
53382007-08-17  George Williams  <gww@silcom.com>
5339
5340	* src/otvalid/otvgsub.c (otv_SingleSubst_validate): Fix handling of
5341	SingleSubstFormat1.
5342
53432007-08-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5344
5345	* builds/unix/configure.raw: Fix a bug which sets CC_BUILD by
5346	${build-gcc} (unchecked) instead of by ${build}-gcc (checked).
5347	Found by Ryan Hill.
5348
53492007-08-11  George Williams  <gww@silcom.com>
5350
5351	* src/otvalid/otvcommn.c, src/otvalid/otvcommn.h
5352	(otv_Coverage_validate): Add fourth argument to pass an expected
5353	count value.  Update all users.
5354	Check glyph IDs.
5355	(otv_ClassDef_validate): Check `StartGlyph'.
5356
5357	* src/otvalid/otvgsub.c (otv_SingleSubst_validate): More glyph ID
5358	checks.
5359
5360	* src/otvalid/otvmath.c (otv_MathConstants_validate): There are only
5361	56 constants.
5362	(otv_GlyphAssembly_validate, otv_MathGlyphConstruction_validate):
5363	Check glyph IDs.
5364
53652007-08-08  Werner Lemberg  <wl@gnu.org>
5366
5367	* src/otvalid/otvbase.c, src/otvalid/otvcommn.c,
5368	src/otvalid/otvgdef.c, src/otvalid/otvgpos.c, src/otvalid/otvgsub.c,
5369	src/otvalid/otvjstf.c: s/FT_INVALID_DATA/FT_INVALID_FORMAT/ where
5370	appropriate.  Reported by George.
5371
5372	* include/freetype/internal/fttrace.h: Define `trace_otvmath'.
5373
5374	* src/otvalid/rules.mk (OTV_DRV_SRC): Add otvmath.c.
5375
5376	* docs/CHANGES: Updated.
5377
53782007-08-08  George Williams  <gww@silcom.com>
5379
5380	Add `MATH' validating support to otvalid module.
5381
5382	* include/freetype/tttags.h (TTAG_MATH): New macro.
5383	* include/freetype/ftotval.h (FT_VALIDATE_MATH): New macro.
5384	(FT_VALIDATE_OT): Updated.
5385
5386	* src/otvalid/otvmath.c: New file.
5387
5388	* src/otvalid/otvalid.c: Include otvmath.c.
5389	* src/otvalid/otvmod.c (otv_validate): Handle `MATH' table.
5390
53912007-08-04  Werner Lemberg  <wl@gnu.org>
5392
5393	* builds/unix/configure.raw: Add call to AC_LIBTOOL_WIN32_DLL.
5394	Fixes Savannah bug #20686.
5395
53962007-08-03  Werner Lemberg  <wl@gnu.org>
5397
5398	* src/psnames/psmodule.c: Fix usage of
5399	FT_CONFIG_OPTION_POSTSCRIPT_NAMES macro.  Reported by Graham Asher.
5400
54012007-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5402
5403	* src/base/ftmac.c (open_face_from_buffer): The argument
5404	`driver_name' is typed as `const char*' to match with the
5405	callers in FT_New_Face_From_LWFN and FT_New_Face_From_SFNT.
5406	This is same with open_face_from_buffer in src/base/ftobjs.c.
5407	Found and fixed by Sean McBride.
5408
54092007-07-28  Werner Lemberg  <wl@gnu.org>
5410
5411	* src/raster/ftraster.c (count_table): Make it conditional.
5412	* src/base/ftobjs.c (FT_New_Library): Check FT_RENDER_POOL_SIZE with
5413	a preprocessor statement.
5414
54152007-07-27  Werner Lemberg  <wl@gnu.org>
5416
5417	* src/base/ftoutln.c (FT_Outline_Translate): Check `outline' before
5418	first usage.  From Savannah patch #6115.
5419
54202007-07-16  Werner Lemberg  <wl@gnu.org>
5421
5422	* docs/CHANGES: Updated.
5423
54242007-07-16  Derek Clegg  <dclegg@apple.com>
5425
5426	Add new service for getting the ROS from a CID font.
5427
5428	* include/freetype/config/ftheader.h (FT_CID_H): New macro.
5429	* include/freetype/ftcid.h: New file.
5430
5431	* include/freetype/internal/ftserv.h (FT_SERVICE_CID_H): New macro.
5432	* include/freetype/internal/services/svcid.h: New file.
5433
5434	* src/base/ftcid.c: New file.
5435
5436	* src/cff/cffdrivr.c: Include FT_SERVICE_CID_H.
5437	(cff_get_ros): New function.
5438	(cff_service_cid_info): New service structure.
5439	(cff_services): Register it.
5440
5441	* src/cff/cffload.c (cff_font_done): Free registry and ordering.
5442
5443	* src/cff/cfftypes.h (CFF_FontRec): Add `registry' and `ordering'.
5444
5445	* modules.cfg (BASE_EXTENSIONS): Add ftcid.c.
5446
54472007-07-11  Derek Clegg  <dclegg@apple.com>
5448
5449	Add support for postscript name service to CFF driver.
5450
5451	* src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_NAME_H.
5452	(cff_get_ps_name): New function.
5453	(cff_service_ps_name): New service structure.
5454	(cff_services): Register it.
5455
54562007-07-07  Werner Lemberg  <wl@gnu.org>
5457
5458	* src/base/ftglyph.c (FT_Glyph_Copy): Fix initialization of
5459	`target'.  Reported by Sean McBride.
5460
54612007-07-06  Werner Lemberg  <wl@gnu.org>
5462
5463	* src/pfr/pfrcmap.c: Include pfrerror.h.
5464
5465	* src/autofit/afindic.c: Add some external declarations to pacify
5466	`make multi' compilation.
5467
5468	* src/cid/cidgload.c (cid_load_glyph): Pacify compiler.
5469
5470	* src/cff/cffdrivr.c (cff_ps_get_font_info), src/cff/cffobjs.c
5471	(cff_strcpy), include/freetype/internal/ftmemory.h (FT_MEM_STRDUP),
5472	src/autofit/aflatin.c (af_latin_hints_compute_edges),
5473	src/autofit/afcjk.c (af_cjk_hints_compute_edges), src/sfnt/ttmtx.c
5474	(tt_face_get_metrics), src/base/ftobjs.c (open_face)
5475	[FT_CONFIG_OPTION_INCREMENTAL]: Fix compilation with C++ compiler.
5476
5477	* docs/release: Mention test compilation targets.
5478
54792007-07-04  Werner Lemberg  <wl@gnu.org>
5480
5481	* docs/PROBLEMS: Mention that some PS based fonts can't be
5482	handled correctly by FreeType.
5483
5484	* src/truetype/ttgload.c (load_truetype_glyph): Always allow a
5485	recursion depth of 1.  This was the maximum value in TrueType 1.0,
5486	and some older fonts don't set this field correctly.
5487
5488	* src/gxvalid/gxvmort1.c
5489	(gxv_mort_subtable_type1_substTable_validate): Fix tracing message.
5490
54912007-07-03  Werner Lemberg  <wl@gnu.org>
5492
5493	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Initialize
5494	`round' to pacify compiler.
5495
54962007-07-02  Werner Lemberg  <wl@gnu.org>
5497
5498
5499	* Version 2.3.5 released.
5500	=========================
5501
5502
5503	Tag sources with `VER-2-3-5'.
5504
5505	* docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
5506	version number to 2.3.5.
5507
5508	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
5509	builds/win32/visualc/freetype.dsp,
5510	builds/win32/visualc/freetype.vcproj,
5511	builds/win32/visualce/index.html,
5512	builds/win32/visualce/freetype.dsp,
5513	builds/win32/visualce/freetype.vcproj: s/2.3.4/2.3.5/, s/234/235/.
5514
5515	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
5516
5517	* builds/unix/configure.raw (version_info): Set to 9:16:3.
5518
55192007-07-01  David Turner  <david@freetype.org>
5520
5521	* include/freetype/freetype.h, src/base/ftpatent.c
5522	(FT_Face_SetUnpatentedHinting): New function to dynamically change
5523	the setting after a face is created.
5524
5525	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Fix a small bug
5526	that created distortions in the bytecode interpreter results.
5527
55282007-06-30  David Turner  <david@freetype.org>
5529
5530	* src/truetype/ttinterp.c (Ins_IUP): Add missing variable
5531	initialization.
5532
5533	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Get rid of an
5534	infinite loop in the case of degenerate fonts.
5535
55362007-06-26  Rahul Bhalerao  <b.rahul.pm@gmail.com>
5537
5538	Add autofit module for Indic scripts.  This currently just reuses
5539	the CJK-specific functions.
5540
5541	* include/freetype/config/ftoption.h (AF_CONFIG_OPTION_INDIC): New
5542	macro.
5543	* devel/ftoption.h: Synchronize with
5544	include/freetype/config/ftoption.h.
5545
5546	* src/autofit/afindic.c, src/autofit/afindic.h: New files.
5547
5548	* src/autofit/afglobal.c, src/autofit/aftypes.h,
5549	src/autofit/autofit.c: Updated.
5550
5551	* src/autofit/Jamfile (_sources), * src/autofit/rules.mk
5552	(AUTOF_DRV_SRC): Updated.
5553
55542007-06-23  David Turner  <david@freetype.org>
5555
5556	* src/truetype/ttgload.c (TT_Load_Simple): Fix change from
5557	2007-06-16 that prevented the TrueType module from loading most
5558	glyphs.
5559
55602007-06-20  Werner Lemberg  <wl@gnu.org>
5561
5562	* src/cff/cffgload.c (cff_slot_load): Fix logic of 2007-05-28
5563	change.
5564
55652007-06-19  Werner Lemberg  <wl@gnu.org>
5566
5567	* src/type1/t1load.c (parse_encoding): Handle one more error.
5568
55692007-06-19  Dmitry Timoshkov  <dmitry@codeweavers.com>
5570
5571	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Return error
5572	FNT_Err_Invalid_File_Format if file format was recognized but
5573	the file doesn't contain any FNT(NE) or RT_FONT(PE) resources.
5574	Add verbose debug logs to make it easier to debug failing load
5575	attempts.
5576	(FNT_Face_Init): A single FNT font can't contain more than 1 face,
5577	so return an error if requested face index is > 0.
5578	Do not do further attempt to load fonts if a previous attempt has
5579	failed but returned error FNT_Err_Invalid_File_Format, i.e., the
5580	file format has been recognized but no fonts found in the file.
5581
55822007-07-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
5583
5584	* src/base/ftmac.c: Apply patches proposed by Sean McBride.
5585	(FT_GetFile_From_Mac_Name): Insert FT_UNUSED macros to fix
5586	the compiler warnings against unused arguments.
5587	(FT_ATSFontGetFileReference): Ditto.
5588	(FT_GetFile_From_Mac_ATS_Name): Ditto.
5589	(FT_New_Face_From_FSSpec): Ditto.
5590	(lookup_lwfn_by_fond): Fix wrong comment.
5591	Replace `const StringPtr' by more appropriate type
5592	`ConstStr255Param'.
5593	FSRefMakePathPath always returns UTF8 POSIX pathname in
5594	Mach-O, thus HFS pathname support is dropped.
5595	(count_faces): Remove HLock and HUnlock which is not
5596	required on Mac OS X anymore.
5597	(FT_New_Face_From_SFNT): Ditto.
5598	(FT_New_Face_From_FOND): Ditto.
5599	* builds/mac/ftmac.c: Synchronize to src/base/ftmac.c,
5600	except of HFS pathname support and HLock/HUnlock.
5601	They are required on classic CFM environment.
5602
56032007-06-18  Werner Lemberg  <wl@gnu.org>
5604
5605	* src/psaux/psobjs.c (ps_parser_skip_PS_token): Remove incorrect
5606	assertion.
5607	(ps_parser_to_bytes): Fix error message.
5608
5609	* src/type42/t42objs.c (T42_Open_Face): Handle one more error.
5610	* src/type42/t42parse.c (t42_parse_sfnts): s/alloc/allocated/.
5611	Don't allow mixed binary and hex strings.
5612	Handle string_size == 0 and string_buf == 0.
5613	(t42_parse_encoding): Handle one more error.
5614
56152007-06-18  Werner Lemberg  <wl@gnu.org>
5616
5617	* src/psaux/psobjs.c (ps_tofixedarray, ps_tocoordarray): Fix exit
5618	logic.
5619	(ps_parser_load_field) <T1_FIELD_TYPE_BBOX>: Skip delimiters
5620	correctly.
5621	(ps_parser_load_field_table): Use `fields->array_max' instead of
5622	T1_MAX_TABLE_ELEMENTS to limit the number of arguments.
5623
5624	* src/cff/cffgload.c (cff_decoder_prepare): Fix change from
5625	2007-06-06.
5626
56272007-06-17  Werner Lemberg  <wl@gnu.org>
5628
5629	* src/tools/ftrandom.c (font_size): New global variable.
5630	(TestFace): Use it.
5631	(main): Handle new option `--size' to set `font_size'.
5632	(Usage): Updated.
5633
5634	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Exit in case of
5635	invalid font.
5636	(FNT_Load_Glyph): Protect against invalid bitmap width.
5637
56382007-06-16  David Turner  <david@freetype.org>
5639
5640	* src/smooth/ftgrays.c (gray_find_cell, gray_set_cell, gray_hline):
5641	Prevent integer overflows when rendering very large outlines.
5642
5643	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check the
5644	well-formedness of the contours array when loading a glyph.
5645
5646	* src/truetype/ttinterp.c (TT_Load_Context): Initialize `zp0', `zp1',
5647	and `zp2'.
5648	(Ins_IP): Check argument ranges to reject bogus operations properly.
5649	(IUP_WorkerRec): Add `max_points' member.
5650	(_iup_worker_interpolate): Check argument ranges.
5651	(Ins_IUP): Ignore empty outlines.
5652
56532007-06-16  Dmitry Timoshkov  <dmitry@codeweavers.com>
5654
5655	* src/winfonts/winfnt.h: Add necessary structures for PE resource
5656	parsing.
5657	(WinPE32_HeaderRec): New structure.
5658	(WinPE32_SectionRec): New structure.
5659	(WinPE_RsrcDirRec): New structure.
5660	(WinPE_RsrcDirEntryRec): New structure.
5661	(WinPE_RsrcDataEntryRec): New structure.
5662	(FNT_FontRec): Remove unused `size_shift' field.
5663
5664	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Add support for
5665	loading bitmap .fon files in PE format.
5666
56672007-06-15  Dmitry Timoshkov  <dmitry@codeweavers.com>
5668
5669	* builds/win32/ftdebug.c: Unify debug level handling with other
5670	platforms.
5671
56722007-06-14  Dmitry Timoshkov  <dmitry@codeweavers.com>
5673
5674	* builds/win32/ftdebug.c (FT_Message): Send debug output to the
5675	console as well as to the debugger.
5676
56772007-06-14  Werner Lemberg  <wl@gnu.org>
5678
5679	* src/autofit/aflatin.c (af_latin_uniranges): Expand structure to
5680	cover all ranges which could possibly be handled by the aflatin
5681	module (since the default fallback for unknown ranges is now the
5682	afcjk module).  It might be necessary to fine-tune this further by
5683	splitting off modules for Greek, Cyrillic, or other blocks.
5684
56852007-06-11  David Turner  <david@freetype.org>
5686
5687	* src/autofit/aflatin.c (af_latin_hints_link_segments): Fix
5688	incorrect segment linking computation.  This was the root cause of
5689	Savannah bug #19565.
5690
5691
5692	* src/autofit/* [FT_OPTION_AUTOFIT2]: Some very experimental changes
5693	to improve the Latin auto-hinter.  Note that the new code is
5694	disabled by default since it is not stabilized yet.
5695
5696	* src/autofit/aflatin2.c, src/autofit/aflatin2.h: New files
5697	(disabled currently).
5698
5699	* src/autofit/afhints.c: Remove dead code.
5700	(af_axis_hints_new_edge): Add argument to handle segment directions.
5701	(af_edge_flags_to_string): New function.
5702	(af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Handle
5703	option flags.
5704	(af_glyph_hints_reload): Add argument to handle inflections.
5705	Simplify.
5706	(af_direction_compute): Fine tuning.
5707	(af_glyph_hints_align_edge_points): Fix logic.
5708	(af_glyph_hints_align_strong_points): Do linear search for small
5709	edge counts.
5710	(af_glyph_hints_align_weak_points): Skip any touched neighbors.
5711	(af_iup_shift): Handle zero `delta'.
5712
5713	* src/autofit/afhints.h: Updated.
5714	(AF_SORT_SEGMENTS): New macro (disabled).
5715	(AF_AxisHintsRec) [AF_SORT_SEGMENTS]: New member `mid_segments'.
5716
5717	* src/autofit/afglobal.c (af_face_globals_get_metrics): Add
5718	argument to pass option flags for handling scripts.
5719	* src/autofit/afglobal.h: Updated.
5720
5721	* src/autofit/afcjk.c: Updated.
5722	* src/autofit/aflatin.c: Updated.
5723	(af_latin_metrics_scale_dim): Don't reduce scale by 2%.
5724
5725	(af_latin_hints_compute_segments) [AF_HINT_METRICS]: Remove dead code.
5726	(af_latin_hints_compute_edges) [AF_HINT_METRICS]: Remove dead code.
5727	Don't set `edge->dir'
5728	(af_latin_hint_edges): Add more logging.
5729
5730	* src/autofit/afloader.c: Updated.
5731
57322007-06-11  Werner Lemberg  <wl@gnu.org>
5733
5734	* docs/CHANGES: Document FT_Face_CheckTrueTypePatents.
5735
57362007-06-10  David Turner  <david@freetype.org>
5737
5738	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Slight speed-up to
5739	the TrueType glyph loader.
5740
5741	* include/freetype/config/ftoption.h: Clarify documentation
5742	regarding unpatented hinting.
5743
5744
5745	Add new `FT_Face_CheckTrueTypePatents' API.
5746
5747	* include/freetype/freetype.h (FT_Face_CheckTrueTypePatents): New
5748	declaration.
5749
5750	* include/freetype/internal/services/svttglyf.h,
5751	src/base/ftpatent.c: New files.
5752
5753	* include/freetype/internal/ftserv.h (FT_SERVICE_TRUETYPE_GLYF_H):
5754	New macro.
5755
5756	* src/truetype/ttdriver.c: Include FT_SERVICE_TRUETYPE_GLYF_H and
5757	`ttpload.h'.
5758	(tt_service_truetype_glyf): New service structure.
5759	(tt_services): Register it.
5760
5761	* modules.cfg (BASE_EXTENSIONS), src/base/Jamfile (_sources): Add
5762	`ftpatent.c'.
5763
57642007-06-08  Werner Lemberg  <wl@gnu.org>
5765
5766	* src/sfnt/sfobjs.c (sfnt_load_face): Undo change from 2007-04-28.
5767	Fonts without a cmap must be handled correctly by FreeType (anything
5768	else would be a bug).
5769
5770
5771	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
5772	[FT_DEBUG_LEVEL_TRACE]: Improve tracing message.
5773
57742007-06-07  Werner Lemberg  <wl@gnu.org>
5775
5776	* src/sfnt/ttsbit0.c (tt_sbit_decoder_init,
5777	tt_sbit_decoder_load_image): Protect against integer overflows.
5778
5779
5780	* src/pfr/pfrgload.c (pfr_glyph_load_simple): More bounding checks
5781	for `x_control' and `y_control'.
5782
57832007-06-06  Werner Lemberg  <wl@gnu.org>
5784
5785	* src/base/ftoutln.c (FT_Outline_Decompose): Check `last'.
5786
5787
5788	* src/pfr/pfrcmap.c (pfr_cmap_init): Convert assertion into normal
5789	FreeType error.
5790
5791
5792	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Do a rough check of
5793	`font_count'.
5794
5795
5796	* src/type1/t1load.c (parse_font_matrix): Check `temp_scale'.
5797
5798
5799	* src/cff/cffgload.c (cff_decoder_prepare): Change return type to
5800	`FT_Error'.
5801	Check `fd_index'.
5802	(cff_slot_load): Updated.
5803	* src/cff/cffgload.h: Updated.
5804
58052007-06-05  Werner Lemberg  <wl@gnu.org>
5806
5807	* src/pfr/pfrgload.c (pfr_glyph_done): Comment out unused code.
5808	(pfr_glyph_load_simple): Convert assertion into normal FreeType
5809	error.
5810	Check `idx'.
5811	(pfr_glyph_load_compound, pfr_glyph_curve_to, pfr_glyph_line_to):
5812	Convert assertion into normal FreeType error.
5813
5814	* src/pfr/pfrtypes.h (PFR_GlyphRec): Comment out unused code.
5815
5816
5817	* src/winfonts/winfnt.c (FNT_Face_Init): Check `family_size'.
5818
5819
5820	* src/psaux/psobjs.c (ps_tocoordarray, ps_tofixedarray): Return -1
5821	in case of parsing error.
5822	(ps_parser_load_field): Updated.
5823
5824	* src/type1/t1load.c (parse_font_matrix): Updated.
5825
58262007-06-04  Werner Lemberg  <wl@gnu.org>
5827
5828	* src/cid/cidgload.c (cid_load_glyph): Check `fd_select'.
5829
5830	* src/tools/ftrandom/Makefile: Depend on `libfreetype.a'.
5831
58322007-06-03  Werner Lemberg  <wl@gnu.org>
5833
5834	* src/tools/ftrandom/*: Add the `ftrandom' test program written by
5835	George Williams (with some modifications).
5836
58372007-06-03  Werner Lemberg  <wl@gnu.org>
5838
5839	* src/base/ftobjs.c (destroy_charmaps), src/type1/t1objs.c
5840	(T1_Face_Done), src/winfonts/winfnt.c (FNT_Face_Done): Check for
5841	face == NULL.  Suggested by Graham Asher.
5842
58432007-06-03  Ismail Dönmez  <ismail@pardus.org.tr>
5844
5845	* src/base/ftobjs.c (FT_Request_Metrics): Fix compiler warning.
5846
58472007-06-02  Werner Lemberg  <wl@gnu.org>
5848
5849	* include/freetype/fterrdef.h (FT_Err_Corrupted_Font_Header,
5850	FT_Err_Corrupted_Font_Glyphs): New error codes for BDF files.
5851
5852	* src/bdf/bdflib.c (bdf_load_font): Use them.
5853
5854	* src/bdf/bdflib.c (_bdf_parse_start): Check `FONT' better.
5855
58562007-06-01  Werner Lemberg  <wl@gnu.org>
5857
5858	* src/base/ftobjs.c (FT_Request_Metrics), src/cache/ftccmap.c
5859	(FTC_CMapCache_Lookup): Remove unused code.
5860
58612007-06-01  Sean McBride  <sean@rogue-research.com>
5862
5863	* src/truetype/ttinterp.c (Null_Vector, NULL_Vector): Removed,
5864	unused.
5865
58662007-06-01  Werner Lemberg  <wl@gnu.org>
5867
5868	* src/cid/cidparse.c (cid_parser_new): Don't continue second search
5869	pass for `StartData' if an error has occurred.
5870	Exit properly if no `StartData' has been seen at all.
5871
5872	* builds/unix/ftsystem.c (FT_Stream_Open): Don't use ULONG_MAX but
5873	LONG_MAX to avoid compiler warning.  Suggested by Sean McBride.
5874
58752007-05-30  Werner Lemberg  <wl@gnu.org>
5876
5877	* src/type1/t1load.c (parse_subrs, parse_charstrings): Protect
5878	against too small binary data strings.
5879
5880	* src/bdf/bdflib.c (_bdf_parse_glyphs): Check `STARTCHAR' better.
5881
58822007-05-28  David Turner  <david@freetype.org>
5883
5884	* src/cff/cffgload.c (cff_slot_load): Do not apply the identity
5885	transformation.  This significantly reduces the loading time of CFF
5886	glyphs.
5887
5888	* docs/CHANGES: Updated.
5889
5890	* src/autofit/afglobal.c (AF_SCRIPT_LIST_DEFAULT): Change default
5891	hinting script to CJK, since it works well with more scripts than
5892	latin.  Thanks to Rahul Bhalerao <b.rahul.pm@gmail.com> for pointing
5893	this out!
5894
58952007-05-25  Werner Lemberg  <wl@gnu.org>
5896
5897	* docs/CHANGES: Updated.
5898
58992007-05-24  Werner Lemberg  <wl@gnu.org>
5900
5901	* src/truetype/ttobjs.h (tt_size_ready_bytecode): Move declaration
5902	into TT_USE_BYTECODE_INTERPRETER preprocessor block.
5903
59042007-05-24  Graham Asher  <graham.asher@btinternet.com>
5905
5906	* src/truetype/ttobjs.c (tt_size_ready_bytecode)
5907	[!TT_USE_BYTECODE_INTERPRETER]: Removed.  Unused.
5908
59092007-05-22  David Turner  <david@freetype.org>
5910
5911	* src/truetype/ttgload.c (load_truetype_glyph): Fix last change to
5912	avoid crashes in case the bytecode interpreter is not used.
5913
5914
5915	Avoid heap blowup with very large .Z font files.  This fixes
5916	Savannah bug #19910.
5917
5918	* src/lzw/ftzopen.h (FT_LzwStateRec): Remove `in_cursor',
5919	`in_limit', `pad', `pad_bits', and `in_buff' members.
5920	Add `buf_tab', `buf_offset', `buf_size', `buf_clear', and
5921	`buf_total' members.
5922
5923	* src/lzw/ftzopen.c (ft_lzwstate_get_code): Rewritten.  It now takes
5924	only one argument.
5925	(ft_lzwstate_refill, ft_lzwstate_reset, ft_lzwstate_io): Updated.
5926
59272007-05-20  Ismail Dönmez  <ismail@pardus.org.tr>
5928
5929	* src/pshinter/pshrec.c (ps_mask_table_set_bits): Add `const'.
5930	(ps_dimension_set_mask_bits): Remove `const'.
5931
59322007-05-19  Werner Lemberg  <wl@gnu.org>
5933
5934	* src/sfnt/ttmtx.c (tt_face_get_metrics)
5935	[!FT_CONFIG_OPTION_OLD_INTERNALS]: Another type-punning fix.
5936
59372007-05-19  Derek Clegg  <dclegg@apple.com>
5938
5939	Savannah patch #5929.
5940
5941	* include/freetype/tttables.h, src/base/ftobjs.c
5942	(FT_Get_CMap_Format): New function.
5943
5944	* include/freetype/internal/services/svttcmap.c (TT_CMapInfo): Add
5945	`format' member.
5946	* src/sfnt/ttcmap.c (tt_cmap{0,2,4,6,8,10,12}_get_info): Set
5947	cmap_info->format.
5948
59492007-05-19  Werner Lemberg  <wl@gnu.org>
5950
5951	* src/truetype/ttgload.c (load_truetype_glyph): Save graphics state
5952	before handling subglyphs so that it can be reinitialized each time.
5953	This fixes Savannah bug #19859.
5954
59552007-05-16  Werner Lemberg  <wl@gnu.org>
5956
5957	* src/cache/ftccache.c (ftc_node_mru_link, ftc_node_mru_unlink),
5958	src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP), src/cache/ftcglyph.h
5959	(FTC_GCACHE_LOOKUP_CMP), src/pshinter/pshmod.c (ps_hinter_init),
5960	src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_load_hhea,
5961	tt_face_get_metrics): Fix type-punning issues.
5962
59632007-05-15  David Turner  <david@freetype.org>
5964
5965	* include/freetype/config/ftstdlib.h,
5966	include/freetype/internal/ftobjs.h: As suggested by Graham Asher,
5967	ensure that ft_isalnum, ft_isdigit, etc., use hard-coded values
5968	instead of relying on the locale-dependent functions provided by
5969	<ctypes.h>.
5970
59712007-05-15  Graham Asher  <graham.asher@btinternet.com>
5972
5973	* src/autofit/afcjk.c (af_cjk_hints_compute_edges): Remove unused
5974	variable.
5975	* src/autofit/afloader.c (af_loader_load_g): Ditto.
5976
5977	* src/base/ftobjs.c (ft_validator_error): Use `ft_jmp_buf'.
5978	(open_face_from_buffer): Initialize `stream'.
5979	(FT_Request_Metrics): Remove unused variable.
5980	Remove redundant `break' statements.
5981	(FT_Get_Track_Kerning): Remove unused variable.
5982
5983	* src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs,
5984	afm_parse_kern_data): Remove redundant
5985	`break' statements.
5986	(afm_parser_parse): Ditto.
5987	Don't use uninitialized variables.
5988
5989	* src/psnames/psmodule.c (VARIANT_BIT): Define as unsigned long.
5990	Use `|' operator instead of `^' to set it.
5991	Update all users.
5992
5993	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Use `ft_jmp_buf'.
5994	* src/sfnt/ttkern.c (tt_face_load_kern): Remove unused variable.
5995
5996	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
5997	comparison.
5998	(TT_Process_Simple_Glyph): Use FT_UInt for `n_points' and `i'.
5999	(TT_Load_Glyph): Remove unused variable.
6000
60012007-05-13  Derek Clegg  <dclegg@apple.com>
6002
6003	* src/base/ftobjs.c (FT_New_Library): Only allocate rendering pool
6004	if FT_RENDER_POOL_SIZE is > 0.  From Savannah patch #5928.
6005
60062007-05-11  David Turner  <david@freetype.org>
6007
6008	* src/cache/ftcbasic.c, include/freetype/ftcache.h
6009	(FTC_ImageCache_LookupScaler, FTC_SBit_Cache_LookupScaler): Two new
6010	functions that allow us to look up glyphs using an FTC_Scaler object
6011	to specify the size, making it possible to use fractional pixel
6012	sizes.
6013
6014	* src/truetype/ttobjs.c (tt_size_ready_bytecode): Set
6015	`size->cvt_ready'.  Reported by Boris Letocha.
6016
60172007-05-09  Graham Asher  <graham.asher@btinternet.com>
6018
6019	* src/truetype/ttinterp.c (Ins_IP), src/autofit/aflatin.c
6020	(af_latin_metrics_scale_dim): Fix compiler warnings.
6021
60222007-05-06  Werner Lemberg  <wl@gnu.org>
6023
6024	* builds/win32/visualce/freetype.sln: Removed, as requested by
6025	Vincent.
6026
60272007-05-04  Vincent RICHOMME  <richom.v@free.fr>
6028
6029	* builds/win32/visualce/*: Add Visual C++ project files for Pocket
6030	PC targets.
6031
6032	* docs/CHANGES: Document them.
6033
60342007-05-04  <harry@kdevelop.org>
6035
6036	* builds/unix/ftsystem.c (FT_Stream_Open): Handle return value 0 of
6037	mmap (which might happen on some RTOS).  From Savannah patch #5909.
6038
60392007-05-03  Werner Lemberg  <wl@gnu.org>
6040
6041	* src/base/ftobjs.c (FT_Set_Char_Size): Simplify code.
6042	* include/freetype/freetype.h (FT_Set_Char_Size): Update
6043	documentation.
6044
60452007-04-28  Victor Stinner  <victor.stinner@inl.fr>
6046
6047	* src/sfnt/sfobjs.c (sfnt_load_face): Check error code after loading
6048	`cmap'.
6049
60502007-04-27  Werner Lemberg  <wl@gnu.org>
6051
6052	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check for negative
6053	number of points in contours.  Problem reported by Victor Stinner
6054	<victor.stinner@haypocalc.com>.
6055	(TT_Process_Simple_Glyph): Synchronize variable types.
6056
60572007-04-26  Werner Lemberg  <wl@gnu.org>
6058
6059	* src/base/ftglyph.c (FT_Glyph_Copy): Always set second argument to
6060	zero in case of error.  This fixes Savannah bug #19689.
6061
60622007-04-25  Boris Letocha  <b.letocha@cz.gmc.net>
6063
6064	* src/truetype/ttobjs.c: Fix a typo that created a speed regression
6065	in the TrueType bytecode loader.
6066
60672007-04-10  Martin Horak  <horakm@centrum.cz>
6068
6069	* src/sfnt/sfobjs.c (sfnt_load_face) [FT_CONFIG_OPTION_INCREMENTAL]:
6070	Ignore `hhea' table.  This fixes Savannah bug #19261.
6071
60722007-04-09  Werner Lemberg  <wl@gnu.org>
6073
6074
6075	* Version 2.3.4 released.
6076	=========================
6077
6078
6079	Tag sources with `VER-2-3-4'.
6080
6081	* docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
6082	version number to 2.3.4.
6083
6084	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
6085	builds/win32/visualc/freetype.dsp,
6086	builds/win32/visualc/freetype.vcproj: s/2.3.3/2.3.4/, s/233/234/.
6087
6088	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
6089
6090	* builds/unix/configure.raw (version_info): Set to 9:15:3.
6091
60922007-04-09  Martin Horak  <horakm@centrum.cz>
6093
6094	* src/truetype/ttgload.c (load_truetype_glyph): Save and restore
6095	memory stream to avoid a crash with the incremental memory
6096	interface (Savannah bug #19260).
6097
60982007-04-06  David Turner  <david@freetype.org>
6099
6100	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix buffer-overwrite
6101	bug (Savannah bug #19536).
6102
61032007-04-04  Werner Lemberg  <wl@gnu.org>
6104
6105
6106	* Version 2.3.3 released.
6107	=========================
6108
6109
6110	Tag sources with `VER-2-3-3'.
6111
6112	* docs/CHANGES: Mention CVE-2007-1351.
6113
61142007-04-03  David Turner  <david@freetype.org>
6115
6116	* src/base/ftobjs.c (FT_Set_Char_Size): As suggested by James Cloos,
6117	if one of the resolution values is 0, treat it as if it were the
6118	same as the other value.
6119
61202007-04-02  David Turner  <david@freetype.org>
6121
6122	Add special code to detect `extra-light' fonts and do not snap their
6123	stem widths too much to avoid bizarre hinting effects.
6124
6125	* src/autofit/aflatin.h (AF_LatinAxisRec): Add `standard_width' and
6126	`extra_light' members.
6127
6128	* src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
6129	them.
6130	(af_latin_metrics_scale_dim): Set `extra_light'.
6131	(af_latin_compute_stem_width): Use `extra_light'.
6132
61332007-03-28  David Turner  <david@freetype.org>
6134
6135	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix zero-ing of the
6136	padding.
6137
61382007-03-28  Werner Lemberg  <wl@gnu.org>
6139
6140	* src/bdf/bdflib.c (setsbit, sbitset): Handle values >= 128
6141	gracefully.
6142	(_bdf_set_default_spacing): Increase `name' buffer size to 256 and
6143	issue an error for longer names.  This fixes CVE-2007-1351.
6144	(_bdf_parse_glyphs): Limit allowed number of glyphs in font to the
6145	number of code points in Unicode.
6146
6147	* builds/win32/visualc/index.html,
6148	builds/win32/visualc/freetype.dsp,
6149	builds/win32/visualc/freetype.vcproj, README: s/2.3.2/2.3.3/,
6150	s/232/233/.
6151
6152	* docs/CHANGES: Mention ftdiff.
6153
61542007-03-26  David Turner  <david@freetype.org>
6155
6156	* src/truetype/ttinterp.c [FIX_BYTECODE]: Remove it and
6157	corresponding code.
6158	(Ins_MD): Last regression fix.
6159
6160	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix blues
6161	computations in order to ignore single-point contours.  These are
6162	never rasterized and correspond in certain fonts to mark-attach
6163	points that are very far from the glyph's real outline, ruining the
6164	computation.
6165
6166	* src/autofit/afloader.c (af_loader_load_g): In the case of
6167	monospaced fonts, always set `rsb_delta' and `lsb_delta' to 0.
6168	Otherwise code that uses them will most certainly ruin the fixed
6169	advance property.
6170
6171	* docs/CHANGES, docs/VERSION.DLL, README, Jamfile (RefDoc): Update
6172	documentation and bump version number to 2.3.3.
6173
6174	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
6175
6176	* builds/unix/configure.raw (version_info): Set to 9:14:3.
6177
61782007-03-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6179
6180	* builds/unix/ftconfig.in: Disable Carbon framework dependency on
6181	64bit ABI on Mac OS X 10.4.x (ppc & i386).  Found by Sean McBride.
6182	* builds/vms/ftconfig.h: Ditto.
6183	* include/freetype/config/ftconfig.h: Ditto.
6184
61852007-03-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6186
6187	* builds/unix/ftsystem.c (FT_Stream_Open): Temporary fix to prevent
6188	32bit unsigned long overflow by 64bit filesize on LP64 platform, as
6189	proposed by Sean McBride:
6190	https://lists.gnu.org/archive/html/freetype-devel/2007-03/msg00032.html
6191
61922007-03-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6193
6194	* builds/unix/ftconfig.in: Suppress SGI compiler's warning against
6195	setjmp, proposed by Sean McBride:
6196	https://lists.gnu.org/archive/html/freetype-devel/2007-03/msg00032.html
6197
61982007-03-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6199
6200	* builds/unix/configure.raw: Dequote `OS_INLINE' in comment of
6201	conftest.c, to avoid unexpected shell evaluation.  Possibly it is a
6202	bug or undocumented behaviour of autoconf.
6203
62042007-03-18  David Turner  <david@freetype.org>
6205
6206	* src/truetype/ttinterp.c (Ins_MDRP): Another bytecode regression
6207	fix; testing still needed.
6208
6209	* src/truetype/ttinterp.c (Ins_MD): Another bytecode regression fix.
6210
62112007-03-17  David Turner  <david@freetype.org>
6212
6213	* src/truetype/ttinterp.c (Ins_IP): Fix wrong handling of the
6214	(undocumented) twilight zone special case.
6215
62162007-03-09  Werner Lemberg  <wl@gnu.org>
6217
6218
6219	* Version 2.3.2 released.
6220	=========================
6221
6222
6223	Tag sources with `VER-2-3-2'.
6224
6225	* builds/win32/visualc/index.html,
6226	builds/win32/visualc/freetype.dsp,
6227	builds/win32/visualc/freetype.vcproj, README: s/2.3.1/2.3.2/,
6228	s/231/232/.
6229
62302007-03-08  David Turner  <david@freetype.org>
6231
6232	* docs/CHANGES, docs/VERSION.DLL: Updated for upcoming release.
6233
6234	* builds/unix/configure.raw (version_info): Set to 9:13:3.
6235
6236	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
6237
6238	* README, Jamfile (RefDoc): s/2.3.1/2.3.2/.
6239
6240	* src/base/ftutil.c (ft_mem_strcpyn): Fix a bug that prevented the
6241	function to work properly, over-writing user-provided buffers in
6242	some cases.  Reported by James Cloos <cloos@jhcloos.com>.
6243
6244
62452007-03-05  Werner Lemberg  <wl@gnu.org>
6246
6247	* include/freetype/config/ftstdlib.h (ft_strstr): New wrapper
6248	macro for `strstr'.
6249
6250	* src/truetype/ttobjs.c (tt_face_init): Use ft_strstr for scanning
6251	`trick_names', as suggested by Ivan Nincic.
6252
62532007-03-05  David Turner  <david@freetype.org>
6254
6255	* src/base/ftinit.c (FT_Init_FreeType): Fix a small memory leak in
6256	case FT_Init_FreeType fails for some reason.  Problem reported by
6257	Maximilian Schwerin <maximilian.schwerin@buelowssiege.de>.
6258
6259	* src/truetype/ttobjs.c (tt_size_init_bytecode): Clear the `x_ppem'
6260	and `y_ppem' fields of the `TT_Size.metrics' structure, not those of
6261	`TT_Size.root.metrics'.  Problem reported by Daniel Glöckner
6262	<daniel-gl@gmx.net>.
6263
6264	* src/type1/t1afm.c (T1_Read_PFM): Read kerning values as 16-bit
6265	signed values, not unsigned ones.  Problem reported by Johannes
6266	Walther <joh_walt@yahoo.de>.
6267
62682007-02-21  David Turner  <david@freetype.org>
6269
6270	* src/pshinter/pshalgo.c (psh_hint_align): Fix a bug in the hinting
6271	of small and ghost stems in the Postscript interpreter.
6272
62732007-02-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6274
6275	* src/base/ftmac.c (FT_GetFileRef_From_Mac_ATS_Name): Fix memory
6276	leak, patch by "Jjgod Jiang" <gzjjgod@gmail.com>.
6277	* builds/mac/ftmac.c (FT_GetFileRef_From_Mac_ATS_Name): Ditto.
6278
62792007-02-16  Werner Lemberg  <wl@gnu.org>
6280
6281	* src/truetype/ttinterp.c (Ins_MD): Remove unused variable.
6282	* src/autofit/aflatin.c (af_latin_hints_link_segments): Ditto.
6283
62842007-02-14  David Turner  <david@freetype.org>
6285
6286	It seems that the following changes fix most of the known
6287	interpreter problems with my fonts, but more testing is needed,
6288	though.
6289
6290	* src/truetype/ttinterp.c (FIX_BYTECODE): Activate.
6291	(TT_MulFix14): Rewrite.
6292	(Ins_MD, Ins_MDRP, Ins_IP) [FIX_BYTECODE]: Improved and updated.
6293	(Ins_MIRP): Ditto.
6294
62952007-02-12  Werner Lemberg  <wl@gnu.org>
6296
6297	* src/truetype/ttinterp.c (Project_x, Project_y): Remove compiler
6298	warnings.
6299
6300	* src/pcf/pcfread.c (pcf_interpret_style), src/bdf/bdfdrivr.c
6301	(bdf_interpret_style): Ditto.
6302
63032007-02-12  David Turner  <david@freetype.org>
6304
6305	Simplify projection and dual-projection code interface.
6306
6307	* src/truetype/ttinterp.h (TT_Project_Func): Use `FT_Pos', not
6308	FT_Vector' as argument type.
6309	* src/truetype/ttinterp.c (CUR_Func_project, CUR_Func_dualproj):
6310	Updated.
6311	(CUR_fast_project, CUR_fast_dualproj): New macros.
6312	(Project, Dual_Project, Project_x, Project_y): Updated.
6313	(Ins_GC, Ins_SCFS, Ins_MDAP, Ins_MIAP, Ins_IP): Use new `fast'
6314	macros.
6315
6316
6317	* src/autofit/afloader.c (af_loader_load_g): Improve spacing
6318	adjustments for the non-light auto-hinted modes.  Gets rid of
6319	`inter-letter spacing is too wide' problems.
6320
6321	* src/autofit/aflatin.c (af_latin_hints_link_segments,
6322	af_latin_hints_compute_edges): Slight optimization of the segment
6323	linker and better handling of serif segments to get rid of broken
6324	`9' in Arial at 9pt (96dpi).
6325
6326
6327	Introduce new string functions and the corresponding macros to get
6328	rid of various uses of strcpy and other `evil' functions, as well as
6329	to simplify a few things.
6330
6331	* include/freetype/internal/ftmemory.h (ft_mem_strdup, ft_mem_dup,
6332	ft_mem_strcpyn): New declarations.
6333	(FT_MEM_STRDUP, FT_STRDUP, FT_MEM_DUP, FT_DUP, FT_STRCPYN): New
6334	macros.
6335	* src/base/ftutil.c (ft_mem_dup, ft_mem_strdup, ft_mem_strcpyn): New
6336	functions.
6337
6338	* src/bdf/bdfdrivr.c (bdf_interpret_style, BDF_Face_Init),
6339	src/bdf/bdflib.c (_bdf_add_property), src/pcf/pcfread.c
6340	(pcf_get_properties, pcf_interpret_style, pcf_load_font),
6341	src/cff/cffdrivr.c (cff_get_glyph_name), src/cff/cffload.c
6342	(cff_index_get_sid_string), src/cff/cffobjs.c (cff_strcpy),
6343	src/sfnt/sfdriver.c (sfnt_get_glyph_name), src/type1/t1driver.c
6344	(t1_get_glyph_name), src/type42/t42drivr.c (t42_get_glyph_name,
6345	t42_get_name_index): Use new functions and simplify code.
6346
6347	* builds/mac/ftmac.c (FT_FSPathMakeSpec): Don't use FT_MIN.
6348
63492007-02-11  Werner Lemberg  <wl@gnu.org>
6350
6351	* src/autofit/afloader.c (af_loader_load_g): Don't change width for
6352	non-spacing glyphs.
6353
63542007-02-07  Tom Parker  <palfrey@tevp.net>
6355
6356	* src/cff/cffdrivr.c (cff_get_name_index): Protect against NULL
6357	pointer.
6358
63592007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6360
6361	* include/freetype/ftmac.h (FT_DEPRECATED_ATTRIBUTE):
6362	Introduce __attribute((deprecated))__ to warn functions
6363	which use non-ANSI data types in its interfaces.
6364	(FT_GetFile_From_Mac_Name): Deprecated, using FSSpec.
6365	(FT_GetFile_From_Mac_ATS_Name): Deprecated, using FSSpec.
6366	(FT_New_Face_From_FSSpec): Deprecated, using FSSpec.
6367	(FT_New_Face_From_FSRef): Deprecated, using FSRef.
6368
6369	* src/base/ftmac.c: Predefine FT_DEPRECATED_ATTRIBUTE as void
6370	to avoid warning in building FreeType.
6371	* builds/mac/ftmac.c: Ditto.
6372
63732007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6374
6375	* src/base/ftbase.c: Fix to use builds/mac/ftmac.c, if configured
6376	`--with-fsspec' etc.  Replace #include "ftmac.c" with
6377	#include <ftmac.c>.
6378
63792007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6380
6381	* include/freetype/ftmac.h (FT_GetFilePath_From_Mac_ATS_Name):
6382	Introduced as replacement of FT_GetFile_From_Mac_ATS_Name.
6383	* src/base/ftmac.c (FT_GetFilePath_From_Mac_ATS_Name): Ditto.
6384	(FT_GetFile_From_Mac_ATS_Name): Rewritten as wrapper of
6385	FT_GetFilePath_From_Mac_ATS_Name.
6386	* builds/mac/ftmac.c: Ditto.
6387
63882007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6389
6390	* include/freetype/ftmac.h: Fixed wrong comment: FSSpec of
6391	FT_GetFile_From_Mac_Name, FT_GetFile_From_Mac_ATS_Name are
6392	for passing to FT_New_Face_From_FSSpec.
6393
63942007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6395
6396	* builds/unix/configure.raw: Check whether Mac OS X system headers
6397	can be built under ANSI C mode.
6398
6399	* src/base/ftmac.c (OS_INLINE): Redefine OS_INLINE by a version
6400	compatible to ANSI C in case system headers are ANSI C incompatible.
6401	* builds/mac/ftmac.c (OS_INLINE): Ditto.
6402
64032007-02-01  Werner Lemberg  <wl@gnu.org>
6404
6405	* include/freetype/ttnameid.h (TT_MS_LANGID_DZONGHKA_BHUTAN):
6406	Explain why applications shouldn't use it.  Found by Alexei.
6407
64082007-02-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
6409
6410	* builds/unix/freetype2.m4 (AC_CHECK_FT2): Fix spelling of warning
6411	message.
6412
6413	* src/gxvalid/gxvmort1.c
6414	(gxv_mort_subtable_type1_substTable_validate): Fix debugging
6415	message.
6416
64172007-01-31  Werner Lemberg  <wl@gnu.org>
6418
6419
6420	* Version 2.3.1 released.
6421	=========================
6422
6423
6424	Tag sources with `VER-2-3-1-FINAL'.
6425
6426	* builds/win32/visualc/freetype.dsp,
6427	builds/win32/visualc/freetype.vcproj: s/230/231/.
6428	* builds/win32/visualc/index.html: s/221/231/.
6429
6430	* vms_make.com: Add `ftgasp'.
6431
64322007-01-30  David Turner  <david@freetype.org>
6433
6434	Tag sources with VER-2-3-1 to prepare release.
6435
6436	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
6437
6438	* docs/VERSION.DLL, docs/release, README, Jamfile (RefDoc):
6439	s/2.3.0/2.3.1/.
6440
6441	* builds/unix/configure.raw (version_info): Set to 9:12:3.
6442
6443
6444	* src/autofit/aftypes.h (AF_USE_WARPER), src/autofit/afloader.c
6445	(af_loader_load_g): Disable the warper (i.e., the light hinting
6446	improvements) to make a 2.3.1 bugfix release before introducing a
6447	new feature.  This should give us more time to tune and improve the
6448	warper for the next release.
6449
6450	* docs/CHANGES: Update accordingly.
6451
64522007-01-25  David Turner  <david@freetype.org>
6453
6454	For light auto-hinting, improve glyph advance widths and resurrect
6455	normal/full hinting to its normal quality.
6456
6457	* src/autofit/afhints.h (AF_GlyphHintsRec): New members `xmin_delta'
6458	and `xmax_delta'.
6459	* src/autofit/afhints.c (af_glyph_hints_reload): Reset `xmin_delta'
6460	and `xmax_delta'.
6461
6462	* src/autofit/afloader.c (af_loader_load_g) <AF_USE_WARPER>: Replace
6463	preprocessor conditional with if-clause, handling both light and
6464	normal mode.
6465
6466	* src/autofit/afwarp.c (AF_WarpScore): Fine-tune again.
6467	(af_warper_compute): Handle `xmin_delta' and `xmax_delta'.
6468
64692007-01-25  Werner Lemberg  <wl@gnu.org>
6470
6471	* docs/release: Updated -- Savannah uses a new uploading scheme.
6472
64732007-01-25  David Turner  <david@freetype.org>
6474
6475	* src/cff/cffload.c (cff_index_get_pointers): Improve previous fix.
6476
6477	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
6478	<cff_op_callsubr, cff_op_callgsubr>: Fix sanity check for empty
6479	functions.
6480
6481	* docs/CHANGES: Document light auto-hinting improvement.
6482
64832007-01-25  Werner Lemberg  <wl@gnu.org>
6484
6485	* src/cff/cffload.c (cff_index_get_pointers): Handle last entry
6486	correctly in a sanity check.  Since this function is only used to
6487	load local and global functions, any charstring that called the last
6488	local/global function would fail otherwise.  This fixes Savannah bug
6489	#18867.
6490
6491	* docs/CHANGES: Document it.
6492
64932007-01-23  David Turner  <david@freetype.org>
6494
6495	* src/truetype/ttobjs.c (tt_size_ready_bytecode): Fix typo that
6496	prevented compilation when disabling both the unpatented and the
6497	bytecode interpreter in the TrueType font driver.
6498
6499
6500	Fix and enable the warper to improve `light' hinting mode.  This is
6501	not necessarily a final version, but it seems to work well.
6502
6503	* src/autofit/aflatin.c (af_latin_hints_init) [AF_USE_WARPER]:
6504	Disable code.
6505	(af_latin_hints_apply) [AF_USE_WARPER]: Handle FT_RENDER_MODE_LIGHT.
6506	* src/autofit/aftypes.h: Activate AF_USE_WARPER.
6507
6508	* src/autofit/afwarp.c (AF_WarpScore): Tune table.
6509	(af_warper_compute_line_best): Fix array size of `scores'.
6510	(af_warper_compute): Better handling of border cases.
6511	* src/autofit/afwarp.h (AF_WarperRec): Remove unused members `X1'
6512	and `X2'.
6513
65142007-01-21  Werner Lemberg  <wl@gnu.org>
6515
6516	* ChangeLog: Split off older entries into...
6517	* ChangeLog.22: This new file.
6518
65192007-01-21  Werner Lemberg  <wl@gnu.org>
6520
6521	* docs/CHANGES: Document SHZ fix.
6522
65232007-01-21  George Williams  <gww@silcom.com>
6524
6525	* src/truetype/ttinterp.c (Ins_SHZ): SHZ doesn't move phantom
6526	points.
6527
65282007-01-21  Werner Lemberg  <wl@gnu.org>
6529
6530	* src/sfnt/ttmtx.c (tt_face_get_metrics)
6531	[!FT_CONFIG_OPTION_OLD_INTERNALS]: Fix limit check.
6532
65332007-01-17  Werner Lemberg  <wl@gnu.org>
6534
6535
6536	* Version 2.3.0 released.
6537	=========================
6538
6539
6540	Tag sources with `VER-2-3-0-FINAL'.
6541
65422007-01-17  Werner Lemberg  <wl@gnu.org>
6543
6544	* docs/release: Updated.
6545
65462007-01-16  David Turner  <david@freetype.org>
6547
6548	* src/autofit/aflatin.c (af_latin_hints_compute_segments),
6549	src/cff/cffdrivr.c (cff_ps_get_font_info), src/truetype/ttobjs.c
6550	(tt_face_init), src/truetype/ttinterp.c (Ins_SHC): Fix compiler
6551	warnings.
6552
65532007-01-15  Detlef Würkner  <TetiSoft@apg.lahn.de>
6554
6555	* builds/amiga/makefile, builds/amiga/makefile.os4,
6556	builds/amiga/smakefile: Add `ftgasp.c' and `ftlcdfil.c'.
6557
6558	* builds/amiga/include/freetype/config/ftconfig.h: Synchronize.
6559
65602007-01-14  Detlef Würkner  <TetiSoft@apg.lahn.de>
6561
6562	Fix various compiler warnings.
6563
6564	* src/truetype/ttdriver.c (tt_size_select), src/cff/cffobjs.h,
6565	src/cff/cffobjs.c (cff_size_request), src/type42/t42objs.h:
6566	s/index/strike_index/.
6567	* src/base/ftobjs.c (FT_Match_Size): s/index/size_index/.
6568
6569	* src/gxvalid/gxvmorx5.c
6570	(gxv_morx_subtable_type5_InsertList_validate): s/index/table_index/.
6571
6572	* src/truetype/ttinterp.c (Compute_Point_Displacement),
6573	src/pcf/pcfread.c (pcf_seek_to_table_type): Avoid possibly
6574	uninitialized variables.
6575
65762007-01-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6577
6578	* docs/CHANGES, docs/INSTALL.MAC: Improvements.
6579
65802007-01-13  Werner Lemberg  <wl@gnu.org>
6581
6582	* src/type1/t1afm.c (T1_Read_Metrics): MS Windows allows PFM
6583	versions up to 0x3FF without complaining.
6584
65852007-01-13  Derek Clegg  <dclegg@apple.com>
6586
6587	Add FT_Get_PS_Font_Info interface to CFF driver.
6588
6589	* src/cff/cfftypes.h: Include FT_TYPE1_TABLES_H.
6590	(CFF_FontRec): Add `font_info' field.
6591
6592	* src/cff/cffload.c: Include FT_TYPE1_TABLES_H.
6593	(cff_font_done): Free font->font_info if necessary.
6594
6595	* src/cff/cffdrivr.c (cff_ps_get_font_info): New function.
6596	(cff_service_ps_info): Register cff_ps_get_font_info.
6597
65982007-01-13  Werner Lemberg  <wl@gnu.org>
6599
6600	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix compilation
6601	with C++ compiler.
6602
6603	* src/autofit/afhints.c (af_glyph_hints_dump_segments,
6604	af_glyph_hints_dump_edges): Ditto.
6605
6606	* src/base/rules.mk (BASE_SRC): Remove ftgasp.c (it's already in
6607	`modules.cfg').
6608
6609	* src/sfnt/ttsbit0.h: Remove.
6610
6611	* src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttsbit0.c.
6612
66132007-01-12  David Turner  <david@freetype.org>
6614
6615	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix memory stomping
6616	bug in the bitmap emboldener if the pitch of the source bitmap is
6617	much larger than its width.
6618
6619	* src/truetype/ttinterp.c (Update_Max): Fix aliasing-related
6620	compilation warning.
6621
66222007-01-12  Werner Lemberg  <wl@gnu.org>
6623
6624	* builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
6625	`automake' CVS module from sources.redhat.com.
6626
66272007-01-11  Werner Lemberg  <wl@gnu.org>
6628
6629	* src/type1/t1load.c (is_space): Removed.
6630	(parse_encoding, parse_charstrings): Use IS_PS_DELIM.
6631	(parse_charstrings): Use IS_PS_TOKEN.
6632
6633
6634	* autogen.sh: Avoid bash specific syntax.
6635
66362007-01-11  David Turner  <david@freetype.org>
6637
6638	* docs/CHANGES: Small update.
6639
6640	* builds/unix/configure.raw (version_info): Set to 9:11:3.
6641
6642	* src/base/ftobjs.c (IsMacResource): Fix a small bug that caused a
6643	crash with some Mac OS X .dfont files.  Submitted by Masatake
6644	Yamato.
6645
6646	* autogen.sh: Small fix to get it working on Mac OS X properly:
6647	The issue is that GNU libtool is called `glibtool' on this platform,
6648	and we must call `glibtoolize', since `libtoolize' doesn't exist.
6649
66502007-01-10  David Turner  <david@freetype.org>
6651
6652	* all-sources: Tag all sources with VER-2-3-0-RC1 and
6653	VER-2-3-0.
6654
6655	* Jamfile (RefDoc), README, builds/win32/visualc/freetype.dsp,
6656	builds/win32/visualc/freetype.vcproj, docs/VERSION.DLL: Update
6657	version number to 2.3.0.
6658
6659	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 3.
6660	(FREETYPE_PATCH): Set to 0.
6661
6662	* include/freetype/ftchapters.h, include/freetype/ftgasp.h,
6663	include/freetype/ftlcdfil.h: Update reference documentation with
6664	GASP support and LCD filtering sections.
6665
6666	* src/pshinter/pshalgo.c (psh_glyph_compute_inflections): Fix a typo
6667	which created an endless loop with some malformed font files.
6668
66692007-01-10  Derek Clegg  <dclegg@apple.com>
6670
6671	* src/type1/t1load.c (T1_Get_MM_Var): Always return fixed-point
6672	values.
6673
66742007-01-08  David Turner  <david@freetype.org>
6675
6676	* docs/CHANGES: Updated.
6677
6678	* include/freetype/ftgasp.h, src/base/ftgasp.c: New files which add
6679	a new API `FT_Get_Gasp' to return entries of the `gasp' table
6680	corresponding to a given character pixel size.
6681
6682	* src/sfnt/ttload.c (tt_face_load_gasp): Add version check for the
6683	`gasp' table, in order to avoid potential problems with later
6684	versions.
6685
6686	* include/freetype/config/ftheader.h (FT_GASP_H): New macro for
6687	<freetype/ftgasp.h>.
6688
6689	* src/base/rules.mk (BASE_SRC), src/base/Jamfile (_sources),
6690	modules.cfg (BASE_EXTENSIONS), builds/win32/visualc/freetype.dsp,
6691	builds/win32/visualc/freetype.vcproj: Add src/base/ftgasp.c to the
6692	default build.
6693
66942007-01-07  Werner Lemberg  <wl@gnu.org>
6695
6696	* src/cid/cidparse.c (cid_parser_new): Improve error message for
6697	Type 11 fonts.
6698	Scan for `/sfnts' token.
6699
67002007-01-07  Werner Lemberg  <wl@gnu.org>
6701
6702	* src/cid/cidparse.c (cid_parser_new): Reject Type 11 fonts.
6703
67042007-01-06  Werner Lemberg  <wl@gnu.org>
6705
6706	* src/cff/cffload.c (cff_index_init): Remove unused variable.
6707	(cff_index_read_offset): s/perror/errorp/ to avoid global shadowing.
6708
67092007-01-04  David Turner  <david@freetype.org>
6710
6711	* src/pfr/pfrobjs.c (pfr_face_init): Detect non-scalable fonts
6712	correctly.  This fixes Savannah bug #17876.
6713
6714
6715	Do not allocate interpreter-specific tables in memory if we are not
6716	going to load glyphs with the bytecode interpreter anyway.
6717
6718	* src/truetype/ttgload.c (tt_loader_init): Load execution context
6719	only if glyph is hinted.
6720	Updated.
6721	* src/truetype/ttobjs.h (TT_SizeRec): Add members `bytecode_ready'
6722	and `cvs_ready'.
6723	Add `tt_size_ready_bytecode' declaration.
6724	* src/truetype/ttobjs.c (tt_size_done_bytecode,
6725	tt_size_init_bytecode, tt_size_ready_bytecode): New functions.
6726	(tt_size_init): Move most code into `tt_size_init_bytecode'.
6727	(tt_size_done): Move most code into `tt_size_done_bytecode'.
6728	(tt_size_reset): Move some code to `tt_size_ready_bytecode'.
6729
6730
6731	Don't extract the metrics table from the SFNT font file.  Instead,
6732	reparse it on each glyph load.  The runtime difference is not
6733	noticeable, and it can save a lot of heap memory when memory-mapped
6734	files are not used.
6735
6736	* include/freetype/internal/tttypes.h (TT_FaceRec): Add members
6737	`horz_metrics_offset' and `vert_metrics_offset'.
6738	* src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_get_metrics):
6739	Updated.
6740
6741
6742	* src/sfnt/ttcmap.c (tt_cmap4_validate): Slight optimization.
6743
6744
6745	Do not load the CFF index offsets into memory, since this wastes a
6746	*lot* of heap memory with large Asian CFF fonts.  There is no
6747	significant performance loss.
6748
6749	* src/cff/cffload.h: Add `cff_charset_cid_to_gindex' declaration.
6750	* src/cff/cfftypes.h (CFF_IndexRec): Add fields `start' and
6751	`data_size'.
6752	(CFF_CharsetRec): Add field `num_glyphs'.
6753
6754	* src/cff/cffload.c (cff_index_read_offset, cff_index_load_offsets,
6755	cff_charset_cid_to_gindex): New functions.
6756	(cff_new_index): Renamed to...
6757	(cff_index_init): This.  Update all callers.
6758	Updated -- some code has been moved to `cff_index_load_offsets'.
6759	(cff_done_index): Renamed to...
6760	(cff_index_done): This.  Update all callers.
6761	(cff_index_get_pointers, cff_index_access_element): Updated to use
6762	stream offsets.
6763	(cff_charset_compute_cids): Set `num_glyphs' field.
6764	(cff_encoding_load): Updated.
6765
6766	* src/cff/cffgload.c (cff_slot_load): Updated.
6767
67682007-01-04  David Turner  <david@freetype.org>
6769
6770	* docs/INSTALL.UNIX: Simplify some parts, add reference to
6771	autogen.sh and pointer to README.CVS.
6772
6773	* README.CVS: Add common problem description and solution
6774	when running autogen.sh.
6775
6776	* docs/INSTALL: Add reference to MacOS X.
6777
6778	* docs/MAKEPP, docs/INSTALL.MAC: New documentation files.
6779
6780	* docs/TODO: Remove obsolete items.
6781
6782	* src/raster/ftraster.c: (TRaster_Instance): Replace it with...
6783	(TWorker): This.
6784	Remove `count_table' and `memory'.
6785	Make `grays' a pointer.
6786	(TRaster): New structure.
6787	(count_table): New static array.
6788	(RAS_ARGS, RAS_ARG, RAS_VARS, RAS_VAR, FT_UNUSED_RASTER, cur_ras,
6789	Vertical_Gray_Sweep_Step, ft_black_new, ft_black_done,
6790	ft_black_set_mode, ft_black_render): Updated.
6791	(ft_black_init): Don't initialize `count_table'.
6792	(ft_black_reset): Use the render pool.  This saves about 6KB of
6793	heap space for each FT_Library instance.
6794
6795	* src/smooth/ftgrays.c (TRaster): Replaced with...
6796	(TWorker): This.
6797	Remove `memory'.
6798	(TRaster): New structure.
6799
6800	(RAS_ARG_, RAS_ARG, RAS_VAR_, RAS_VAR, ras, gray_render_line,
6801	gray_move_to, gray_line_to, gray_conic_to, gray_cubic_to,
6802	gray_render_span, gray_raster_render): Updated.
6803	(gray_raster_reset): Use the render pool.  This saves about 6KB of
6804	heap space for each FT_Library instance.
6805
6806	* src/sfnt/sfobjs.c, src/sfnt/ttkern.c, src/sfnt/ttkern.h,
6807	src/sfnt/ttmtx.c, src/sfnt/ttsbit.c, src/sfnt/ttsbit.h,
6808	src/truetype/ttpload.c, include/freetype/config/ftoption.h: Remove
6809	FT_OPTIMIZE_MEMORY macro (and code for !FT_OPTIMIZE_MEMORY) since
6810	the optimization is no longer experimental.
6811
6812	* src/pshinter/pshalgo.c (psh_glyph_interpolate_normal_points):
6813	Remove a typo that results in no hinting and a memory leak with some
6814	large Asian CFF fonts.
6815
6816	* src/base/ftobjs.c (FT_Done_Library): Remove a subtle memory leak
6817	which happens when FT_Done_Library is called with still opened
6818	CFF_Faces in it.  We need to close all faces before destroying the
6819	modules, or else some bad things (memory leaks) may happen.
6820
68212007-01-02  Werner Lemberg  <wl@gnu.org>
6822
6823	* src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt0_pairs_validate):
6824	Remove compiler warning.
6825
68262007-01-02  David Turner  <david@freetype.org>
6827
6828	* src/sfnt/sfobjs.c: Add documentation comment.
6829
68302006-12-31  Masatake YAMATO  <jet@gyve.org>
6831
6832	* src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt0_pairs_validate): New
6833	function.
6834	Check uniqueness of the gid pairs.
6835	(gxv_kern_subtable_fmt0_validate): Move some code to
6836	`gxv_kern_subtable_fmt0_pairs_validate'.
6837
68382006-12-22  David Turner  <david@freetype.org>
6839
6840	* src/autofit/aflatin.c, src/truetype/ttgload.c: Remove compiler
6841	warnings.
6842
6843	* builds/win32/visualc/freetype.vcproj: Add _CRT_SECURE_NO_DEPRECATE
6844	to avoid deprecation warnings with Visual C++ 8.
6845
68462006-12-16  Anders Kaseorg  <anders@kaseorg.com>
6847
6848	* src/base/ftlcdfil.c (FT_Library_SetLcdFilter)
6849	[FT_FORCE_LIGHT_LCD_FILTER]: Fix typo.
6850
68512006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6852
6853	* include/freetype/internal/services/svotval.h: Add `volatile' to
6854	sync with the modification by Jens Claudius on 2006-08-22; cf.
6855	  https://cvs.savannah.gnu.org/viewcvs/freetype/freetype2/src/otvalid/otvmod.c?r1=1.4&r2=1.5
6856
68572006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6858
6859	* src/base/ftmac.c: Specialized for Mac OS X only.
6860	* builds/unix/ftconfig.in: Fixed for ppc64 missing Carbon framework.
6861	* builds/unix/configure.raw: Ditto.  When explicit switches for
6862	FSSpec/FSRef/QuickDraw/ATS availability are given to configure,
6863	builds/mac/ftmac.c is used instead of default src/base/ftmac.c.
6864
68652006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6866
6867	* builds/mac/ftmac.c: Copied src/base/ftmac.c for legacy system.
6868	* builds/mac/FreeType.m68k_cfm.make.txt: Fix to use builds/mac/ftmac.c
6869	instead of src/base/ftmac.c
6870	* builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
6871	* builds/mac/FreeType.ppc_classic.make.txt: Ditto.
6872	* builds/mac/FreeType.m68k_far.make.txt: Ditto, and exclude gxvalid.c
6873	that cannot be built at present.
6874
68752006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
6876
6877	* src/base/ftobjs.c: Improvement of resource fork handler for
6878	POSIX, cf.
6879	  https://lists.gnu.org/archive/html/freetype-devel/2006-10/msg00025.html
6880	(Mac_Read_sfnt_Resource): Count only `sfnt' resource of suitcase font
6881	format or .dfont, to simulate the face index number counted by ftmac.c.
6882	(IsMacResource): Return the number of scalable faces correctly.
6883
68842006-12-10  Werner Lemberg  <wl@gnu.org>
6885
6886	* builds/toplevel.mk (version): Protect against `distclean' target.
6887
68882006-12-09  Werner Lemberg  <wl@gnu.org>
6889
6890	* builds/*/*def.mk, builds/*/detect.mk (CAT): Define to either `cat'
6891	or `type'.
6892
6893	* builds/freetype.mk (version): Extracted from freetype.h, using
6894	GNU make's built-in string functions.
6895	(refdoc): Use $(version) instead of static version number.
6896
68972006-12-08  Werner Lemberg  <wl@gnu.org>
6898
6899	* builds/toplevel.mk (dist): Extract version number from freetype.h.
6900
69012006-12-08  Vladimir Volovich  <vvv@vsu.ru>
6902
6903	* src/tools/apinames.c (State): Remove final comma in structure --
6904	xlc v5 under AIX 4.3 doesn't like this.
6905
69062006-12-07  David Turner  <david@freetype.org>
6907
6908	* src/autofit/afloader.c (af_loader_load_g): Small adjustment
6909	to the spacing of auto-fitted glyphs.  This only impacts rare
6910	cases (e.g., Arial Bold at rather small character sizes).
6911
69122006-12-03  Werner Lemberg  <wl@gnu.org>
6913
6914	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttsbit0.c.
6915
69162006-12-01  Werner Lemberg  <wl@gnu.org>
6917
6918	* src/sfnt/sfobjs.c (tt_face_get_name): All Unicode strings are
6919	encoded in UTF-16BE.  Patch from Rajeev Pahuja <rpahuja@esri.com>.
6920	(tt_name_entry_ascii_from_ucs4): Removed.
6921
6922
6923	* include/freetype/ftxf86.h: Fix and extend comment so that it
6924	appears in the documentation.
6925
6926	* include/freetype/ftchapters.h: Add `font_format' section.
6927
6928
6929	* src/tools/docmaker/tohtml.py (HtmlFormatter::index_exit): Add link
6930	to TOC in index page.
6931
69322006-11-28  David Turner  <david@freetype.org>
6933
6934	* src/smooth/ftgrays.c (gray_raster_render): Return 0 when we are
6935	trying to render into a zero-width/height bitmap, not an error code.
6936
6937	* src/truetype/ttobjs.c (tt_face_init): Fix typo in previous patch.
6938
6939	* src/smooth/ftgrays.c: Remove hard-coded error values; use FreeType
6940	ones instead.
6941
6942	* src/autofit/afhints.c (af_glyph_hints_dump_segments): Remove unused
6943	variable.
6944
69452006-11-26  Pierre Hanser  <hanser@club-internet.fr>
6946
6947	* src/truetype/ttobjs.c (tt_face_init): Protect against NULL pointer.
6948
69492006-11-25  David Turner  <david@freetype.org>
6950
6951	* src/autofit/afhints.c (af_glyph_hints_dump_points,
6952	af_glyph_hints_dump_segments, af_glyph_hints_dumpedges) [!AF_DEBUG]:
6953	Add stubs to link the `ftgrid' test program when debugging is
6954	disabled in the auto-hinter.
6955
69562006-11-23  David Turner  <david@freetype.org>
6957
6958	* src/autofit/afhints.c, src/autofit/afhints.h, src/autofit/aflatin.c,
6959	src/autofit/aftypes.h: Miscellaneous auto-hinter improvements.
6960
6961	* src/autofit/afhints.c (af_glyph_hints_dump_segments) [AF_DEBUG]:
6962	Emit more sensible information.
6963
6964	* src/autofit/afhints.h (AF_SegmentRec): Add `height' member.
6965
6966	* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Improve
6967	rounding of blue values.
6968	(af_latin_hints_compute_segments): Hint segment heights.
6969	(af_latin_hints_link_segments): Reduce `len_score' value.
6970	(af_latin_hints_compute_edges): Increase `segment_length_threshold'
6971	value and use `height' member for comparisons.
6972	(af_latin_hint_edges): Extend logging message.
6973	Improve handling of remaining edges.
6974
69752006-11-22  Werner Lemberg  <wl@gnu.org>
6976
6977	Fix Savannah bug #15553.
6978
6979	* src/truetype/ttgload.c (tt_loader_init): Re-execute the CVT
6980	program after a change from mono to grayscaling (and vice versa).
6981	Use correct constant for comparison to get `exec->grayscale'.
6982
69832006-11-18  Werner Lemberg  <wl@gnu.org>
6984
6985	Because FT_Load_Glyph expects CID values for CID-keyed fonts, the
6986	test for a valid glyph index must be deferred to the font drivers.
6987	This patch fixes Savannah bug #18301.
6988
6989	* src/base/ftobjs.c (FT_Load_Glyph): Don't check `glyph_index'.
6990	* src/bdf/bdfdrivr.c (BDF_Glyph_Load), src/cff/cffgload.c
6991	(cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph),
6992	src/pcf/pcfdrivr.c (PCF_Glyph_Load), src/pfr/pfrobjs.c
6993	(pfr_slot_load), src/truetype/ttdriver.c (Load_Glyph),
6994	src/type1/t1gload.c (T1_Load_Glyph), src/winfonts/winfnt.c
6995	(FNT_Load_Glyph): Check validity of `glyph_index'.
6996
69972006-11-13  David Turner  <david@freetype.org>
6998
6999	* src/truetype/ttinterp.c (FIX_BYTECODE): Undefine.  The interpreter
7000	`enhancements' are still too buggy for general use.
7001
7002	* src/base/ftlcdfil.c: Add support for FT_FORCE_LIGHT_LCD_FILTER and
7003	FT_FORCE_LEGACY_LCD_FILTER at compile time.  Define these macros
7004	when building the library to change the default LCD filter to be
7005	used.  This is only useful for experimentation.
7006
7007	* include/freetype/ftlcdfil.h: Update documentation.
7008
70092006-11-10  David Turner  <david@freetype.org>
7010
7011	* src/smooth/ftsmooth.c: API change for the LCD
7012	filter.  The FT_LcdFilter value is an enumeration describing which
7013	filter to apply, with new values FT_LCD_FILTER_LIGHT and
7014	FT_LCD_FILTER_LEGACY (the latter implements the LibXft original
7015	algorithm which produces strong color fringes for everything
7016	except very-well hinted text).
7017
7018	* include/freetype/ftlcdfil.h (FT_Library_SetLcdFilter): Change
7019	second parameter to an enum type.
7020
7021	* src/base/ftlcdfil.c (USE_LEGACY): Define.
7022	(_ft_lcd_filter): Rename to...
7023	(_ft_lcd_filter_fir): This.
7024	Update parameters.
7025	(_ft_lcd_filter_legacy) [USE_LEGACY]: New filter function.
7026	(FT_Library_SetLcdFilter): Update parameters.
7027	Handle new filter modes.
7028
7029	* include/internal/ftobjs.h: Include FT_LCD_FILTER_H.
7030	(FT_Bitmap_LcdFilterFunc): Change third argument to `FT_Library'.
7031	(FT_LibraryRec) [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add filtering
7032	callback and update other fields.
7033
7034	* src/smooth/ftsmooth.c (ft_smooth_render_generic)
7035	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Update.
7036	Other minor improvements.
7037
7038	* src/autofit/aflatin.c: Various tiny improvements that drastically
7039	improve the handling of serif fonts and of LCD/LCD_V hinting modes.
7040	(af_latin_hints_compute_edges): Fix typo.
7041	(af_latin_compute_stem_width): Take better care of diagonal stems.
7042
70432006-11-09  David Turner  <david@freetype.org>
7044
7045	* src/pshinter/pshalgo.c (psh_glyph_compute_inflections): Fix
7046	typo which created a variable-used-before-initialized bug.
7047
70482006-11-07  Zhe Su  <james.su@gmail.com>
7049
7050	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Handle vertical layout
7051	also.
7052
70532006-11-03  Werner Lemberg  <wl@gnu.org>
7054
7055	* src/base/ftcalc.c: Don't use `long long' but `FT_Int64'.
7056
70572006-11-02  David Turner  <david@freetype.org>
7058
7059	Add a few tweaks to better handle serif fonts.
7060	Add more debugging messages.
7061
7062	* src/autofit/aflatin.c (af_latin_hints_compute_edges): Ignore
7063	segments that are less than 1.5 pixels high.  This gets rid of
7064	*many* corner cases with serifs.
7065	(af_latin_align_linked_edge): Add logging message.
7066	(af_latin_hint_edges): Use AF_HINTS_DO_BLUES.
7067	Add logging messages.
7068	Handle AF_EDGE_FLAG flag specially.
7069
7070	* src/autofit/afmodule.c [AF_DEBUG]: Add _af_debug,
7071	_af_debug_disable_blue_hints, and _af_debug_hints variables.
7072
7073	* src/autofit/aftypes.h (AF_LOG) [AF_DEBUG]: Use _af_debug.
7074	Update external declarations.
7075	(af_corner_orientation, af_corner_is_flat): Replaced by...
7076
7077	* include/freetype/internal/ftcalc.h (ft_corner_orientation,
7078	ft_corner_is_flat): These declarations.
7079
7080	* src/autofit/afangles.c (af_corner_orientation, af_corner_is_flat):
7081	Comment out.  Replaced by...
7082
7083	* src/base/ftcalc.h (ft_corner_orientation, ft_corner_is_flat):
7084	These functions.  Update all callers.
7085	(FT_Add64) [!FT_LONG64]: Simplify.
7086
7087	* src/autofit/afhints.c: Include FT_INTERNAL_CALC_H.
7088	(af_direction_compute): Add a missing FT_ABS call.  This bug caused
7089	production of garbage by missing lots of segments.
7090
7091	* src/autofit/afhints.h (AF_HINTS_DO_BLUES): New macro.
7092
7093	* src/autofit/afloader.c (af_loader_init, af_loader_done)
7094	[AF_DEBUG]: Set _af_debug_hints.
7095
7096
7097	* src/pshinter/pshalgo.c: Include FT_INTERNAL_CALC_H.
7098	(psh_corner_is_flat, psh_corner_orientation): Use ft_corner_is_flat
7099	and ft_corner_orientation.
7100
7101
7102	* src/gzip/inftrees.c (huft_build): Remove compiler warning.
7103
71042006-10-24  Werner Lemberg  <wl@gnu.org>
7105
7106	* src/cff/cffload.c (cff_encoding_load): Remove unused variable.
7107
7108	* src/base/ftobjs.c (FT_Select_Charmap): Disallow FT_ENCODING_NONE
7109	as argument.
7110
71112006-10-23  Zhe Su  <zsu@novell.com>
7112
7113	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Re-implement to
7114	better deal with broken Asian fonts with strange glyphs, having
7115	self-intersections and other peculiarities.  The used algorithm is
7116	based on the nonzero winding rule.
7117
71182006-10-23  David Turner  <david@freetype.org>
7119
7120	Speed up the CFF font loader.  With some large CFF fonts,
7121	FT_Open_Face is now more than three times faster.
7122
7123	* src/cff/cffload.c (cff_get_offset): Removed.
7124	(cff_new_index): Inline functionality of `cff_get_offset'.
7125	(cff_charset_compute_cids, cff_charset_free_cids): New functions.
7126	(cff_charset_done): Call `cff_charset_free_cids'.
7127	(cff_charset_load): Call `cff_charset_compute_cids'.
7128	(cff_encoding_load) <Populate>: Ditto, to replace inefficient loop.
7129
7130	* src/sfnt/ttmtx.c (tt_face_load_hmtx): Replace calls to FT_GET_XXX
7131	with FT_NEXT_XXX.
7132
7133
7134	Speed up the Postscript hinter, with more than 100% speed increase
7135	on my machine.
7136
7137	* src/pshinter/pshalgo.c (psh_corner_is_flat,
7138	psh_corner_orientation): New functions.
7139	(psh_glyph_compute_inflections): Merge loops for efficiency.
7140	Use `psh_corner_orientation'.
7141	(psh_glyph_init): Use `psh_corner_is_flat'.
7142	(psh_hint_table_find_strong_point): Renamed to...
7143	(psh_hint_table_find_strong_points): This.
7144	Rewrite, adding argument to handle all points at once.
7145	Update all callers.
7146	(PSH_MAX_STRONG_INTERNAL): New macro.
7147	(psh_glyph_interpolate_normal_points): Rewrite for efficiency.
7148
71492006-10-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7150
7151	* src/base/ftmac.c (FT_New_Face_From_FOND): Initialize variable
7152	`error' with FT_Err_Ok.
7153
71542006-10-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7155
7156	* docs/INSTALL.CROSS: New document file for cross-building.
7157
7158	* builds/unix/configure.raw: Preliminary cross-building support.
7159	Find native C compiler and pass it by CC_BUILD, and
7160	find suffix for native executable and pass it by EXEEXT_BUILD.
7161	Also suffix for target executable is passed by EXEEXT.
7162
7163	* builds/unix/unix-cc.in (CCraw_build, E_BUILD): New variables to
7164	build `apinames' which runs on building system.  They are set by
7165	CC_BUILD and EXEEXT_BUILD.
7166
7167	* builds/exports.mk (APINAMES_EXE): Change the extension for
7168	apinames from the suffix for target (E) to that for building host
7169	(E_BUILD).
7170
71712006-10-12  Werner Lemberg  <wl@gnu.org>
7172
7173	* docs/INSTALL.UNX, docs/UPGRADE.UNX: Renamed to...
7174	* docs/INSTALL.UNIX, docs/UPGRADE.UNIX: This.  Update all documents
7175	which reference those files.
7176
71772006-10-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7178
7179	* builds/unix/configure.raw (FT2_EXTRA_LIBS): New variable.  It is
7180	embedded in freetype2.pc and freetype-config.  Use it to record
7181	Carbon dependency of MacOSX.
7182
7183	* builds/unix/freetype2.in: Embed FT2_EXTRA_LIBS.
7184
7185	* builds/unix/freetype-config.in: Ditto.
7186
71872006-10-11  Werner Lemberg  <wl@gnu.org>
7188
7189	* devel/ftoption.h (FT_CONFIG_OPTION_SUBPIXEL_RENDERING): Define for
7190	development.
7191
71922006-10-03  Jens Claudius  <jens.claudius@yahoo.com>
7193
7194	* include/freetype/config/ftstdlib.h: Cast away volatileness from
7195	argument to ft_setjmp.
7196
7197	* include/freetype/internal/ftvalid.h: Add comment that
7198	ft_validator_run must not be used.
7199
72002006-10-01  Werner Lemberg  <wl@gnu.org>
7201
7202	* src/base/ftbase.c: Undo change from 2006-09-30.
7203
7204	* src/base/rules.mk (BASE_SRC): Remove `ftlcdfil.c'.
7205
72062006-09-30  David Turner  <david@freetype.org>
7207
7208	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec):
7209	s/unpatented_hinting/ignore_unpatented_hinter/.
7210	Update all callers.
7211
7212	* src/base/ftobjs.c (FT_Load_Glyph): Refine the algorithm whether
7213	auto-hinting shall be used or not.
7214
7215	* src/truetype/ttobjs.c (tt_face_init): Ditto.
7216
72172006-09-30  Werner Lemberg  <wl@gnu.org>
7218
7219	* src/base/rules.mk (BASE_SRC): Remove `ftapi.c' (which is no longer
7220	in use).
7221
7222	* src/base/ftbase.c: Include `ftlcdfil.c'.
7223
72242006-09-29  Werner Lemberg  <wl@gnu.org>
7225
7226	* src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Fix algorithm for
7227	overlapping segments.  Bug reported by Stefan Koch.
7228
72292006-09-28  David Turner  <david@freetype.org>
7230
7231	Fix a bug in the automatic unpatented hinting support which prevents
7232	normal bytecode hinting to work properly.
7233
7234	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec):
7235	s/force_autohint/unpatented_hinting/.  Update all callers.
7236
7237	* src/base/ftobjs.c (FT_Load_Glyph): Updated code.
7238
7239	* src/autofit/aftypes.h (AF_DEBUG): Undefine to get rid of traces.
7240
72412006-09-27  David Turner  <david@freetype.org>
7242
7243	* include/freetype/freetype.h (FT_FREETYPE_PATCH): Set to 2.
7244
7245
7246	Add a new API to support color filtering of subpixel glyph bitmaps.
7247	In a default build, the function `FT_Library_SetLcdFilter' returns
7248	`FT_Err_Unimplemented_Feature'; you need to #define
7249	FT_CONFIG_OPTION_SUBPIXEL_RENDERING in ftoption.h to compile the
7250	real implementation.
7251
7252	* include/freetype/ftlcdfil.h, src/base/ftlcdfil.c: New files.
7253
7254	* include/freetype/internal/ftobjs.h (FT_Bitmap_LcdFilterFunc): New
7255	typedef.
7256	(FT_LibraryRec) [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: New members
7257	`lcd_filter_weights' and `lcd_filter'.
7258
7259	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove arguments
7260	`hmul' and `vmul'.
7261
7262	Handle subpixel rendering.
7263	Simplify function.
7264	(ft_smooth_render_lcd): Use `FT_RENDER_MODE_LCD'.
7265	(ft_smooth_render_lcd_v): Use `FT_RENDER_MODE_LCD_V'.
7266
7267	* include/freetype/config/ftheader.h (FT_LCD_FILTER_H): New macro,
7268	pointing to <freetype/ftlcdfil.h>.
7269
7270	* src/base/Jamfile (_sources), src/base/rules.mk (BASE_SRC),
7271	vms_make.com: Add `ftlcdfil.c' to the list of compiled source files.
7272
7273	* modules.cfg (BASE_EXTENSIONS): Add ftlcdfil.c.
7274
72752006-09-26  David Bustin
7276
7277	* src/pfr/pfrobjs.c (pfr_face_get_kerning): Skip adjustment bytes
7278	correctly.  Reported as Savannah bug #17843.
7279
72802006-09-26  David Turner  <david@freetype.org>
7281
7282	* src/autofit/afhints.h (AF_HINTS_DO_HORIZONTAL,
7283	AF_HINTS_DO_VERTICAL, AF_HINTS_DO_ADVANCE): New macros to disable
7284	horizontal and vertical hinting for the purpose of debugging the
7285	auto-fitter.
7286
7287	* src/autofit/afmodule.c (_af_debug_disable_horz_hints,
7288	_af_debug_disable_vert_hints) [AF_DEBUG]: New global variables.
7289
7290	* src/autofit/aftypes.h [AF_DEBUG]: Declare above variables.
7291
7292	* include/freetype/config/ftoption.h, devel/ftoption.h
7293	(FT_CONFIG_OPTION_SUBPIXEL_RENDERING): New macro to control whether
7294	we want to compile LCD-optimized rendering code (à la ClearType) or
7295	not.  The macro *must* be disabled in default builds of the library
7296	for patent reasons.
7297
7298	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Disable
7299	LCD-specific rendering when FT_CONFIG_OPTION_SUBPIXEL_RENDERING
7300	isn't defined at compile time.  This only changes the content of the
7301	rendered glyph to match the one of normal gray-level rendering,
7302	hence clients should not need to be modified.
7303
7304	* docs/CHANGES: Updated.
7305
73062006-09-18  Garrick Meeker  <garrick@digitalanarchy.com>
7307
7308	* src/base/ftmac.c (FT_New_Face_From_FOND): Fall back to SFNT if
7309	LWFN fails and both are available.
7310
73112006-09-11  David Turner  <david@freetype.org>
7312
7313	* src/sfnt/sfobjs.c (tt_face_get_name): Support some fonts which
7314	report their English names through an Apple Roman
7315	(platform,encoding) pair, with language_id != English.
7316
7317	If the font uses another name entry with language_id == English, it
7318	will be selected correctly, though.
7319
7320	* src/truetype/ttobjs.c (tt_face_init): Add unpatented hinting
7321	selection for `mingli.ttf'.
7322
73232006-09-05  Werner Lemberg  <wl@gnu.org>
7324
7325	* src/truetype/ttpload.c (tt_face_load_hdmx): Handle `record_size'
7326	values which have the upper two bytes set to 0xFF instead of 0x00
7327	(as it happens in at least two CJKV fonts, `HAN NOM A.ttf' and
7328	`HAN NOM B.ttf').
7329
7330	* src/smooth/ftgrays.c [GRAYS_USE_GAMMA]: Really remove all code.
7331
73322006-09-05  David Turner  <david@freetype.org>
7333
7334	Minor source cleanups and optimizations.
7335
7336	* src/smooth/ftgrays.c (GRAYS_COMPACT): Removed.
7337	(TRaster): Remove `count_ex' and `count_ey'.
7338	(gray_find_cell): Remove 2nd and 3rd argument.
7339	(gray_alloc_cell): Merged with `gray_find_cell'.
7340	(gray_record_cell): Simplify.
7341	(gray_set_cell): Rewrite.
7342	(gray_start_cell): Apply offsets to `ras.ex' and `ras.ey'.
7343	(gray_render_span): Don't use FT_MEM_SET for small values.
7344	(gray_dump_cells) [DEBUG_GRAYS]: New function.
7345	(gray_sweep): Avoid buffer overwrites when to drawing the end of a
7346	bitmap scanline.
7347	(gray_convert_glyph): Fix speed-up.
7348
73492006-09-04  David Turner  <david@freetype.org>
7350
7351	* src/smooth/ftgrays.c (gray_convert_glyphs): Make it work with
7352	64bit processors.
7353
73542006-09-03  Werner Lemberg  <wl@gnu.org>
7355
7356	* devel/ftoption.h: Synchronize with
7357	include/freetype/config/ftoption.h.
7358
7359	* src/smooth/ftgrays.c (gray_record_cell): Remove shadowing
7360	variable declaration.
7361	(gray_convert_glyph): Fix compiler warnings.
7362
73632006-09-01  David Turner  <david@freetype.org>
7364
7365	* src/truetype/ttobjs.c (tt_face_init): Update the TrueType loader
7366	to recognize a few fonts that require the automatic unpatented
7367	loader.
7368
7369	* src/smooth/ftgrays.c: Optimize the performance of the anti-aliased
7370	rasterizer.  The speed improvement is between 15% and 25%, depending
7371	on the font data.
7372
7373	(GRAYS_USE_GAMMA, GRAYS_COMPACT): Removed, and all associated code.
7374	(TCell): Redefine.
7375	(TRaster): New members `buffer', `buffer_size', `ycells', `ycount'.
7376	(gray_init_cells): Updated.
7377	(gray_find_cell, gray_alloc_cell): New functions.
7378	(gray_record_cell): Rewritten to use `gray_find_cell' and
7379	`gray_alloc_cell'.
7380	(PACK, LESS_THAN, SWAP_CELLS, DEBUG_SORT, QUICK_SORT, SHELL_SORT,
7381	QSORT_THRESHOLD):
7382	Removed.
7383	(gray_shell_sort, gray_quick_sort, gray_check_sort,
7384	gray_dump_cells): Removed.
7385	(gray_sweep): Rewritten.
7386	(gray_convert_glyph): Rewrite code which used one of the sorting
7387	functions.
7388	(gray_raster_render): Updated.
7389
73902006-08-29  Dr. Werner Fink  <werner@suse.de>
7391
7392	* configure: Make it possible to handle configure options which
7393	have strings containing spaces.
7394
73952006-08-27  David Turner  <david@freetype.org>
7396
7397	* include/freetype/config/ftoption.h (TT_USE_BYTECODE_INTERPRETER):
7398	New macro, defined if either TT_CONFIG_OPTION_BYTECODE_INTERPRETER
7399	or TT_CONFIG_OPTION_UNPATENTED_HINTING is defined.
7400
7401	* include/freetype/internal/ftcalc.h, src/base/ftcalc.c,
7402	src/truetype/truetype.c, src/truetype/ttdriver.c,
7403	src/truetype/ttgload.c, src/truetype/ttgload.h,
7404	src/truetype/ttinterp.c, src/truetype/ttobjs.c,
7405	src/truetype/ttobjs.h, src/truetype/ttpload.c, src/type42/t42drivr.c:
7406	s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.
7407
7408	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
7409	member `force_autohint'.
7410
7411	* src/base/ftobjs.c (FT_Load_Glyph): Use `force_autohint'.
7412
7413	* src/truetype/ttobjs.c (tt_face_init): Prepare code for testing
7414	against a list of font names which need the bytecode interpreter.
7415
74162006-08-27  Jens Claudius  <jens.claudius@yahoo.com>
7417
7418	Fix miscellaneous compiler warnings.
7419
7420	* include/freetype/internal/ftobjs.h: Close comment with `*/' to
7421	avoid `/* in comment' compiler warning.
7422
7423	* src/base/ftdbgmem.c (ft_mem_table_get_source): Turn cast
7424	`(FT_UInt32)(void*)' into `(FT_UInt32)(FT_PtrDist)(void*)' since on
7425	64-bit platforms void* is larger than FT_UInt32.
7426
7427	* src/base/ftobjs.c (t_validator_error): Cast away
7428	volatileness of argument to ft_longjmp.  Spotted by Werner
7429	`Putzfrau' Lemberg.
7430
7431	* src/bdf/bdflib.c (bdf_load_font): Initialize local
7432	variable `lineno'.
7433
7434	* src/gxvalid/gxvmod.c (classic_kern_validate): Mark local variable
7435	`error' as volatile.
7436
74372006-08-27  Werner Lemberg  <wl@gnu.org>
7438
7439	* builds/unix/ftconfig.in: Synchronize with main ftconfig.h.
7440	Reported by Jens.
7441
74422006-08-22  Jens Claudius  <jens.claudius@yahoo.com>
7443
7444	Fix for previous commit, which caused many compiler warnings/errors
7445	about addresses of volatile objects passed as function arguments as
7446	non-volatile pointers.
7447
7448	* include/freetype/internal/ftvalid.h: Make FT_Validator typedef a
7449	pointer to a volatile object.
7450
7451	* src/gxvalid/gxvmod.c (gxv_load_table): Make function argument
7452	`table' a pointer to a volatile object.
7453
7454	* src/otvalid/otvmod.c (otv_load_table): Make function argument
7455	`table' a pointer to a volatile object.
7456
74572006-08-18  Jens Claudius  <jens.claudius@yahoo.com>
7458
7459	* src/gxvalid/gxvmod.c (GXV_TABLE_DECL): Mark local variable `_sfnt'
7460	as volatile since it must keep its value across a call to ft_setjmp.
7461	(gxv_validate): Same for local variables `memory' and `valid'.
7462	(classic_kern_validate): Same for local variables `memory',
7463	`ckern', and `valid'.
7464
7465	* src/otvalid/otvmod.c (otv_validate): Same for function parameter
7466	`face' and local variables `base', `gdef', `gpos', `gsub', `jstf',
7467	and 'valid'.
7468
7469	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Same for local variable
7470	`cmap'.
7471
74722006-08-16  David Turner  <david@freetype.org>
7473
7474	* src/cid/cidgload.c (cid_slot_load_glyph): Remove compiler
7475	warnings.
7476
7477	* src/base/ftobjs.c (ft_validator_run): Disable function; it is
7478	buggy by design.  Always return -1.
7479
7480
7481	Improvements to native TrueType hinting.  This is a first try,
7482	controlled by the FIX_BYTECODE macro in src/truetype/ttinterp.c.
7483
7484	* include/freetype/internal/ftgloadr.h (FT_GlyphLoadRec): Add member
7485	`extra_points2'.
7486
7487	* include/freetype/internal/tttypes.h (TT_GlyphZoneRec): Add member
7488	`orus'.
7489
7490	* src/base/ftgloadr.c (FT_GlyphLoader_Reset,
7491	FT_GlyphLoader_Adjust_Points, FT_GlyphLoader_CreateExtra,
7492	FT_GlyphLoader_CheckPoints, FT_GlyphLoader_CopyPoints): Updated to
7493	handle `extra_points2'.
7494
7495	* src/truetype/ttgload.c (tt_prepare_zone): Handle `orus'.
7496	Remove compiler warning.
7497	(cur_to_arg): Remove macro.
7498	(TT_Hint_Glyph): Updated.
7499	(TT_Process_Simple_Glyph): Handle `orus'.
7500
7501	* src/truetype/ttinterp.c (FIX_BYTECODE): New macro.
7502	(Ins_MD, Ins_MDRP, Ins_IP) [FIX_BYTECODE]: Handle `orus'.
7503	(LOC_Ins_IUP): Renamed to...
7504	(IUP_WorkerRec): This.
7505	Add `orus' member.
7506	(Shift): Renamed to...
7507	(_iup_worker_shift): This.
7508	Updated.
7509	(Interp): Renamed to...
7510	(_iup_worker_interpolate): This.
7511	Updated to handle `orus'.
7512	(Ins_IUP): Updated.
7513
7514	* src/truetype/ttobjs.c (tt_glyphzone_done, tt_glyphzone_new):
7515	Handle `orus'.
7516
75172006-08-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7518
7519	* modules.cfg (BASE_EXTENSIONS): Compile in ftgxval.c by default to
7520	build ftvalid in ft2demos.  This has been inadvertently changed
7521	2006-08-13.
7522
75232006-08-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7524
7525	`ft_validator_run' wrapping `setjmp' can cause a crash, as found by
7526	Jens:
7527	https://lists.gnu.org/archive/html/freetype-devel/2006-08/msg00004.htm.
7528
7529	* src/otvalid/otvmod.c: Replace `ft_validator_run' by `ft_setjmp'.
7530	It reverts the change introduced on 2005-08-20.
7531
7532	* src/gxvalid/gxvmod.c: Ditto.
7533
75342006-08-13  Jens Claudius  <jens.claudius@yahoo.com>
7535
7536	* finclude/freetype/internal/psaux.h: (T1_TokenType): Add
7537	T1_TOKEN_TYPE_KEY.
7538	(T1_FieldRec): Add `dict'.
7539	(T1_FIELD_DICT_FONTDICT, T1_FIELD_DICT_PRIVATE): New macros.
7540	(T1_NEW_XXX, T1_FIELD_XXX): Update to take the dictionary where a PS
7541	keyword is expected as an additional argument.
7542
7543	* src/cid/cidload.c: (cid_field_records): Adjust invocations of
7544	T1_FIELD_XXX.
7545
7546	* src/cid/cidtoken.h: Adjust invocations of T1_FIELD_XXX.
7547
7548	* src/psaux/psobjs.c: Add macro FT_COMPONENT for tracing.
7549	(ps_parser_to_token): Report a PostScript key as T1_TOKEN_TYPE_KEY,
7550	not T1_TOKEN_TYPE_ANY.
7551	(ps_parser_load_field): Make sure a token that should be a string or
7552	name is really a string or name.
7553	Avoid memory leak if a keyword has been already encountered and its
7554	value is overwritten.
7555	* src/type1/t1load.c: (t1_keywords): Adjust invocations of
7556	T1_FIELD_XXX.
7557	(parse_dict): Ignore keywords that occur in the wrong dictionary
7558	(e.g., in `Private' instead of `FontDict').
7559
7560	* src/type1/t1tokens.h: Adjust invocations of T1_FIELD_XXX.
7561
7562	* src/type42/t42parse.c: (t42_keywords): Adjust invocations of
7563	T1_FIELD_XXX.
7564
75652006-07-18  Jens Claudius  <jens.claudius@yahoo.com>
7566
7567	Move creation of field `buildchar' of T1_DecoderRec out of
7568	`t1_decoder_init' and let the caller of `t1_decoder_init' take care
7569	of it.
7570
7571	Call the finisher for T1_Decoder in `cid_face_compute_max_advance'
7572	and `T1_Compute_Max_Advance'.
7573
7574	* include/freetype/internal/psaux.h (T1_DecoderRec): Remove field
7575	`face', add `len_buildchar'.
7576
7577	* include/freetype/internal/t1types.h (T1_FaceRec): Add field
7578	`buildchar'.
7579
7580	* src/cid/cidgload.c (cid_face_compute_max_advance): Call finisher
7581	for T1_Decoder.
7582	(cid_slot_load_glyph): Do not ignore failure when initializing the
7583	T1_Decoder.
7584
7585	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Updated.
7586	(t1_decoder_init): Remove initialization of fields `buildchar' and
7587	`len_buildchar'.
7588	(t1_decoder_done): Remove deallocation of field `buildchar'.
7589
7590	* freetype/src/type1/t1gload.c (T1_Compute_Max_Advance): Initialize
7591	T1_Decoder's `buildchar' and `len_buildchar'; call finisher for
7592	T1_Decoder.
7593	(T1_Load_Glyph): Initialize T1_Decoder's `buildchar' and
7594	`len_buildchar'; make sure to call finisher for T1_Decoder even in
7595	case of error.
7596
7597	* src/type1/t1load.c (T1_Open_Face): Allocate new field `buildchar'
7598	of T1_FaceRec.
7599
7600	* src/type1/t1objs.c (T1_Face_Done): Free new field `buildchar' of
7601	T1_FaceRec.
7602
76032006-07-14  Jens Claudius  <jens.claudius@yahoo.com>
7604
7605	* include/freetype/internal/psaux.h: New macros IS_PS_NEWLINE,
7606	IS_PS_SPACE, IS_PS_SPECIAL, IS_PS_DELIM, IS_PS_DIGIT, IS_PS_XDIGIT,
7607	and IS_PS_BASE85 (from src/psaux/psconv.h).
7608	(T1_FieldLocation): Add T1_FIELD_LOCATION_LOADER,
7609	T1_FIELD_LOCATION_FACE, and T1_FIELD_LOCATION_BLEND.
7610	(T1_DecoderRec): New fields `buildchar' and `face'.
7611	(IS_PS_TOKEN): New macro.
7612
7613	* include/freetype/internal/t1types.h (T1_FaceRec): New fields
7614	`ndv_idx', `cdv_idx', and `len_buildchar'.
7615
7616	* include/freetype/t1tables.h (PS_BlendRec): New fields
7617	`default_design_vector' and `num_default_design_vector'.
7618
7619	* src/psaux/psconv.h: Move macros IS_PS_NEWLINE, IS_PS_SPACE,
7620	IS_PS_SPECIAL, IS_PS_DELIM, IS_PS_DIGIT, IS_PS_XDIGIT, and
7621	IS_PS_BASE85 to include/freetype/internal/psaux.h.
7622
7623	* src/psaux/psobjs.c (ps_parser_to_token_array): Allow `token'
7624	argument to be NULL if we want only to count the number of tokens.
7625	(ps_tocoordarray): Allow `coords' argument to be NULL if we just
7626	want to skip the array.
7627	(ps_tofixedarray): Allow `values' argument to be NULL if we just
7628	want to skip the array.
7629
7630	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add support
7631	for (partially commented out) othersubrs 19-25, 27, and 28.
7632	(t1_decoder_init): Initialize new fields `face' and `buildchar'.
7633	(t1_decoder_done): Release new field `buildchar'.
7634
7635	* src/type1/t1load.c (parse_buildchar, parse_private): New
7636	functions.
7637	(t1_keywords): Register them.
7638	(t1_allocate_blend): Updated.
7639	(t1_load_keyword): Handle field types T1_FIELD_LOCATION_LOADER,
7640	T1_FIELD_LOCATION_FACE and T1_FIELD_LOCATION_BLEND.
7641	(parse_dict): Remove `keyword_flags' argument.
7642	Use new macro IS_PS_TOKEN.
7643	Changed function so that later PostScript definitions override
7644	earlier ones.
7645	(t1_init_loader): Initialize new field `keywords_encountered'.
7646	(T1_Open_Face): Initialize new fields `ndv_idx', `cdv_idx', and
7647	`len_buildchar'.
7648	Remove `keywords_flags'.
7649
7650	* src/type1/t1load.h (T1_LoaderRec): New field
7651	`keywords_encountered'.
7652	(T1_PRIVATE, T1_FONTDIR_AFTER_PRIVATE): New macros.
7653
7654	* src/type1/t1tokens.h [!T1_CONFIG_OPTION_NO_MM_SUPPORT]: New
7655	entries for parsing /NDV, /CDV, and /DesignVector.
7656
76572006-07-07  Werner Lemberg  <wl@gnu.org>
7658
7659	Add many checks to protect against malformed PCF files.
7660
7661	* src/pcf/pcfdrivr.c (PCF_Face_Done): Protect against NULL pointers.
7662	(PCF_Face_Init): Add calls to PCF_Face_Done in case of errors.
7663
7664	* src/pcf/pcfread.c (pcf_read_TOC): Protect against malformed table
7665	data and check that tables don't overlap (using a simple
7666	bubblesort).
7667	(PCF_METRIC_SIZE, PCF_COMPRESSED_METRIC_SIZE, PCF_PROPERTY_SIZE):
7668	New macros which give the size of data structures in the data
7669	stream.
7670	(pcf_get_properties): Use rough estimates to get array size limits.
7671	Assign `face->nprops' and `face->properties' earlier so that a call
7672	to PCF_Face_Done can do the clean-up in case of error.
7673	Protect against invalid string offsets.
7674	(pcf_get_metrics): Clean up code.
7675	Adjust tracing message levels.
7676	Use rough estimate to get array size limit.
7677	(pcf_get_bitmaps): Clean up code.
7678	Adjust tracing message levels.
7679	Use rough estimates to get offset limits.
7680	(pcf_get_encodings): Adjust tracing message level.
7681	(pcf_get_accel): Clean up code.
7682
76832006-06-26  Werner Lemberg  <wl@gnu.org>
7684
7685	* src/bdf/bdfdrivr.c (BDF_Face_Init): Handle fonts correctly which
7686	don't have a POINT_SIZE property.  This fixes Savannah bug #16914.
7687
76882006-06-26  Jens Claudius  <jens.claudius@yahoo.com>
7689
7690	* src/psaux/t1decode.c (T1_Operator, t1_args_count): Add opcode 15.
7691	(t1_decoder_parse_charstrings): Operator with
7692	opcode 15 pops its two arguments.
7693	Handle the case where the pops of an othersubr may be part of a
7694	subroutine.
7695	Handle unknown othersubrs gracefully: count their operands and let
7696	the following pop operators push the operands as the results onto
7697	the Type1 stack.
7698	Improve handling of setcurrentpoint opcode.
7699
77002006-06-25  Jens Claudius  <jens.claudius@yahoo.com>
7701
7702	The Type 1 parser now skips over top-level procedures as required
7703	for a `Simplified Parser'.  This makes the parser more robust as it
7704	doesn't poke around in PostScript code.  Additionally, it makes the
7705	FontDirectory hackery in src/type1/t1load.c unnecessary.
7706
7707	* src/psaux/psobjs.c (IS_OCTAL_DIGIT): New macro.
7708	(skip_literal_string): Add FT_Error as return value.
7709	Handle escapes better.
7710	(skip_string): Add FT_Error as return value.
7711	Don't set `parser->error' but return error code directly.
7712	(skip_procedure): New function.
7713	(ps_parser_skip_PS_token): Handle procedures.
7714	Update code.
7715	(ps_parser_to_token): Update code.
7716	(ps_parser_load_field_table): Handle bbox entries also.
7717
7718	* src/type1/t1load.c (parse_dict): Remove FontDirectory hackery.
7719	Add commented-out code for synthetic fonts.
7720
77212006-06-24  Eugeniy Meshcheryakov  <eugen@univ.kiev.ua>
7722
7723	Fix two hinting bugs as reported in
7724	https://lists.gnu.org/archive/html/freetype-devel/2006-06/msg00057.html.
7725
7726	* include/freetype/internal/tttypes.h (TT_GlyphZoneRec): Add
7727	`first_point' member.
7728
7729	* src/truetype/ttgload.c (tt_prepare_zone): Initialize
7730	`first_point'.
7731	(TT_Process_Composite_Glyph): Always untouch points.
7732
7733	* src/truetype/ttinterp.c (Ins_SHC): Fix computation of
7734	`first_point' and `last_point' in case of composite glyphs.
7735	(Ins_IUP): Fix computation of `end_point'.
7736
77372006-06-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7738
7739	Insert EndianS16_BtoN and EndianS32_BtoN as workaround for Intel
7740	Mac.  The original patch was written by David Sachitano and Lawrence
7741	Coopet, and modified by Sean McBride for MPW compatibility.  Only
7742	required data are converted; unused data are left in big endian.
7743
7744	* src/base/ftmac.c: Include <Endian.h> for byteorder macros for non
7745	Mac OS X platforms.
7746	(OS_INLINE): Undefine before definition.
7747	(count_faces_sfnt): Insert EndianS16_BtoN to parse the header of
7748	FontAssociation table in FOND resource.
7749	(count_faces_scalable): Insert EndianS16_BtoN to parse the header
7750	and fontSize at each entry of FontAssociation table in FOND
7751	resource.
7752	(parse_fond): Insert EndianS16_BtoN and EndianS32_BtoN to parse
7753	ffStylOff of FamilyRecord header of FOND resource, the header,
7754	fontSize, fontID at each entry of FontAssociation table, and
7755	StyleMapping table.
7756	(count_faces): Call `HUnlock' after all FOND utilization.
7757
77582006-06-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7759
7760	Public API of TrueTypeGX, OpenType, and classic kern table validator
7761	should return `FT_Err_Unimplemented_Feature' if validation service
7762	is unavailable (disabled in `modules.cfg').  It is originally
7763	suggested by David Turner, cf.
7764	https://lists.gnu.org/archive/html/freetype-devel/2005-11/msg00078.html
7765
7766	* src/base/ftgxval.c (FT_TrueTypeGX_Validate): Return
7767	FT_Err_Unimplemented_Feature if TrueTypeGX validation service is
7768	unavailable.
7769	(FT_ClassicKern_Validate): Return FT_Err_Unimplemented_Feature if
7770	classic kern table validation service is unavailable.
7771
7772	* src/base/ftotval.c (FT_OpenType_Validate): Return
7773	FT_Err_Unimplemented_Feature if OpenType validation service is
7774	unavailable.
7775
77762006-06-08  Werner Lemberg  <wl@gnu.org>
7777
7778	* src/bdf/bdflib.c (bdf_load_font): Fix memory leaks in case of
7779	errors.
7780
77812006-06-07  David Turner  <david@freetype.org>
7782
7783	* src/type1/t1afm.c (KERN_INDEX): Make it more robust.
7784	(T1_Read_Metrics): Fix memory leak which happened when the metrics
7785	file doesn't have kerning pairs.  This fixes Savannah bug #16768.
7786
77872006-06-06  David Turner  <david@freetype.org>
7788
7789	Fix memory leak described in Savannah bug #16759.
7790
7791	We change `ps_unicodes_init' so that it also takes a
7792	`free_glyph_name' callback to release the glyph names returned by
7793	`get_glyph_name'
7794
7795	* include/freetype/internal/services/svpscmap.h (PS_Glyph_NameFunc):
7796	Renamed to ...
7797	(PS_GetGlyphNameFunc): This.
7798	(PS_FreeGlyphNameFunc): New typedef.
7799	(PS_Unicodes_InitFunc): Add variable for PS_FreeGlyphNameFunc.
7800
7801	* src/cff/cffcmap.c (cff_sid_to_glyph_name): Use `TT_Face' for first
7802	argument.
7803	(cff_sid_free_glyph_name): New function.
7804	(cff_cmap_unicode_init): Updated.
7805
7806	* src/psaux/t1cmap.c (t1_cmap_unicode_init): Updated.
7807
7808	* src/psnames/psmodule.c (ps_unicodes_init): Add variable for
7809	PS_FreeGlyphNameFunc and use it.
7810
7811
78122006-06-04  David Turner  <david@freetype.org>
7813
7814	* src/base/ftutil.c (ft_mem_qrealloc): Fix the function to accept
7815	`item_size == 0' as well -- though this sounds weird, it can
7816	theoretically happen.  This fixes Savannah bug #16669.
7817
7818	* src/pfr/pfrobjs.c (pfr_face_init): Fix the computation
7819	of `face->num_glyphs' which missed the last glyph, due to
7820	the offset-by-1 computation, since the PFR format doesn't
7821	guarantee that glyph index 0 corresponds to the `missing
7822	glyph.  This fixes Savannah bug #16668.
7823
78242006-05-25  Werner Lemberg  <wl@gnu.org>
7825
7826	* builds/unix/unix-cc.in (LINK_LIBRARY): Don't comment out
7827	`-no-undefined'.  Reported by Christian Biesinger.
7828
78292006-05-19  Brian Weed  <bw@imaginengine.com>
7830
7831	* builds/win32/visualc/freetype.dsp: Release libraries no longer
7832	have debug information, and debug libraries use `C7 compatible'
7833	debug info.
7834
78352006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7836
7837	Apply patch by Derek Clegg to fix two memory leaks in the MacOS
7838	resource fork handler.  This fixes Savannah bug #16631.
7839
7840	* src/base/ftobjs.c (load_face_in_embedded_rfork): Replace
7841	`FT_Stream_Close' by `FT_Stream_Free' to fix memory leak.
7842
7843	* src/base/ftrfork.c (raccess_guess_linux_double_from_file_name):
7844	Replace `FT_Stream_Close' by `FT_Stream_Free' to fix memory leak.
7845
78462006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7847
7848	* build/unix/configure.raw: Add a fallback to disable Carbon
7849	dependency, if configured with no options on Mac OS X.
7850
78512006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
7852
7853	* src/base/ftmac.c (open_face_from_buffer): Deallocate stream when
7854	its content cannot be parsed as supported font.  This fixes
7855	the second part of Savannah bug #16590.
7856
78572006-05-18  Werner Lemberg  <wl@gnu.org>
7858
7859	* src/truetype/ttgload.c (TT_Load_Composite_Glyph)
7860	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Make it compilable again.
7861
78622006-05-17  David Turner  <david@freetype.org>
7863
7864	This is a major patch used to drastically improve the performance of
7865	loading glyphs.  This both speeds up loading the glyph vectors
7866	themselves and the auto-fitter module.
7867
7868	We now use inline assembler code with GCC to implement `FT_MulFix',
7869	which is probably the most important function related to the
7870	engine's performance.
7871
7872	The resulting speed-up is about 25%.
7873
7874
7875	* include/freetype/internal/tttypes.h (TT_LoaderRec): Add fields
7876	`cursor' and `limit'.
7877
7878	* src/autofit/afangles.c (af_corner_is_flat, af_corner_orientation):
7879	New functions.
7880	(AF_ATAN_BITS, af_arctan, af_angle_atan): Comment out.
7881	[TEST]: Remove.
7882
7883	* src/autofit/afcjk.c (AF_Script_UniRangeRec): Comment out test
7884	code.
7885
7886	* src/autofit/afhints.c (af_axis_hints_new_segment): Don't call
7887	`FT_ZERO'
7888	(af_direction_compute, af_glyph_hints_compute_inflections): Rewritten.
7889	(af_glyph_hints_reload: Rewrite recognition of weak points.
7890
7891	* src/autofit/aflatin.c (af_latin_hints_compute_segments): Move
7892	constant values out of the loops.
7893
7894	* src/autofit/aftypes.h: Updated.
7895
7896	* src/base/ftcalc.c (FT_MulFix): Use inline assembler code.
7897
7898	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Use vector
7899	product to get orientation.
7900
7901	* src/gzip/ftgzip.c (ft_get_uncompressed_size): New function.
7902	(FT_Stream_OpenGzip): Use it to handle small files directly in
7903	memory.
7904
7905	* src/psaux/psconv.c (PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode):
7906	Improve performance.
7907
7908	* src/truetype/ttgload.c (TT_Access_Glyph_Frame): Set `cursor' and
7909	`limit'.
7910
7911	(TT_Load_Glyph_Header, TT_Load_Simple_Glyph,
7912	TT_Load_Composite_Glyph): Updated.  Add threshold to protect against
7913	exceedingly large values of number of contours.  Speed up by
7914	reducing the number of loops.
7915
7916	* src/type1/t1gload.c (T1_Load_Glyph): Don't apply unit matrix.
7917
7918
7919	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Change the threshold
7920	used to detect rogue clients from 4 to 16.  This is to prevent some
7921	segmentation faults with fonts like `KozMinProVI-Regular.otf' which
7922	comes from the Japanese Adobe Reader Asian Font pack.
7923
79242007-05-17  Werner Lemberg  <wl@gnu.org>
7925
7926	* src/cff/cffload.c (cff_font_done): Deallocate subfont array.  This
7927	fixes the first part of Savannah bug #16590.
7928
79292006-05-16  Werner Lemberg  <wl@gnu.org>
7930
7931	* docs/PROBLEMS: Updated icl issues.
7932
7933----------------------------------------------------------------------------
7934
7935Copyright (C) 2006-2020 by
7936David Turner, Robert Wilhelm, and Werner Lemberg.
7937
7938This file is part of the FreeType project, and may only be used, modified,
7939and distributed under the terms of the FreeType project license,
7940LICENSE.TXT.  By continuing to use, modify, or distribute this file you
7941indicate that you have read the license and understand and accept it
7942fully.
7943
7944
7945Local Variables:
7946version-control: never
7947coding: utf-8
7948End:
7949