Add 'freetype-config' to package again with '--enable-freetype-config' option
[platform/upstream/freetype2.git] / ChangeLog.25
1 2014-12-30  Werner Lemberg  <wl@gnu.org>
2
3         * Version 2.5.5 released.
4         =========================
5
6
7         Tag sources with `VER-2-5-5'.
8
9         * docs/VERSION.DLL: Update documentation and bump version number to
10         2.5.5.
11
12         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
13         builds/windows/vc2005/index.html,
14         builds/windows/vc2008/freetype.vcproj,
15         builds/windows/vc2008/index.html,
16         builds/windows/vc2010/freetype.vcxproj,
17         builds/windows/vc2010/index.html,
18         builds/windows/visualc/freetype.dsp,
19         builds/windows/visualc/freetype.vcproj,
20         builds/windows/visualc/index.html,
21         builds/windows/visualce/freetype.dsp,
22         builds/windows/visualce/freetype.vcproj,
23         builds/windows/visualce/index.html,
24         builds/wince/vc2005-ce/freetype.vcproj,
25         builds/wince/vc2005-ce/index.html,
26         builds/wince/vc2008-ce/freetype.vcproj,
27         builds/wince/vc2008-ce/index.html: s/2.5.4/2.5.5/, s/254/255/.
28
29         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
30
31         * builds/unix/configure.raw (version_info): Set to 17:4:11.
32         * CMakeLists.txt (VERSION_PATCH): Set to 5.
33         * docs/CHANGES: Updated.
34
35         * builds/toplevel.mk (dist): Fix typos.
36
37 2014-12-24  Alexei Podtelezhnikov  <apodtele@gmail.com>
38
39         [base] Formatting and nanooptimizations.
40
41         * src/base/ftcalc.c,
42         * src/base/fttrigon.c: Revise sign restoration.
43
44 2014-12-13  Werner Lemberg  <wl@gnu.org>
45
46         * src/pcf/pcfread.c (pcf_read_TOC): Improve fix from 2014-12-08.
47
48 2014-12-11  Werner Lemberg  <wl@gnu.org>
49
50         * builds/toplevel.mk (dist): Use older POSIX standard for `tar'.
51
52         Apparently, BSD tar isn't capable yet of handling POSIX-1.2001
53         (contrary to GNU tar), so force the POSIX-1.1988 format.
54
55         Problem reported by Stephen Fisher <sfisher@SDF.ORG>.
56
57 2014-12-11  Werner Lemberg  <wl@gnu.org>
58
59         * src/type42/t42parse.c (t42_parse_sfnts): Reject invalid TTF size.
60
61 2014-12-11  Werner Lemberg  <wl@gnu.org>
62
63         * src/base/ftobjs.c (FT_Get_Glyph_Name): Fix off-by-one check.
64
65         Problem reported by Dennis Felsing <dennis@felsin9.de>.
66
67 2014-12-11  Werner Lemberg  <wl@gnu.org>
68
69         * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size'.
70
71         Problem reported by Dennis Felsing <dennis@felsin9.de>.
72
73 2014-12-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
74
75         [gxvalid] Fix a naming convention conflicting with ftvalid.
76
77         See previous changeset for otvalid.
78
79         * src/gxvalid/{gxvcommn.h, gxvmort.h, gxvmorx.h}: Replace
80         `valid' by `gxvalid'.
81         * src/gxvalid/{gxvbsln.c, gxvcommn.c, gxvfeat.c, gxvjust.c,
82         gxvkern.c, gxvlcar.c, gxvmort.c, gxvmort0.c, gxvmort1.c,
83         gxvmort2.c, gxvmort4.c, gxvmort5.c, gxvmorx.c, gxvmorx0.c,
84         gxvmorx1.c, gxvmorx2.c, gxvmorx4.c, gxvmorx5.c, gxvopbd.c,
85         gxvprop.c, gxvtrak.c}: Replace `valid' by `gxvalid' if
86         it is typed as GXV_Validator.
87
88 2014-12-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
89
90         [otvalid] Fix a naming convention conflicting with ftvalid.
91
92         Some prototypes in ftvalid.h use `valid' for the variables
93         typed as FT_Validator.  Their implementations in src/base/
94         ftobjs.c and utilizations in src/sfnt/ttcmap.c do similar.
95
96         Some macros in otvcommn.h assume the exist of the variable
97         `valid' typed as OTV_Validator in the caller.
98
99         Mixing these two conventions cause invalid pointer conversion
100         and unexpected SEGV in longjmp.  To prevent it, all variables
101         typed as OTV_Validator are renamed to `otvalid'.
102
103         * src/otvalid/otvcommn.h: Replace `valid' by `otvalid'.
104         * src/otvalid/{otvcommn.c, otvbase.c, otvgdef.c, otvgpos.c,
105         otvgsub.c, otvjstf.c, otvmath.c}: Replace `valid' by `otvalid'
106         if it is typed as OTV_Validator.
107
108 2014-12-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
109
110         [ftvalid] Introduce FT_THROW() in FT_INVALID_XXX macros.
111
112         Original patch is designed by Werner Lemberg.  Extra part
113         for otvalid and gxvalid are added by suzuki toshiya, see
114         discussion:
115         https://lists.nongnu.org/archive/html/freetype-devel/2014-12/msg00002.html
116         https://lists.nongnu.org/archive/html/freetype-devel/2014-12/msg00007.html
117
118         * include/internal/ftvalid.h: Introduce FT_THROW() in FT_INVALID_().
119         * src/gxvalid/gxvcommn.h: Ditto.
120         * src/otvalid/otvcommn.h: Ditto.
121
122 2014-12-08  Werner Lemberg  <wl@gnu.org>
123
124         [pcf] Fix Savannah bug #43774.
125
126         Work around `features' of X11's `pcfWriteFont' and `pcfReadFont'
127         functions.  Since the PCF format doesn't have an official
128         specification, we have to exactly follow these functions' behaviour.
129
130         The problem was unveiled with a patch from 2014-11-06, fixing issue
131         #43547.
132
133         * src/pcf/pcfread.c (pcf_read_TOC): Don't check table size for last
134         element.  Instead, assign real size.
135
136 2014-12-07  Werner Lemberg  <wl@gnu.org>
137
138         Work around a bug in Borland's C++ compiler.
139
140         See
141
142           http://qc.embarcadero.com/wc/qcmain.aspx?d=118998
143
144         for Borland's bug tracker entry.
145
146         Reported by Yuliana Zigangirova <zigangirova@inbox.ru>,
147         https://lists.gnu.org/archive/html/freetype-devel/2014-04/msg00001.html.
148
149         * include/internal/ftvalid.h (FT_ValidatorRec), src/smooth/ftgrays.c
150         (gray_TWorker_): Move `ft_jmp_buf' field to be the first element.
151
152 2014-12-07  Werner Lemberg  <wl@gnu.org>
153
154         */*: Decorate hex constants with `U' and `L' where appropriate.
155
156 2014-12-07  Werner Lemberg  <wl@gnu.org>
157
158         [truetype] Prevent memory leak for buggy fonts.
159
160         * src/truetype/ttobjs.c (tt_size_done): Unconditionally call
161         `tt_size_done_bytecode'.
162
163 2014-12-06  Werner Lemberg  <wl@gnu.org>
164
165         * Version 2.5.4 released.
166         =========================
167
168
169         Tag sources with `VER-2-5-4'.
170
171         * docs/VERSION.DLL: Update documentation and bump version number to
172         2.5.4.
173
174         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
175         builds/windows/vc2005/index.html,
176         builds/windows/vc2008/freetype.vcproj,
177         builds/windows/vc2008/index.html,
178         builds/windows/vc2010/freetype.vcxproj,
179         builds/windows/vc2010/index.html,
180         builds/windows/visualc/freetype.dsp,
181         builds/windows/visualc/freetype.vcproj,
182         builds/windows/visualc/index.html,
183         builds/windows/visualce/freetype.dsp,
184         builds/windows/visualce/freetype.vcproj,
185         builds/windows/visualce/index.html,
186         builds/wince/vc2005-ce/freetype.vcproj,
187         builds/wince/vc2005-ce/index.html,
188         builds/wince/vc2008-ce/freetype.vcproj,
189         builds/wince/vc2008-ce/index.html: s/2.5.3/2.5.4/, s/253/254/.
190
191         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
192
193         * builds/unix/configure.raw (version_info): Set to 17:3:11.
194         * CMakeLists.txt (VERSION_PATCH): Set to 4.
195         * docs/CHANGES: Updated.
196
197 2014-12-04  Werner Lemberg  <wl@gnu.org>
198
199         docs/CHANGES: Updated, formatted.
200
201 2014-12-04  Dave Arnold  <darnold@adobe.com>
202
203         [cff] Modify an FT_ASSERT.
204
205         * src/cff/cf2hints.c (cf2_hintmap_map): After the fix for Savannah
206         bug #43661, the test font `...aspartam.otf' still triggers an
207         FT_ASSERT.  Since hintmap still works with count==0, ...
208         (cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): ... add that term to
209         suppress the assert.
210
211 2014-12-04  Dave Arnold  <darnold@adobe.com>
212
213         [cff] Fix Savannah bug #43661.
214
215         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
216         cf2_cmdVSTEM, cf2_cmdHINTMASK>: Don't append to stem arrays after
217         hintmask is constructed.
218
219         * src/cff/cf2hints.c (cf2_hintmap_build): Add defensive code to
220         avoid reading past end of hintmask.
221
222 2014-12-03  Werner Lemberg  <wl@gnu.org>
223
224         docs/CHANGES: Updated.
225
226 2014-12-03  Werner Lemberg  <wl@gnu.org>
227
228         [autofit] Better fix for conversion specifiers in debug messages.
229
230         Using `%ld' for pointer differences causes warnings on 32bit
231         platforms.  The correct type would be (the relatively new) `%td',
232         however, this is missing on some important platforms.
233
234         This patch improves the change from 2014-11-28.
235
236         * src/autofit/afhints.c (AF_INDEX_NUM): Use `int' typecast.  Our
237         pointer differences are always sufficiently small.
238         (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
239         af_glyph_hints_dump_edge): Revert to `%d' and use `AF_INDEX_NUM'.
240
241 2014-12-03  Werner Lemberg  <wl@gnu.org>
242
243         FT_Sfnt_Tag: s/ft_sfnt_xxx/FT_SFNT_XXX/ for orthogonality.
244
245         All public FreeType enumeration and flag values are uppercase...
246
247         * include/tttables.h (FT_Sfnt_Tag): Implement it.  For backward
248         compatibility, retain the old values as macros.
249
250         * src/base/ftfstype.c (FT_Get_FSType_Flags), src/sfnt/sfdriver.c
251         (get_sfnt_table): Updated.
252
253 2014-12-02  Werner Lemberg  <wl@gnu.org>
254
255         * include/*: Improve structure of documentation.
256
257         . Add and update many `<Order>' tags.
258         . Apply various documentation fixes.
259         . Remove details to deprecated (or never implemented) data.
260
261 2014-12-02  Werner Lemberg  <wl@gnu.org>
262
263         [docmaker] Always handle `<Order>' section elements.
264
265         Previously, those elements were handled only for sections present in
266         a `<Sections>' chapter element.
267
268         * src/tools/docmaker/content.py (ContentProcessor::finish):
269         Implement it.
270
271 2014-12-02  Werner Lemberg  <wl@gnu.org>
272
273         [docmaker] Properly handle empty rows in Synopsis.
274
275         * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Emit
276         `&nbsp;' for empty fields.
277
278 2014-12-02  Werner Lemberg  <wl@gnu.org>
279
280         [docmaker] Thinko.
281
282         * src/tools/docmaker/content.py (DocBlock::get_markup_words_all):
283         Emit `/empty/' string for first element also.
284
285 2014-12-02  Werner Lemberg  <wl@gnu.org>
286
287         [docmaker] Honour empty lines in `<Order>' section element.
288
289         This greatly improves the readability of the `Synopsis' links.
290
291         * src/tools/docmaker/content.py (DocBlock::get_markup_words_all):
292         Insert string `/empty/' between items.
293
294         * src/tools/docmaker/formatter.py (Formatter::section_dump): Make it
295         robust against nonexistent keys.
296
297         * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Emit
298         empty <td> elements for `/empty/'.
299
300 2014-12-02  Werner Lemberg  <wl@gnu.org>
301
302         [docmaker] Ensure Python 3 compatibility.
303
304         * src/tools/docmaker/content.py (ContentProcessor::set_section,
305         ContentProcessor::finish): Replace `has_key' function with `in'
306         keyword.
307
308         * src/tools/docmaker/formatter.py (Formatter::__init__): Replace
309         sorting function with a key generator.
310         (Formatter::add_identifier): Replace `has_key' function with `in'
311         keyword.
312
313         * src/tools/docmaker/tohtml.py (HtmlFormatter::html_source_quote):
314         Replace `has_key' function with `in' keyword.
315         (HtmlFormatter::index_exit, HtmlFormatter::section_enter): Use
316         integer division.
317         s/<>/>/.
318
319         * src/tools/docmaker/utils.py: Import `itertools'.
320         (index_sort): Replaced by...
321         (index_key): ... this new key generator (doing exactly the same).
322
323 2014-11-29  Werner Lemberg  <wl@gnu.org>
324
325         [docmaker] Don't output a block multiple times.
326
327         This bug was hidden by not processing all lines of `<Order>' blocks.
328
329         * src/tools/docmaker/formatter.py (Formatter::section_dump): Filter
330         out field names.
331
332 2014-11-29  Werner Lemberg  <wl@gnu.org>
333
334         [docmaker] Use field values as HTML link targets where possible.
335
336         * src/tools/docmaker/tohtml.py (HtmlFormatter::make_block_url):
337         Accept second, optional argument to specify a name.
338         (HtmlFormatter::html_source_quote): Link to field ID if possible.
339         (HtmlFormatter::print_html_field_list): Emit `id' attribute.
340
341 2014-11-29  Werner Lemberg  <wl@gnu.org>
342
343         [docmaker] Allow empty lines in `<Order>' blocks.
344
345         Before this patch, the suggested order of entries stopped at the
346         first empty line.
347
348         Obviously, nobody noticed that this problem caused a much reduced
349         set of links in the `Synopsis' sections; in particular, the
350         `<Order>' blocks contain a lot of entries that wouldn't be listed
351         otherwise...
352
353         * src/tools/docmaker/content.py (DocBlock::get_markup_words_all):
354         New function to iterate over all items.
355         (DocSection::process): Use it.
356
357 2014-11-29  Werner Lemberg  <wl@gnu.org>
358
359         * src/tools/docmaker/sources.py (column) [Format 2]: Fix regexp.
360
361         After the single asterisk there must be no other immediately following
362         asterisk.
363
364 2014-11-29  Werner Lemberg  <wl@gnu.org>
365
366         * src/tools/docmaker/tohtml.py: Improve CSS for vertical spacing.
367
368 2014-11-29  Werner Lemberg  <wl@gnu.org>
369
370         [docmaker] Improve HTML code for table of contents.
371
372         * src/tools/docmaker/tohtml.py: Introduce a new table class `toc',
373         together with proper CSS.
374
375 2014-11-29  Werner Lemberg  <wl@gnu.org>
376
377         [docmaker] Provide higher-level markup and simplify HTML.
378
379         * src/tools/docmaker/tohtml.py: Instead of using extraneous `<div>'
380         elements, use CSS descendants (of class `section') to format the
381         data.
382
383         Also remove redundant <p> and <br> elements, replacing them with
384         proper CSS.
385
386         Globally reduce page width to 75%.
387
388         (block_header): Rename <div> class to `section'.
389
390 2014-11-29  Werner Lemberg  <wl@gnu.org>
391
392         [docmaker] Add `top' links after blocks.
393
394         * src/tools/docmaker/tohtml.py (block_footer_middle): Implement it.
395
396 2014-11-29  Werner Lemberg  <wl@gnu.org>
397
398         * src/tools/docmaker/tohtml.py: Improve CSS for fields.
399
400         Make fields align horizontally relative to full line width.
401
402 2014-11-29  Werner Lemberg  <wl@gnu.org>
403
404         * src/tools/docmaker/tohtml.py: Fix index and TOC templates.
405
406         This thinko was introduced 2014-11-27.
407
408 2014-11-28  Werner Lemberg  <wl@gnu.org>
409
410         [docmaker] Format field lists with CSS.
411
412         This also simplifies the inserted HTML code.
413
414         * src/tools/docmaker/tohtml.py
415         (HtmlFormatter::print_html_field_list): Do it.
416
417 2014-11-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
418
419         Fix compiler warning to the comparison between signed and
420         unsigned variable.
421
422         * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Fix the comparison
423         between `ypos + ysize' and FT_INT_{MAX,MIN}.
424
425 2014-11-28  Werner Lemberg  <wl@gnu.org>
426
427         [docmaker] Replace empty `<td>' with CSS.
428
429         * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Do
430         it.
431
432 2014-11-28  Werner Lemberg  <wl@gnu.org>
433
434         [docmaker] Replace some `<table>' tags with `<h4>' and `<div>'.
435
436         * src/tools/docmaker/tohtml.py (marker_*): Use `<h4>'.
437         (source_*): Use `<div>'.
438         (HtmlFormatter::block_enter): s/<h4>/<h3>/.
439
440 2014-11-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
441
442         Fix compiler warning to conversion specifiers in debug messages.
443
444         * src/autofit/afhints.c (af_glyph_hints_dump_points): Add length
445         modifier to dump long integers.
446         (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Ditto.
447
448 2014-11-27  Werner Lemberg  <wl@gnu.org>
449
450         * src/tools/docmaker/tohtml.py: Use more CSS for index.
451
452 2014-11-27  Werner Lemberg  <wl@gnu.org>
453
454         [docmaker] Replace `name' attribute of `<a>' with `id'.
455
456         * src/tools/docmaker/tohtml.py (HtmlFormatter::block_enter): Do it.
457
458 2014-11-27  Werner Lemberg  <wl@gnu.org>
459
460         * src/tools/docmaker/tohtml.py: Remove remaining `width' attributes.
461
462         For `Index' and `TOC' links, we now simply use the `text-align' CSS
463         property of `<td>' to enforce flush-left and flush-right,
464         eliminating the hack with an empty, full-width `<td>' element
465         inbetween.
466
467         The change also enforces the same (smaller) size for all index and
468         TOC links.
469
470 2014-11-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
471
472         * src/cff/cf2font.c: Include `ftcalc.h' to use FT_MSB(),
473         cf2font.c could not find it under `make multi' build.
474
475 2014-11-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
476
477         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove
478         unrequired negative value check for `width' and `height'.
479
480 2014-11-27  Werner Lemberg  <wl@gnu.org>
481
482         * src/tools/docmaker/tohtml.py: More HTML table refactoring.
483
484         Replace some `<table>' tags with `<div>' to simplify structure.
485
486         Move `bgcolor' attribute to CSS.
487
488         Replace most `width' attributes with CSS.  The remaining instances
489         (providing a similar effect as LaTeX's `\hfill' command) are removed
490         in a later patch.
491
492 2014-11-27  Werner Lemberg  <wl@gnu.org>
493
494         * src/tools/docmaker/tohtml.py: Replace <font> with CSS.
495
496 2014-11-27  Werner Lemberg  <wl@gnu.org>
497
498         * src/tools/docmaker/tohtml.py: Center <table> with CSS.
499
500 2014-11-27  Werner Lemberg  <wl@gnu.org>
501
502         * src/tools/docmaker/tohtml.py: Replace `<center>' with `<div>'.
503
504 2014-11-27  Werner Lemberg  <wl@gnu.org>
505
506         * src/tools/docmaker/tohtml.py: Remove redundant `<center>' tags.
507
508         This starts a series of commits into the direction of generating
509         valid HTML 5 code, especially using much more CSS.
510
511 2014-11-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
512
513         Prevent too negative values (< FT_INT_MIN) in bitmap metrics,
514         suggested by Alexei.
515
516         * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Prevent too
517         negative values in `xpos' and `ypos + ysize'.
518         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Prevent
519         too negative values in `x_left' and `y_top'.  Either negative
520         values in `width' and `height' are checked.
521
522 2014-11-27  Werner Lemberg  <wl@gnu.org>
523
524         [docmaker] Produce better HTML code.
525
526         * src/tools/docmaker/tohtml.py: Always use double quotes for
527         attribute values.
528         (source_footer): Close `td' and `tr' groups.
529
530 2014-11-27  Werner Lemberg  <wl@gnu.org>
531
532         Use better way to disable creation of .pyc files for `make refdoc'.
533
534         Python 2.6 was released in 2008...
535
536         * builds/freetype.mk (refdoc): Use python's `-B' option.
537
538         * builds/detect.mk (std_setup, dos_setup): Mention required python
539         version for `refdoc' target.
540
541 2014-11-27  Werner Lemberg  <wl@gnu.org>
542
543         * src/tools/docmaker/sources.py (re_bold, re_italic): Use
544         non-grouping parentheses.
545         * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word):
546         Updated.
547
548 2014-11-27  Werner Lemberg  <wl@gnu.org>
549
550         * src/base/ftobjs.c (FT_Get_Glyph_Name): Fix compiler warning.
551
552         Introduced in previous change.  Reported by Alexei.
553
554 2014-11-26  Werner Lemberg  <wl@gnu.org>
555
556         * src/*: Add checks for parameters of API functions where missing.
557
558         `API functions' are functions tagged with `FT_EXPORT_DEF'.
559
560         Besides trivial fixes, the following changes are included, too.
561
562         * src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Set
563         error code if no service is available.
564
565         * src/base/ftinit.c (FT_Done_FreeType): Change return value for
566         invalid `library' parameter to `Invalid_Library_Handle'.
567
568         * src/base/ftobjs.c (FT_New_Size): Change return value for invalid
569         `asize' parameter to `Invalid_Argument'.
570
571         * src/base/ftoutln.c (FT_Outline_Copy): Change return value for
572         invalid `source' and `target' parameters to `Invalid_Outline'.
573         (FT_Outline_Done_Internal): Change return value for invalid
574         `outline' parameter to `Invalid_Outline'.
575
576 2014-11-26  Werner Lemberg  <wl@gnu.org>
577
578         * src/cache/ftcbasic.c: Use single calls to `FT_TRACE'.
579
580 2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
581
582         * src/base/ftobjs.c (Mac_Read_POST_Resource): Additional
583         overflow check in the summation of POST fragment lengths,
584         suggested by Mateusz Jurczyk <mjurczyk@google.com>.
585
586 2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
587
588         * src/base/ftobjs.c (Mac_Read_POST_Resource): Insert comments
589         and fold too long tracing messages.
590
591 2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
592
593         Fix Savannah bug #43540.
594
595         * src/base/ftmac.c (parse_fond): Prevent a buffer overrun
596         caused by a font including too many (> 63) strings to store
597         names[] table.
598
599 2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
600
601         * src/base/ftobjs.c (Mac_Read_POST_Resource): Use unsigned long
602         variables to read the lengths in POST fragments.  Suggested by
603         Mateusz Jurczyk <mjurczyk@google.com>.
604
605 2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
606
607         Fix Savannah bug #43539.
608
609         * src/base/ftobjs.c (Mac_Read_POST_Resource): Fix integer overflow
610         by a broken POST table in resource-fork.
611
612 2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
613
614         Fix Savannah bug #43538.
615
616         * src/base/ftobjs.c (Mac_Read_POST_Resource): Fix integer overflow
617         by a broken POST table in resource-fork.
618
619 2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
620
621         * src/base/ftobjs.c (Mac_Read_POST_Resource): Avoid memory leak
622         by a broken POST table in resource-fork.  Return after freeing
623         the buffered POST table when it is found to be broken.
624
625 2014-11-25  Werner Lemberg  <wl@gnu.org>
626
627         */*: s/Invalid_Argument/Invalid_Size_Handle/ where appropriate.
628
629 2014-11-25  Werner Lemberg  <wl@gnu.org>
630
631         */*: s/Invalid_Argument/Invalid_Stream_Handle/ where appropriate.
632
633 2014-11-25  Werner Lemberg  <wl@gnu.org>
634
635         */*: s/Invalid_Argument/Invalid_Library_Handle/ where appropriate.
636
637 2014-11-25  Werner Lemberg  <wl@gnu.org>
638
639         */*: s/Invalid_Argument/Invalid_Outline/ where appropriate.
640
641 2014-11-25  Werner Lemberg  <wl@gnu.org>
642
643         */*: s/Invalid_Argument/Invalid_Face_Handle/ where appropriate.
644
645 2014-11-24  Werner Lemberg  <wl@gnu.org>
646
647         [Savannah bug #43682] Adjust some renderer callbacks.
648
649         * src/raster/ftraster.c (ft_black_set_mode): Change return type to
650         `int' to stay in sync with `FT_Renderer_SetModeFunc' prototype.
651
652         * src/smooth/ftgrays.c (gray_raster_set_mode): New dummy function
653         for orthogonality.
654         (ft_grays_raster): Use it.
655
656 2014-11-25  Werner Lemberg  <wl@gnu.org>
657
658         [Savannah bug #43682] Properly handle missing return errors.
659
660         The functions in this patch *do* return non-trivial errors that must
661         be taken care of.
662
663         * src/autofit/afloader.c (af_loader_load_g), src/base/ftobjs.c
664         (FT_Render_Glyph_Internal), src/base/ftoutln.c (FT_Outline_Render),
665         src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_endchar>,
666         src/psaux/psobjs.c (ps_parser_load_field_table), src/psaux/t1decode
667         (t1_decoder_parse_charstrings) <op_endchar>, src/truetype/ttgload.c
668         (load_truetype_glyph <subglyph loop>, tt_loader_init,
669         TT_Load_Glyph), src/truetype/ttgxvar.c (TT_Set_MM_Blend),
670         src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Do it.
671
672 2014-11-25  Werner Lemberg  <wl@gnu.org>
673
674         [Savannah bug #43682] Add/remove `void' casts to some functions.
675
676         We use a cast to indicate that we intentionally ignore a function's
677         return value.  However, this doesn't apply to API functions where
678         errors can only happen for trivially invalid input.
679
680         * src/base/ftstroke.c (FT_Glyph_Stroke, FT_Glyph_StrokeBorder),
681         src/base/ftsynth.c (FT_GlyphSlot_Embolden), src/cff/cffgload.c
682         (cff_slot_load), src/pfr/pfrdrivr.c (pfr_get_kerning),
683         src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
684         (t42_parse_encoding): Do it.
685
686 2014-11-25  Werner Lemberg  <wl@gnu.org>
687
688         [Savannah bug #43682] Change some signatures to `void' return type.
689
690         * include/internal/pshints.h (PSH_Globals_SetScaleFunc),
691         include/internal/sfnt.h (TT_Get_Metrics_Func),
692         src/pshinter/pshglob.c (psh_globals_set_scale),
693         src/pshinter/pshrec.c (ps_hints_init), src/sfnt/ttmtx.c
694         (tt_face_get_metrics), src/truetype/ttinterp.c (TT_Goto_CodeRange,
695         TT_Set_CodeRange, TT_Clear_CodeRange, TT_Done_Context,
696         TT_Save_Context): Do it.
697
698         * src/pshinter/pshglob.h, src/pshinter/pshrec.h, src/sfnt/ttmtx.h,
699         src/truetype/ttgload.c (TT_Hint_Glyph), src/truetype/ttinterp.c
700         (TT_Run_Context), src/truetype/ttinterp.h, src/truetype/ttobjs.c
701         (tt_size_run_fpgm, tt_size_run_prep): Updated.
702
703 2014-11-24  Werner Lemberg  <wl@gnu.org>
704
705         Remove all code related to FT_MAX_CHARMAP_CACHEABLE.
706
707         This is no longer used.
708
709         * src/base/ftobjs.c, src/cache/ftccmap.c, src/cff/cffobjs.c,
710         src/sfnt/ttcmap.c: Do it.
711
712 2014-11-24  Werner Lemberg  <wl@gnu.org>
713
714         [sfnt] Fix Savannah bug #43680.
715
716         This adds an additional constraint to make the fix from 2013-01-25
717         really work.
718
719         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_image) <index_format==4>:
720         Check `p' before `num_glyphs'.
721
722 2014-11-24  Werner Lemberg  <wl@gnu.org>
723
724         [truetype] Fix Savannah bug #43679.
725
726         * src/truetype/ttpload.c (tt_face_load_hdmx): Check minimum size of
727         `record_size'.
728
729 2014-11-24  Jarkko Pöyry  <jarkko.poyry@gmail.com>
730
731         [cff, pfr, psaux, winfonts] Fix Savannah bug #43676.
732
733         Don't cast cmap init function pointers to an incompatible type.
734
735         Without this patch, the number of parameters between declaration and
736         the real signature differs.  Calling such a function results in
737         undefined behavior.
738
739           ISO/IEC 9899:TC3 (Committee Draft September 7, 2007)
740             6.5.2.2 Function calls
741               9 If the function is defined with a type that is not
742                 compatible with the type (of the expression) pointed to by
743                 the expression that denotes the called function, the
744                 behavior is undefined.
745
746         On certain platforms (c -> js with emscripten) this causes
747         termination of execution or invalid calls because in the emscripten
748         implementation, function pointers of different types are stored in
749         different pointer arrays.  Incorrect pointer type here results in
750         indexing of an incorrect array.
751
752         * src/cff/cffcmap.c (cff_cmap_encoding_init, cff_cmap_unicode_init),
753         src/pfr/pfrcmap.c (pfr_cmap_init), src/psaux/t1cmap.c
754         t1_cmap_standard_init, t1_cmap_expert_init, t1_cmap_custom_init,
755         t1_cmap_unicode_init), src/winfonts/winfnt.c (fnt_cmap_init): Fix
756         signature.
757
758 2014-11-24  Werner Lemberg  <wl@gnu.org>
759
760         [sfnt] Fix Savannah bug #43672.
761
762         * src/sfnt/ttkern.c (tt_face_load_kern): Use correct value for
763         minimum table length test.
764
765 2014-11-24  Werner Lemberg  <wl@gnu.org>
766
767         [type1, type42] Another fix for Savannah bug #43655.
768
769         * src/type1/t1load.c (parse_charstrings), src/type42/t42parse.c
770         (t42_parse_charstrings): Add another boundary testing.
771
772 2014-11-24  Werner Lemberg  <wl@gnu.org>
773
774         [docmaker] Formatting, copyright, improved documentation.
775
776         * src/tools/docmaker/*: No code changes besides trivial
777         modifications.
778
779 2014-11-22  Werner Lemberg  <wl@gnu.org>
780
781         [bdf] Fix Savannah bug #43660.
782
783         * src/bdf/bdflib.c (_bdf_parse_glyphs) <"ENDFONT">: Check
784         `_BDF_GLYPH_BITS'.
785
786 2014-11-22  Werner Lemberg  <wl@gnu.org>
787
788         [type42] Allow only embedded TrueType fonts.
789
790         This is a follow-up to Savannah bug #43659.
791
792         * src/type42/t42objs.c (T42_Face_Init): Exclusively use the
793         `truetype' font driver for loading the font contained in the `sfnts'
794         array.
795
796 2014-11-22  Werner Lemberg  <wl@gnu.org>
797
798         [type42] Fix Savannah bug #43659.
799
800         * src/type42/t42objs.c (T42_Open_Face): Initialize `face->ttf_size'.
801
802         * src/type42/t42parse.c (t42_parse_sfnts): Always set
803         `face->ttf_size' directly.  This ensures a correct stream size in
804         the call to `FT_Open_Face', which follows after parsing, even for
805         buggy input data.
806         Fix error messages.
807
808 2014-11-22  Werner Lemberg  <wl@gnu.org>
809
810         [cff] Fix Savannah bug #43658.
811
812         * src/cff/cf2ft.c (cf2_builder_lineTo, cf2_builder_cubeTo): Handle
813         return values of point allocation routines.
814
815 2014-11-22  Werner Lemberg  <wl@gnu.org>
816
817         [sfnt] Fix Savannah bug #43656.
818
819         * src/sfnt/ttcmap.c (tt_cmap4_validate): Fix order of validity
820         tests.
821
822 2014-11-21  Werner Lemberg  <wl@gnu.org>
823
824         [type1, type42] Fix Savannah bug #43655.
825
826         * src/type1/t1load.c (parse_charstrings), src/type42/t42parse.c
827         (t42_parse_charstrings): Fix boundary testing.
828
829 2014-11-21  Werner Lemberg  <wl@gnu.org>
830
831         * src/pcf/pcfread.c (pcf_get_metrics): Sanitize invalid metrics.
832
833 2014-11-21  Werner Lemberg  <wl@gnu.org>
834
835         [ftlcdfil] Obey flow direction.
836
837         * src/base/ftlcdfil.c (_ft_lcd_filter_fir, _ft_lcd_filter_legacy):
838         Handle `up' flow.
839
840 2014-11-21  Werner Lemberg  <wl@gnu.org>
841
842         * src/base/ftbitmap.c (FT_Bitmap_Convert): Improve.
843
844         This commit completes argument checks and adds support for different
845         flow directions.
846
847 2014-11-21  Werner Lemberg  <wl@gnu.org>
848
849         * src/base/ftbitmap.c (FT_Bitmap_Copy): Improve.
850
851         This commit adds argument checks and support for different flow
852         directions.
853
854 2014-11-20  Werner Lemberg  <wl@gnu.org>
855
856         * src/base/ftbitmap.c (FT_Bitmap_New): Check argument.
857
858 2014-11-19  Werner Lemberg  <wl@gnu.org>
859
860         Change some fields in `FT_Bitmap' to unsigned type.
861
862         This doesn't break ABI.
863
864         * include/ftimage.h (FT_Bitmap): Make `rows', `width', `num_grays',
865         `pixel_mode', and `palette_mode' unsigned types.
866
867         * src/base/ftbitmap.c: Updated.
868         (FT_Bitmap_Copy): Fix casts.
869
870         * src/cache/ftcsbits.c, src/raster/ftraster.c, src/sfnt/pngshim.c:
871         Updated.
872
873 2014-11-19  Werner Lemberg  <wl@gnu.org>
874
875         Make `FT_Bitmap_Convert' correctly handle negative `pitch' values.
876
877         * src/base/ftbitmap.c (FT_Bitmap_Convert): Always use positive value
878         for the pitch while copying data.
879         Correctly set pitch sign in target bitmap.
880
881 2014-11-19  Werner Lemberg  <wl@gnu.org>
882
883         Minor code improvement in `FT_Bitmap_Embolden'.
884
885         * src/base/ftbitmap.c (FT_Bitmap_Embolden) <FT_PIXEL_MODE_GRAY[24]>:
886         Fix thinko.
887
888 2014-11-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
889
890         * src/base/fttrigon.c: Use dedicated `FT_Angle' for arctan table.
891
892 2014-11-19  Behdad Esfahbod  <behdad@behdad.org>
893
894         Avoid compiler warnings on x86-64 for `FT_MulFix'.
895
896         `FT_MulFix' takes `FT_Long' parameters as defined in `freetype.h',
897         but several inline implementations of it in `ftcalc.h' take
898         `FT_Int32' arguments.  This is causing compiler warnings on x86-64:
899         If parameters of type `FT_Fixed' (= `FT_Long') are passed to the
900         inline implementation of this function, integer values are truncated
901         from 64bit to 32bit.
902
903         * include/internal/ftcalc.h (FT_MulFix) [FT_MULFIX_ASSEMBLER]: Add
904         casts.
905
906 2014-11-15  Werner Lemberg  <wl@gnu.org>
907
908         [sfnt] Fix Savannah bug #43597.
909
910         * src/sfnt/pngshim.c (Load_SBit_Png): Protect against too large
911         bitmaps.
912
913 2014-11-12  Werner Lemberg  <wl@gnu.org>
914
915         [sfnt] Fix Savannah bug #43591.
916
917         * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Protect against addition
918         and multiplication overflow.
919
920 2014-11-12  Werner Lemberg  <wl@gnu.org>
921
922         [sfnt] Fix Savannah bug #43590.
923
924         * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir):
925         Protect against addition overflow.
926
927 2014-11-12  Werner Lemberg  <wl@gnu.org>
928
929         [sfnt] Fix Savannah bug #43589.
930
931         * src/sfnt/sfobjs.c (woff_open_font): Protect against addition
932         overflow.
933
934 2014-11-12  Werner Lemberg  <wl@gnu.org>
935
936         [sfnt] Fix Savannah bug #43588.
937
938         * src/sfnt/ttcmap.c (tt_cmap8_validate, tt_cmap10_validate,
939         tt_cmap12_validate, tt_cmap13_validate, tt_cmap14_validate): Protect
940         against overflow in additions and multiplications.
941
942 2014-11-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
943
944         [base] CORDIC improvements.
945
946         The scaling between the hypotenuse and its CORDIC approximation is
947         based on regression analysis. The smaller padding for `theta' is
948         justified by its maximum error of less than 6.
949
950         * src/base/fttrigon.c (ft_trig_downscale): Borrow code from
951         ./ftcalc.c (ft_multo64), change linear intercept.
952         (ft_trig_pseudo_polarize): Decrease `theta' padding.
953
954 2014-11-09  Werner Lemberg  <wl@gnu.org>
955
956         * src/base/ftstroke.c (ft_stroker_inside): Fix border intersections.
957
958         One more place to check whether `radius' is zero.
959
960         Problem reported by Marco Wertz <marco.wertz@gmx.de>.
961
962 2014-11-07  Werner Lemberg  <wl@gnu.org>
963
964         [bdf] Fix Savannah bug #43535.
965
966         * src/bdf/bdflib.c (_bdf_strncmp): New macro that checks one
967         character more than `strncmp'.
968         s/ft_strncmp/_bdf_strncmp/ everywhere.
969
970 2014-11-06  Werner Lemberg  <wl@gnu.org>
971
972         [pcf] Fix Savannah bug #43548.
973
974         * src/pcf/pcfread.c (pcf_get_encodings): Add sanity checks for row
975         and column values.
976
977 2014-11-06  Werner Lemberg  <wl@gnu.org>
978
979         [pcf] Fix Savannah bug #43547.
980
981         * src/pcf/pcfread.c (pcf_read_TOC): Check `size' and `offset'
982         values.
983
984 2014-11-06  Werner Lemberg  <wl@gnu.org>
985
986         * src/pcf/pcfread.c (pcf_read_TOC): Avoid memory leak.
987
988 2014-11-03  Infinality  <infinality@infinality.net>
989
990         * src/truetype/ttsubpix.c (COMPATIBILITY_MODE_Rules): Updated.
991
992         The previous commit deteriorates rendering of DejaVu and similar
993         fonts; this gets compensated with this rule.
994
995 2014-11-03  Werner Lemberg  <wl@gnu.org>
996
997         * src/truetype/ttinterp.c (Ins_DELTAP): Fix subpixel hinting.
998
999         Before this patch, it was impossible to ever call DELTAP[123] in
1000         subpixel hinting mode as described in the ClearType whitepaper; it
1001         only worked if in `compatibility mode'.  However, compatibility mode
1002         essentially disables SHPIX, completely ruining hinting of
1003         ttfautohint output, for example.
1004
1005         We now follow the whitepaper more closely so that DELTAP[123]
1006         instructions for touched points in the non-subpixel direction are
1007         executed.
1008
1009 2014-10-31  Alexei Podtelezhnikov  <apodtele@gmail.com>
1010
1011         [smooth] Improve code readability.
1012
1013         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Rearrange code.
1014
1015 2014-10-31  Alexei Podtelezhnikov  <apodtele@gmail.com>
1016
1017         [smooth] Reduce outline translations during rendering.
1018
1019         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Translate origin
1020         virtually by modifying cbox, actually translate outline if cumulative
1021         shift is not zero.
1022
1023 2014-10-30  Alexei Podtelezhnikov  <apodtele@gmail.com>
1024
1025         [smooth] Fix Savannah bug #35604 (cont'd).
1026
1027         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove checks and
1028         casts that became unnecessary after the variable type upgrades.
1029
1030 2014-10-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
1031
1032         [smooth] Improve code readability.
1033
1034         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Rearrange code.
1035
1036 2014-10-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
1037
1038         Unify hypotenuse approximations.
1039
1040         * include/internal/ftcalc.h (FT_HYPOT): Move macro from here...
1041         * include/internal/ftobjs.h: ... to here, next to required `FT_ABS'.
1042         * src/smooth/ftgrays.c (gray_render_cubic): Use it here.
1043
1044 2014-10-25  Werner Lemberg  <wl@gnu.org>
1045
1046         [cff] Test valid darkening parameter macros in `ftoption.h'.
1047
1048         We no longer need an otherwise unused typedef that can cause a gcc
1049         warning.
1050         Problem reported by Alexei.
1051
1052         * src/cff/cffobjs.c (cff_driver_init): Use
1053         `CFF_CONFIG_OPTION_DARKENING_PARAMETER_XXX' macros directly.
1054         (SET_DARKENING_PARAMETERS): Removed.
1055         Compile time tests are now ...
1056
1057         * devel/ftoption.h, include/config/ftoption.h: ... here.
1058
1059 2014-10-25  Alexei Podtelezhnikov  <apodtele@gmail.com>
1060
1061         Improve flat corner definition.
1062
1063         * include/internal/ftcalc.h (FT_HYPOT): Macro to approximate Euclidean
1064         distance with the alpha max plus beta min algorithm.
1065         * src/base/ftcalc.c (ft_corner_is_flat): Use it instead of Taxicab
1066         metric.
1067
1068 2014-10-23  David Weiß  <David.Weiss@ptvgroup.com>
1069
1070         [build] Improve property file for vc2010.
1071
1072         User-defined properties should be empty by default to prevent linker
1073         failures.
1074
1075         * builds/windows/vc2010/freetype.user.props,
1076         builds/windows/vc2010/freetype.vcxproj:
1077         s/OptionsDirectory/UserOptionDirectory/.
1078         Comment out all user options.
1079
1080 2014-10-23  Werner Lemberg  <wl@gnu.org>
1081
1082         [cff] Work around bug in preprocessor of MSVC 2010.
1083
1084         We have been hit by
1085
1086           https://connect.microsoft.com/VisualStudio/feedback/details/718976/msvc-pr
1087
1088         * devel/ftoption.h, include/config/ftoption.h: Replace
1089         `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' with eight macros
1090         `CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}'.
1091
1092         * src/cff/cffobjs.c (SET_DARKENING_PARAMETERS): Removed.  We no
1093         longer need double expansion.
1094         (SET_DARKENING_PARAMETERS_0): Renamed to ...
1095         (SET_DARKENING_PARAMETERS): ... this.
1096         Update call.
1097
1098 2014-10-20  Werner Lemberg  <wl@gnu.org>
1099
1100         [sbit] Minor fixes.
1101
1102         * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
1103         Accept overlay format also, but emit warning message in that case.
1104         (tt_sbit_decoder_load_metrics): Add missing newline to error
1105         message.
1106         (tt_sbit_load_sbix_image): Add `rgbl' graphic type (as used on iOS
1107         7.1) to the list of unsupported formats.
1108
1109 2014-10-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
1110
1111         [truetype] Clean up bytecode rounding.
1112
1113         Zero distance does not have to be treated specially if you follow
1114         specifications and check the sign as the very last step of rounding.
1115
1116         * src/truetype/ttinterp.c (Round_None, Round_To_Grid,
1117         Round_Down_To_Grid, Round_Up_To_Grid, Round_To_Double_Grid): Use
1118         macros when available, do not check for non-zero distance.
1119         (Round_To_Half_Grid, Round_Super, Round_Super_45): Ditto, return phase
1120         if sign changed.
1121
1122 2014-10-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
1123
1124         [truetype] Unwrap engine compensation settings.
1125
1126         * src/truetype/ttobjs.c (tt_size_init_bytecode): Updated.
1127
1128 2014-10-18  David Weiß  <David.Weiss@ptvgroup.com>
1129
1130         [build] Add property file to vc2010 project.
1131
1132         This simplifies custom build configurations, especially for
1133         automated build environments.
1134
1135         * builds/windows/vc2010/freetype.user.props: New configuration file.
1136
1137         * builds/windows/vc2010/freetype.vcxproj: Include
1138         `freetype.user.props' and use its data fields.
1139
1140         * builds/windows/vc2010/index.html: Updated.
1141
1142 2014-10-18  Werner Lemberg  <wl@gnu.org>
1143
1144         [autofit] Add blue-zone support for Telugu.
1145
1146         This essentially moves the Telugu script from the `Indic' hinter to
1147         the `Latin' hinter.
1148
1149         Note that this is a first shot and quite certainly needs
1150         refinements.
1151
1152         * src/autofit/afblue.dat: Add blue zone data for Telugu.
1153
1154         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1155
1156         * src/autofit/afscript.h: Add Telugu standard characters and move
1157         data out of AF_CONFIG_OPTION_INDIC block.
1158
1159         * src/autofit/afranges.c: Move Telugu data out of
1160         AF_CONFIG_OPTION_INDIC block.
1161
1162         * src/autofit/afstyles.h: Update Telugu data; in particular, use
1163         AF_WRITING_SYSTEM_LATIN.
1164
1165 2014-10-18  David Wimsey  <david@wimsey.us>
1166
1167         [cmake] Add iOS build support.
1168         From Savannah patch #8497.
1169
1170         * builds/cmake/iOS.cmake: New file.  Universal binaries are built
1171         with both 32 and 64 bit arm architectures.
1172
1173         * CMakeLists.txt (IOS_PLATFORM): New variable for running the iOS
1174         toolchain.  Possible values are `OS' to build on iOS, or
1175         `SIMULATOR' to build on APPLE.
1176
1177 2014-10-16  Behdad Esfahbod  <behdad@behdad.org>
1178             Werner Lemberg  <wl@gnu.org>
1179
1180         [cff] Add `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' config macro.
1181
1182         * devel/ftoption.h, include/config/ftoption.h
1183         (CFF_CONFIG_OPTION_DARKENING_PARAMETERS): New macro.
1184
1185         * src/cff/cffobjs.c (SET_DARKENING_PARAMETERS,
1186         SET_DARKENING_PARAMETERS_0): New macros.
1187         (cff_driver_init): Use new macros.
1188
1189 2014-10-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1190
1191         [truetype] Limit delta shift range.
1192
1193         The valid range for delta shift is zero through six.  Negative values
1194         are invalid according to
1195
1196           https://developer.apple.com/fonts/TrueType-Reference-Manual/RM04/Chap4.html#delta%20shift
1197
1198         * src/truetype/ttobjs.h (delta_shift, delta_base): Make unsigned.
1199         * src/truetype/ttinterp.h (DO_SDS): Throw an error if `delta_shift'
1200         is out of range.
1201         (Ins_DELTAP, Ins_DELTAC): Optimize for valid `delta_shift'.
1202
1203 2014-10-16  Werner Lemberg  <wl@gnu.org>
1204
1205         A better fix for Savannah bug #43392.
1206         Suggested by Doug Felt <dougfelt@gmail.com>.
1207
1208         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics): Set
1209         `vertAdvance' to zero...
1210
1211         * src/truetype/ttgload.c (TT_Load_Glyph): ... and set here a default
1212         value for `vertAdvance' based on `linearVertAdvance' in case
1213         `vertAdvance' is zero.  Note that the previous computed ad-hoc value
1214         for `linearVertAdvance' was apparently not tested in a real-life
1215         situation.
1216
1217 2014-10-14  David Weiß  <David.Weiss@ptvgroup.com>
1218
1219         [build] Better optimization settings for vc2010 solution file.
1220
1221         * builds/windows/vc2010/freetype.sln,
1222         builds/windows/vc2010/freetype.vcxproj: Updated.
1223
1224 2014-10-14  Werner Lemberg  <wl@gnu.org>
1225
1226         [autofit] Adjust Devanagari character range.
1227
1228         * src/autofit/afranges.c (af_deva_uniranges): Omit characters that
1229         are common to all other Indic scripts.
1230
1231 2014-10-12  Werner Lemberg  <wl@gnu.org>
1232
1233         [sfnt] Fix Savannah bug #43392.
1234
1235         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics): Don't let
1236         vertical metrics uninitialized.
1237
1238 2014-10-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1239
1240         [base] Small bbox correction.
1241
1242         * src/base/ftbbox.c (FT_Outline_Get_BBox): Start from nonsense bbox
1243         instead of initial point that could be `off' in conic outlines.
1244
1245 2014-10-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
1246
1247         [base] Fix Savannah bug #43356.
1248
1249         * src/base/ftbbox.c (BBox_Move_To, BBox_Conic_To): Update bbox in case
1250         of implicit `to'.
1251         (BBox_Line_To): New emitter that does not update bbox.
1252
1253 2014-10-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
1254
1255         [base] Introduce and use new macro `FT_UPDATE_BBOX'
1256
1257         * src/base/ftbbox.c (FT_UPDATE_BBOX): New macro.
1258         (FT_Outline_Get_BBox): Use it here.
1259
1260 2014-10-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
1261
1262         [base] Significant optimization of `ft_div64by32'
1263
1264         We shift as many bits as we can into the high register, perform
1265         32-bit division with modulo there, then work through the remaining
1266         bits with long division. This optimization is especially noticeable
1267         for smaller dividends that barely use the high register.
1268
1269         * src/base/ftcalc.c (ft_div64by32): Updated.
1270
1271 2014-10-02  Dave Arnold  <darnold@adobe.com>
1272
1273         [cff] Fix Savannah bug #43271.
1274
1275         * src/cff/cf2font.c (cf2_computeDarkening): Change overflow
1276         detection to use logarithms and clamp `scaledStem'.
1277
1278 2014-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
1279
1280         * src/base/ftcalc.c: Remove miscellaneous type casts.
1281
1282 2014-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
1283
1284         [base] Use more common `FT_MSB' implementation with masks.
1285
1286         * src/base/ftcalc.c (FT_MSB): Updated.
1287
1288 2014-09-30  Alexei Podtelezhnikov  <apodtele@gmail.com>
1289
1290         [base] Clean up.
1291
1292         * src/base/ftcalc.c (FT_MOVE_SIGN): New macro for frequently used
1293         code.
1294
1295 2014-09-25  Alexei Podtelezhnikov  <apodtele@gmail.com>
1296
1297         [base] Avoid unnecessary long division.
1298
1299         This applies to `FT_MulDiv' but not to `FT_DivFix', where overflows or
1300         lack thereof are predicted accurately.
1301
1302         * src/base/ftcalc.c (ft_div64by32): Improve readability.
1303         (FT_MulDiv, FT_MulDiv_No_Round) [!FT_LONG64]: Use straight division
1304         when multiplication stayed within 32 bits.
1305
1306 2014-09-24  Werner Lemberg  <wl@gnu.org>
1307
1308         [autofit] Minor clean-ups.
1309
1310         * src/autofit/afhints.c (AF_FLAGS): Remove obsolete values.
1311
1312         * src/autofit/afhints.c (af_glyph_hints_dump_points,
1313         af_glyph_hints_align_strong_points): Updated.
1314
1315         * src/autofit/aflatin.c (af_latin_hints_link_segments,
1316         af_latin_hints_compute_segments), src/autofit/afcjk.c
1317         (af_cjk_hints_link_segments), src/autofit/aflatin2.c
1318         (af_latin2_hints_link_segments, af_latin2_hints_compute_segments):
1319         There are no longer fake segments since more than 10 years...
1320
1321 2014-09-22  Werner Lemberg  <wl@gnu.org>
1322
1323         [autofit] Minor code streamlining.
1324
1325         * src/autofit/afhints.c (af_axis_hints_new_edge): Remove redundant
1326         initialization.
1327
1328 2014-09-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
1329
1330         * src/base/ftcalc.c: Harmonize code.
1331
1332 2014-09-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1333
1334         [base] Tighten the overflow check in `FT_MulDiv'.
1335
1336         * src/base/ftcalc.c (FT_MulDiv) [!FT_LONG64]: Updated.
1337
1338 2014-09-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
1339
1340         Fix Savannah bug #43153.
1341
1342         * src/psaux/psconv.c (PS_Conv_ToFixed): Add protection against
1343         overflow in `divider'.
1344
1345 2014-09-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
1346
1347         [base] Tighten the overflow check in `FT_DivFix'.
1348
1349         This fixes a 13-year old bug. The original overflow check should have
1350         been updated when rounding was introduced into this function
1351         (c2cd00443b).
1352
1353         * src/base/ftcalc.c (FT_DivFix) [!FT_LONG64]: Updated.
1354         * include/freetype.h (FT_DivFix): Updated documentation.
1355
1356 2014-09-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
1357
1358         [base] Tighten the overflow check in `FT_MulFix'.
1359
1360         * src/base/ftcalc.c (FT_MulFix) [!FT_LONG64]: Updated.
1361
1362 2014-09-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
1363
1364         [truetype] Shortcut ppem calculations for square pixels.
1365
1366         * src/truetype/ttinterp.h (TT_ExecContextRec): New field
1367         `cur_ppem_func' with a function pointer.
1368         * src/truetype/ttinterp.c (TT_RunIns): Initialize `cur_ppem_func'
1369         depending on the pixel geometry to either...
1370         (Current_Ppem_Stretched): ... this for stretched pixels.
1371         (Current_Ppem): ... or this for square pixels.
1372         (DO_MPPEM, DO_MPS, Ins_DELTAP, Ins_DELTAC): Use `cur_ppem_func'.
1373
1374 2014-08-31  Behdad Esfahbod  <behdad@behdad.org>
1375
1376         Don't use `register' keyword.  Fixes compiler warnings.
1377
1378         * src/base/ftcalc.c (FT_Add64) [!FT_LONG64]: Do it.
1379         * src/gzip/inftrees.c (huft_build): Ditto.
1380         * src/truetype/ttinterp.c (TT_MulFix14_arm): Ditto.
1381
1382 2014-08-24  Alexei Podtelezhnikov  <apodtele@gmail.com>
1383
1384         [truetype] Optimize DELTAP and DELTAC.
1385
1386         * src/truetype/ttinterp.c (Ins_DELTAP, Ins_DELTAC): Move ppem
1387         calculations outside of the loop.
1388
1389 2014-08-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
1390
1391         Fix Savannah bug #43033.
1392
1393         * include/config/ftconfig.h, builds/unix/ftconfig.in,
1394         builds/vms/ftconfig.h [FT_LONG64]: Do not disable the macro when
1395         64-bit type is `long'.
1396
1397 2014-08-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
1398
1399         [base] Small optimization of `FT_MulFix'.
1400
1401         * src/base/ftcalc.c (FT_MulFix): Loosen up the condition for direct
1402         32-bit calculations.
1403
1404 2014-08-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
1405
1406         [base] Use unsigned calculation in `FT_MulDiv'.
1407
1408         * src/base/ftcalc.c (FT_MulDiv): Updated to expand 32-bit range.
1409
1410 2014-08-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
1411
1412         [base] Remove truncation in `FT_DivFix'.
1413
1414         * src/base/ftcalc.c (FT_DivFix): Updated.
1415
1416 2014-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1417
1418         Minor refactoring.
1419
1420         * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round): Updated.
1421
1422 2014-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1423
1424         Turn FT_MSB into a macro when using gcc builtins.
1425
1426         * src/base/ftcalc.c, include/internal/ftcalc.h: Updated.
1427
1428 2014-08-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
1429
1430         [base] Avoid undefined FT_MSB in `BBox_Cubic_Check'.
1431
1432         * src/base/ftbbox.c (BBox_Cubic_Check): Update.
1433         (update_cubic_max): Replace with...
1434         (cubic_peak): ... this, which now handles upscaling.
1435
1436 2014-08-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1437
1438         [base] Handle collapsed outlines to avoid undefined FT_MSB.
1439
1440         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Update.
1441
1442 2014-08-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1443
1444         [base] Restore FT_MulFix inlining.
1445
1446         * include/freetype.h (FT_MulFix): Unconditionally defined.
1447
1448         * src/base/ftcalc.c [FT_MULFIX_ASSEMBLER]: Move code from here...
1449
1450         * include/internal/ftcalc.h [FT_MULFIX_ASSEMBLER]: ... to here,
1451         which conditionally replaces the function with an inline version
1452         through the macro.
1453
1454 2014-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
1455
1456         * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Refactor.
1457
1458 2014-07-26  Werner Lemberg  <wl@gnu.org>
1459
1460         [cff] Fix typo.
1461
1462         * src/cff/cf2hints.c (cf2_glyphpath_computeOffset): Use correct
1463         offsets in third quadrant.
1464
1465         Reported by maks <maksqwe1@ukr.net>.
1466
1467 2014-07-17  Werner Lemberg  <wl@gnu.org>
1468
1469         Fix Savannah bug #42788.
1470
1471         * src/pfr/pfrobjs.c: Include `ftcalc.h'.
1472
1473 2014-07-16  Alexei Podtelezhnikov  <apodtele@gmail.com>
1474
1475         Replace `ft_highpow2' function.
1476
1477         * src/pfr/pfrobjs.c (pfr_face_get_kerning): Use `FT_MSB' instead of
1478         `ft_highpow2'.
1479
1480         * src/base/ftutil.c, include/internal/ftobjs.h (ft_highpow2): Remove
1481         it.
1482
1483 2014-07-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1484
1485         * src/base/ftcalc.c (FT_MSB): Utilize gcc builtins.
1486
1487 2014-07-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1488
1489         [base] Move assembler code back in the source file.
1490
1491         FT_MulFix assembler used to reside in ftcalc.c before f47d263f1b.
1492
1493         * include/config/ftconfig.h, builds/unix/ftconfig.in,
1494         builds/vms/ftconfig.h [FT_MULFIX_ASSEMBLER]: Move code from here...
1495
1496         * src/base/ftcalc.c [FT_MULFIX_ASSEMBLER]: ... to here.
1497
1498 2014-07-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1499
1500         [base] Further clean up color bitmap conversion.
1501
1502         * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Stop
1503         using FT_MulFix and FT_DivFix since all calculations fit into 32 bits.
1504
1505 2014-07-13  Werner Lemberg  <wl@gnu.org>
1506
1507         [truetype] Improve handling of buggy `prep' tables.
1508
1509         In case of an error in the `prep' table, no longer try to execute it
1510         again and again.  This makes FreeType handle endless loops in buggy
1511         fonts much faster.
1512
1513         * src/truetype/ttobjs.h (TT_SizeRec): The fields `bytecode_ready'
1514         and `cvt_ready' are now negative if not initialized yet, otherwise
1515         they indicate the error code of the last run.
1516
1517         * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep,
1518         tt_size_done_bytecode, tt_size_init_bytecode,
1519         tt_size_ready_bytecode, tt_size_init, tt_size_done, tt_size_reset):
1520         Updated.
1521
1522         * src/truetype/ttgload.c (tt_loader_init): Updated.
1523         * src/truetype/ttinterp.c (TT_RunIns): Force reexecution of `fpgm'
1524         and `prep' only if we are in the `glyf' table.
1525
1526 2014-07-12  Werner Lemberg  <wl@gnu.org>
1527
1528         * builds/vms/ftconfig.h: Synchronize.
1529         Problem reported by Alexei.
1530
1531 2014-07-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1532
1533         [base] Clean up bitmap conversion.
1534
1535         * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
1536         appropriate FT_DivFix and remove superfluous upscaling.
1537
1538 2014-07-04  Alexei Podtelezhnikov  <apodtele@gmail.com>
1539
1540         [base] Small optimization of the ancient code.
1541
1542         * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round): Loosen up the
1543         condition for direct 32-bit calculations.
1544
1545 2014-06-27  Werner Lemberg  <wl@gnu.org>
1546
1547         Fix Apple standard glyph names.
1548
1549         * src/sfnt/ttpost.c (tt_post_default_names): Synchronize with
1550         `tools/glnames.py'
1551
1552         Problem reported by Adam Twardoch <adam@fontlab.com>.
1553
1554 2014-06-17  Werner Lemberg  <wl@gnu.org>
1555
1556         Partially revert commit from 2014-06-13.
1557
1558         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Move
1559         declaration of `p_first' and `p_last' out of the loop.
1560
1561 2014-06-17  Werner Lemberg  <wl@gnu.org>
1562
1563         * builds/unix/freetype2.m4: s/AC_PATH_PROG/AC_PATH_TOOL/.
1564
1565         This simplifies cross-compiling.
1566
1567 2014-06-13  Werner Lemberg  <wl@gnu.org>
1568
1569         Fix more compiler warnings.
1570         Reported by Wojciech Mamrak <wmamrak@gmail.com>.
1571
1572         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
1573         Make integer constant unsigned.
1574
1575         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
1576         <TT_SBIT_TABLE_TYPE_SBIX>: Fix types.
1577         (tt_sbit_decoder_load_compound, tt_face_load_sbix_image): Add proper
1578         casts.
1579
1580 2014-06-13  Werner Lemberg  <wl@gnu.org>
1581
1582         Fix compiler warnings.
1583         Reported by Wojciech Mamrak <wmamrak@gmail.com>.
1584
1585         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage),
1586         src/autofit/afmodule.c (af_property_set): Fix `signed' vs.
1587         `unsigned' issues.
1588
1589         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Make compiler
1590         happy.
1591
1592         * src/base/ftlcdfil.c (_ft_lcd_filter_fir): Use only four elements
1593         for `fir'.
1594         Fix `signed' vs. `unsigned' issues.
1595
1596         * src/sfnt/sfobjs.c (WRITE_BYTE): Removed, unused.
1597         (WRITE_USHORT, WRITE_ULONG): Add proper casts.
1598
1599         * src/truetype/ttgload.c (TT_Get_VMetrics): Add proper casts.
1600
1601         * src/truetype/ttinterp.c (Ins_DELTAP): Add proper casts for `B1'
1602         and `B2'.
1603
1604 2014-05-16  Alexey Petruchik  <alexey.petruchik@gmail.com>
1605
1606         [cmake] Add option to build OS X framework.
1607
1608         * CMakeLists.txt: Update accordingly.
1609
1610         * builds/mac/freetype-Info.plist: New file.
1611
1612 2014-05-13  Pavel Koshevoy  <pkoshevoy@gmail.com>
1613
1614         * CMakeLists.txt (BASE_SRCS): Add missing `ftbdf.c'.
1615
1616 2014-05-11  Werner Lemberg  <wl@gnu.org>
1617
1618         [autofit] Fix variable initializations.
1619
1620         * src/autofit/afhints.c (af_glyph_hints_reload): Assign default
1621         values to `in_dir' and `out_dir' for all points.
1622
1623 2014-05-11  Werner Lemberg  <wl@gnu.org>
1624
1625         [autofit] Fix crash with font `CabinSketch-Bold.ttf'.
1626
1627         Problem reported by Ralf S. Engelschall <rse@engelschall.com>.
1628
1629         * src/autofit/afhints.c (af_glyph_hints_reload): Fix threshold for
1630         finding first non-near point.
1631         Properly initialize non-near point deltas.
1632
1633 2014-05-01  Werner Lemberg  <wl@gnu.org>
1634
1635         [autofit] Add blue-zone support for Devanagari.
1636
1637         This essentially moves the Devanagari script from the `Indic' hinter
1638         to the `Latin' hinter.  Thanks to Girish Dalvi
1639         <girish.dalvi@gmail.com> for guidance with blue zone characters!
1640
1641         * src/autofit/afblue.dat: Add blue zone data for Devanagari.
1642
1643         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1644
1645         * src/autofit/afscript.h: Add Devanagari standard characters and
1646         move data out of AF_CONFIG_OPTION_INDIC block.
1647
1648         * src/autofit/afranges.c: Move Devanagari data out of
1649         AF_CONFIG_OPTION_INDIC block.
1650         Move U+20B9, (new) Rupee sign, from Latin to Devanagari.
1651
1652         * src/autofit/afstyles.h: Update Devanagari data; in particular, use
1653         AF_WRITING_SYSTEM_LATIN.
1654
1655 2014-05-01  Werner Lemberg  <wl@gnu.org>
1656
1657         [autofit] Fix handling of neutral blue zones in stems.
1658
1659         * src/autofit/afhints.h (AF_Edge_Flags): New value
1660         `AF_EDGE_NEUTRAL'.
1661
1662         * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Trace
1663         neutral blue zones with AF_EDGE_NEUTRAL.
1664         (af_latin_hint_edges): Skip neutral blue zones if necessary.
1665
1666 2014-04-28  Werner Lemberg  <wl@gnu.org>
1667
1668         [autofit] Introduce neutral blue zones to the latin module.
1669
1670         Such blue zones match either the top or the bottom of a contour.  We
1671         need them for scripts where accent-like elements directly touch the
1672         base character (for example, some vowel signs in Devanagari, cf.
1673         U+0913 or U+0914).
1674
1675         * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_NEUTRAL): New
1676         property.
1677
1678         * src/autofit/afblue.h: Regenerated.
1679
1680         * src/autofit/aflatin.h (AF_LATIN_IS_NEUTRAL_BLUE): New macro.
1681         (AF_LATIN_BLUE_NEUTRAL): New enumeration value.
1682
1683         * src/autofit/aflatin.c (af_latin_metrics_init_blues,
1684         af_latin_hints_compute_blue_edges): Handle neutral blue zones.
1685
1686 2014-04-25  Werner Lemberg  <wl@gnu.org>
1687
1688         * src/autofit/hbshim.c: Partially revert commit from 2014-04-17.
1689
1690         Using input glyph coverage data is simply wrong.
1691
1692         Problem reported by Nikolaus Waxweiler <madigens@gmail.com> and
1693         Mantas MikulÄ—nas <grawity@gmail.com>.
1694
1695 2014-04-23  Werner Lemberg  <wl@gnu.org>
1696
1697         * src/raster/ftraster.c (Vertical_Sweep_Span): Use drop-out mode.
1698
1699         This spot has been missed while introducing support for various
1700         drop-out modes years ago (including no drop-out mode, which this
1701         commit fixes).
1702
1703         Problem reported by Patrick Thomas <pthomas505@gmail.com>.
1704
1705 2014-04-22  Werner Lemberg  <wl@gnu.org>
1706
1707         * src/sfnt/pngshim.c (error_callback): s/longjmp/ft_longjmp/.
1708
1709 2014-04-20  Werner Lemberg  <wl@gnu.org>
1710
1711         [autofit] Fix Savannah bug #42148.
1712
1713         The adaptation of the cjk auto-hinter module to blue stringsets in
1714         2013-08-25 had three severe bugs.  Mea culpa.
1715
1716         1. Contrary to the latin auto-hinter, characters for reference and
1717            overshoot values of a blue zone are specified separately.  Due to
1718            the screwed-up change it didn't work at all.
1719
1720         2. A boolean comparison was erroneously replaced with a cast,
1721            causing invalid results with the `^' operator later on.  The
1722            visual artifact caused by this problem is the topic of the bug
1723            report.
1724
1725         3. Two flag values were inverted, causing incorrect assignment of
1726            reference and overshoot values.
1727
1728         * src/autofit/afblue.dat: Fix CJK bluestrings, introducing a new
1729         syntax to have both reference and overshoot characters in a single
1730         string.  This is error #1.
1731         Add extensive comments.
1732
1733         * src/autofit/afblue.hin (AF_BLUE_PROPERTY_CJK_FILL): Removed, no
1734         longer used.
1735         (AF_BLUE_PROPERTY_CJK_TOP, AF_BLUE_PROPERTY_CJK_HORIZ): Fix values.
1736         This is error #3.
1737
1738         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1739
1740         * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Correct error #1.
1741         Use character `|' to separate characters for reference and overshoot
1742         values.
1743         Improve tracing messages, synchronizing them with the latin
1744         auto-hinter.
1745         (af_cjk_hints_compute_blue_edges): Fix value of `is_top_right_blue'.
1746         This is error #2.
1747         (af_cjk_align_linked_edge): Add tracing message.
1748
1749         * src/autofit/afcjk.h (AF_CJK_IS_FILLED_BLUE): Removed, no longer
1750         used.
1751
1752 2014-04-17  Werner Lemberg  <wl@gnu.org>
1753
1754         [autofit] More coverage fixes for complex scripts.
1755
1756         * src/autofit/hbshim.c (af_get_coverage): Merge input glyph coverage
1757         of GSUB lookups into output coverage.  Otherwise, ligatures are not
1758         handled properly.
1759         Don't check blue zone characters for default coverage.
1760
1761 2014-04-17  Werner Lemberg  <wl@gnu.org>
1762
1763         Make `FT_Get_SubGlyph_Info' actually work.
1764
1765         * src/base/ftobjs.c (FT_Get_SubGlyph_Info): Return FT_Err_Ok
1766         if there is no error.
1767
1768 2014-04-15  Werner Lemberg  <wl@gnu.org>
1769
1770         [afblue.pl]: Minor improvements.
1771
1772         * src/tools/afblue.pl: Allow whitespace before comments.
1773         Ignore whitespace in strings.
1774
1775 2014-04-14  Werner Lemberg  <wl@gnu.org>
1776
1777         [autofit] Improve coverage handling.
1778
1779         * src/autofit/hbshim.c (af_get_coverage): Don't exclude glyphs
1780         appearing in the GPOS table if we are processing the default
1781         coverage.
1782
1783 2014-04-13  David Weber  <weber.aulendorf@googlemail.com>
1784
1785         [smooth] Fix stand-alone compilation.
1786
1787         * src/smooth/ftgrays.c (FT_BEGIN_STMNT, FT_END_STMNT): Define.
1788
1789 2014-04-12  Werner Lemberg  <wl@gnu.org>
1790
1791         [autofit] Redesign the recognition algorithm of strong points.
1792
1793         In particular, local extrema without horizontal or vertical segments
1794         are better recognized:
1795
1796           + A                + D
1797            \                /
1798             \              /
1799              \            /
1800               \          /
1801                \        + C
1802                 \    /
1803                B +/
1804
1805         If the distances AB and CD are large, point B wasn't previously
1806         detected as an extremum since the `ft_corner_is_flat' function
1807         `swallowed' BC regardless of its direction, tagging point B as weak.
1808         The next iteration started at B and made `ft_corner_is_flat' swallow
1809         point C, tagging it as weak also, et voilà.
1810
1811         To improve that, another pass gets now performed before calling
1812         `ft_corner_is_flat' to improve the `topology' of an outline: A
1813         sequence of non-horizontal or non-vertical vectors that point into
1814         the same quadrant are handled as a single, large vector.
1815
1816         Additionally, distances of near points are now accumulated, which
1817         makes the auto-hinter handle them as if they were prepended to the
1818         next non-near vector.
1819
1820         This generally improves the auto-hinter's rendering results.
1821
1822         * src/autofit/afhints.c (af_glyph_hints_reload): Implement it.
1823
1824         * src/autofit/afhints.h (AF_FLAGS): Remove no longer used flag
1825         `AF_FLAG_NEAR'.
1826
1827 2014-04-05  Werner Lemberg  <wl@gnu.org>
1828
1829         [autofit] Improve scoring algorithm for identifying stems.
1830
1831         Problem reported by Karsten Lücke <karsten.luecke@kltf.de>.
1832
1833         The new algorithm takes care of the width of stems: If the distance
1834         between two segments is larger than the largest stem width, the
1835         demerits quickly increase for larger distances.  This improves
1836         hinting of slanted fonts (especially if the inner parts of serifs
1837         have non-horizontal `shoulders'), avoiding false stem links.
1838
1839         * src/autofit/aflatin.c (af_latin_hints_link_segments): Use largest
1840         stem width (if available) to compute better demerits for distances
1841         between stems.
1842         (af_latin_hints_detect_features): Pass stem width array and array
1843         size.
1844         (af_latin_metrics_init_widths): Updated to use original algorithm.
1845         (af_latin_hints_apply): Updated to use new algorithm.
1846
1847         * src/autofit/aflatin.h: Updated.
1848         * src/autofit/afcjk.c: Updated.
1849
1850 2014-04-03  Werner Lemberg  <wl@gnu.org>
1851
1852         Don't require `gzip' module for `sfnt'.
1853
1854         Reported by Preet <prismatic.project@gmail.com>.
1855
1856         * src/sfnt/sfobjs.c (woff_open_font): Guard use of
1857         FT_Gzip_Uncompress with FT_CONFIG_OPTION_USE_ZLIB.
1858
1859 2014-03-27  Werner Lemberg  <wl@gnu.org>
1860
1861         Fix Savannah bug #38235.
1862
1863         Work around a bug in pkg-config version 0.28 and earlier: If a
1864         variable value gets surrounded by doublequotes (in particular values
1865         for the `prefix' variable), the prefix override mechanism fails.
1866
1867         * builds/unix/freetype2.in: Don't use doublequotes.
1868         * builds/unix/unix-def.in (freetype.pc): Escape spaces in directory
1869         names with backslashes.
1870
1871 2014-03-24  Werner Lemberg  <wl@gnu.org>
1872
1873         Fix Savannah bug #41946.
1874
1875         Based on a patch from Marek Kašík <mkasik@redhat.com>.
1876
1877         * builds/unix/configure.raw (LIBS_CONFIG): Remove.
1878         * builds/unix/freetype-config.in (libs): Hard-code value.
1879         * builds/unix/unix-def.in: Updated.
1880
1881 2014-03-22  Werner Lemberg  <wl@gnu.org>
1882
1883         Another revert for the change from 2014-03-18.
1884
1885         Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.
1886
1887         * src/base/ftcalc.c (FT_MulFix): Ensure that an `FT_MulFix' symbol
1888         gets always exported.
1889
1890 2014-03-20  Werner Lemberg  <wl@gnu.org>
1891
1892         CMakeLists.txt: Another fix for include directories.
1893
1894         Problem reported by Taylor Holberton <taylorcholberton@gmail.com>.
1895
1896 2014-03-19  Werner Lemberg  <wl@gnu.org>
1897
1898         CMakeLists.txt: Fix include directories.
1899
1900         Problem reported by Taylor Holberton <taylorcholberton@gmail.com>.
1901
1902 2014-03-19  Werner Lemberg  <wl@gnu.org>
1903
1904         Partially revert last commit.
1905
1906         Found by Alexei.
1907
1908         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Initializing
1909         those variables is plain wrong, since we are in a loop.
1910
1911 2014-03-18  Sean McBride  <sean@rogue-research.com>
1912             Werner Lemberg  <wl@gnu.org>
1913
1914         Fix clang warnings.
1915
1916         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Initialize
1917         some variables.
1918
1919         * src/base/ftcalc.c (FT_MulFix): Only use code if
1920         `FT_MULFIX_INLINED' is not defined.
1921
1922         * src/bdf/bdfdrivr.c (bdf_cmap_class), src/cache/ftcbasic.c
1923         (ftc_basic_image_family_class, ftc_basic_image_cache_class,
1924         ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class),
1925         src/cache/ftccmap.c (ftc_cmap_cache_class), src/cache/ftcmanag.c
1926         (ftc_size_list_class, ftc_face_list_class), src/pcf/pcfdrivr.c
1927         (pcf_cmap_class), src/pfr/pfrdrivr.c (pfr_metrics_service_rec): Make
1928         function static.
1929
1930         * src/type1/t1driver.c (t1_ps_get_font_value): Remove redundant
1931         code.
1932
1933 2014-03-17  Werner Lemberg  <wl@gnu.org>
1934
1935         Fix Savannah bug #41869.
1936
1937         This works around a problem with HarfBuzz (<= 0.9.26), which doesn't
1938         validate glyph indices returned by
1939         `hb_ot_layout_lookup_collect_glyphs'.
1940
1941         * src/autofit/hbshim.c (af_get_coverage): Guard `idx'.
1942
1943         * docs/CHANGES: Updated.
1944
1945 2014-03-14  Werner Lemberg  <wl@gnu.org>
1946
1947         * builds/unix/configure.raw: Don't show error messages of `which'.
1948
1949 2014-03-09  Alan Coopersmith  <alan.coopersmith@oracle.com>
1950
1951         Fix cppcheck 1.64 warning.
1952
1953         * src/autofit/afglobal.c (af_face_globals_new): Catch NULL pointer
1954         dereference in case of error.
1955
1956 2014-03-09  Sean McBride  <sean@rogue-research.com>
1957
1958         * src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove clang warning.
1959
1960 2014-03-06  Werner Lemberg  <wl@gnu.org>
1961
1962         * Version 2.5.3 released.
1963         =========================
1964
1965
1966         Tag sources with `VER-2-5-3'.
1967
1968         * docs/VERSION.DLL: Update documentation and bump version number to
1969         2.5.3.
1970
1971         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1972         builds/windows/vc2005/index.html,
1973         builds/windows/vc2008/freetype.vcproj,
1974         builds/windows/vc2008/index.html,
1975         builds/windows/vc2010/freetype.vcxproj,
1976         builds/windows/vc2010/index.html,
1977         builds/windows/visualc/freetype.dsp,
1978         builds/windows/visualc/freetype.vcproj,
1979         builds/windows/visualc/index.html,
1980         builds/windows/visualce/freetype.dsp,
1981         builds/windows/visualce/freetype.vcproj,
1982         builds/windows/visualce/index.html,
1983         builds/wince/vc2005-ce/freetype.vcproj,
1984         builds/wince/vc2005-ce/index.html,
1985         builds/wince/vc2008-ce/freetype.vcproj,
1986         builds/wince/vc2008-ce/index.html: s/2.5.2/2.5.3/, s/252/253/.
1987
1988         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
1989
1990         * builds/unix/configure.raw (version_info): Set to 17:2:11.
1991         * CMakeLists.txt (VERSION_PATCH): Set to 3.
1992         * docs/CHANGES: Updated.
1993
1994 2014-03-06  Werner Lemberg  <wl@gnu.org>
1995
1996         Fixes for compilation with C++.
1997
1998         * src/autofit/hbshim.c (scripts): Change type to `hb_script_t'.
1999         (af_get_coverage): Updated.
2000         (COVERAGE): Add cast.
2001
2002 2014-03-06  Sean McBride  <sean@rogue-research.com>
2003
2004         Remove more clang analyzer warnings.
2005
2006         * src/bdf/bdflib.c (_bdf_readstream), src/truetype/ttgload.c
2007         (TT_Load_Glyph): Remove dead stores.
2008
2009 2014-03-05  Werner Lemberg  <wl@gnu.org>
2010
2011         * builds/unix/configure.raw: Simplify.
2012
2013 2014-03-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2014
2015         Fix a bug in configure in library dependency setting
2016         Reported in https://bugs.freedesktop.org/show_bug.cgi?id=75652.
2017
2018         * builds/unix/configure.raw: Use `x"${xxx}" != xno' style.
2019
2020 2014-03-04  Werner Lemberg  <wl@gnu.org>
2021
2022         Minor fix for `make devel'.
2023
2024         * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Don't use
2025         pkg-config for bzip2 since not all GNU/Linux distributions have
2026         `bzip2.pc' (and the header file `bzlib.h' is located in /usr/include
2027         normally).
2028
2029 2014-03-04  Sean McBride  <sean@rogue-research.com>
2030
2031         Fix several clang static analyzer dead store warnings.
2032
2033         * src/autofit/afhints.c (af_glyph_hints_reload,
2034         af_glyph_hints_align_weak_points): Remove unnecessary assignments.
2035
2036         * src/bdf/bdflib.c (bdf_font_load): Ditto.
2037
2038         * src/pshinter/pshalgo.c (psh_glyph_compute_extrema,
2039         psh_glyph_interpolate_other_points): Ditto.
2040
2041         * src/type1/t1load.c (T1_Set_MM_Blend): Ditto.
2042
2043 2014-03-03  Werner Lemberg  <wl@gnu.org>
2044
2045         Rewrite library option handling in `configure'.
2046
2047         o Introduce `auto' value for `--with-XXX' library options; this is
2048           now the default.
2049
2050         o First use `pkg-config' for library detection, then fall back to
2051           other tests.
2052
2053         * builds/unix/configure.raw (--with-zlib, --with-bzip2, --with-png,
2054         --with-harfbuzz): Rewrite.
2055         Use new `xxx_reqpriv', `xxx_libpriv', and `xxx_libstaticconf'
2056         variables to collect data for `freetype2.pc' and `freetype-config'.
2057         (FT2_EXTRA_LIBS): Renamed to ...
2058         (ft2_extra_libs): This since it gets no longer substituted.
2059         (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBS_CONFIG, LIBSSTATIC_CONFIG):
2060         New output variables, replacing `XXX_PKG' and `LIBXXX'.
2061         Add notice at the end of `configure' showing the library
2062         configuration.
2063
2064         * builds/unix/freetype-config.in (--static): New command line
2065         option.
2066         (libs): Updated.
2067         (staticlibs): New variable, to be used if `--static' is given.
2068         * docs/freetype-config.1: Document `--static'.
2069
2070         * builds/unix/freetype2.in, builds/unix/unix-def.in: Updated.
2071
2072 2014-03-01  Werner Lemberg  <wl@gnu.org>
2073
2074         Avoid `long long' warnings with older gcc compilers.
2075         Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
2076
2077         * builds/unix/configure.raw: Don't use gcc's `-pedantic' flag for
2078         versions < 4.6.  This is especially needed for Max OS X since this
2079         OS runs a gcc variant (or emulation) based on version 4.2.1.
2080
2081 2014-03-01  Werner Lemberg  <wl@gnu.org>
2082
2083         * docs/INSTALL.CROSS: Revised and updated.
2084
2085 2014-03-01  Werner Lemberg  <wl@gnu.org>
2086
2087         Make `make clean' remove `freetype2.pc'.
2088
2089         This is a generated file at build time, not configure time.
2090
2091         * builds/unix/unix-def.in (DISTCLEAN): Move `freetype2.pc' to ...
2092         (CLEAN): This variable.
2093
2094 2014-03-01  Werner Lemberg  <wl@gnu.org>
2095
2096         Use pkg-config for detecting libpng and libbz2 also.
2097
2098         * builds/unix/configure.raw (HAVE_PKG): New variable.
2099         Search for libbz2 using `pkg-config'; s/BZ2/BZIP2/.
2100         Search for libpng using `pkg-config'.
2101         Fix definition of `LIBHARFBUZZ' variable.
2102         * builds/unix/freetype-config.in ($libs): Updated.
2103         * builds/unix/freetype2.in: Add `URL' field.
2104         Update `Requires.private' and `Libs.private'.
2105         * builds/unix/unix-def.in: Updated.
2106
2107 2014-03-01  Werner Lemberg  <wl@gnu.org>
2108
2109         Add configure support for HarfBuzz.
2110
2111         * builds/unix/pkg.m4: New file.
2112         * builds/unix/configure.raw: Search for libharfbuzz using
2113         `pkg-config'.
2114         Add `--without-harfbuzz' option.
2115         * builds/unix/freetype-config.in, builds/unix/freetype2.in,
2116         builds/unix/unix-def.in (freetype-config, freetype2.pc): Handle
2117         HarfBuzz.
2118
2119         * docs/INSTALL.UNIX: Document interdependency of FreeType with
2120         HarfBuzz.
2121
2122 2014-02-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
2123
2124         [cff] Math simplifications.
2125
2126         * src/cf2blues.c (cf2_blues_init): Use `FT_MulDiv'.
2127         * src/cf2ft.c (cf2_getScaleAndHintFlag): Use simple division.
2128
2129 2014-02-28  Dave Arnold  <darnold@adobe.com>
2130
2131         [cff] Fix Savannah bug #41697, part 2.
2132
2133         * src/cff/cf2ft.c (cf2_initLocalRegionBuffer,
2134         cf2_initGlobalRegionBuffer): It is possible for a charstring to call
2135         a subroutine if no subroutines exist.  This is an error but should
2136         not trigger an assert.  Split the assert to account for this.
2137
2138 2014-02-28  Dave Arnold  <darnold@adobe.com>
2139
2140         [cff] Fix Savannah bug #41697, part 1.
2141
2142         * src/cff/cf2hints.c (cf2_hintmap_build): Return when `hintMask' is
2143         invalid.  In this case, it is not safe to use the length of
2144         `hStemHintArray'; the exception has already been recorded in
2145         `hintMask'.
2146
2147 2014-02-26  Werner Lemberg  <wl@gnu.org>
2148
2149         [sfnt] Fix Savannah bug #41696.
2150
2151         * src/sfnt/ttcmap.c (tt_cmap0_validate, tt_cmap2_validate,
2152         tt_cmap4_validate, tt_cmap14_validate): Fix limit tests.
2153
2154 2014-02-26  Werner Lemberg  <wl@gnu.org>
2155
2156         [winfnt] Fix Savannah bug #41694.
2157
2158         * src/winfonts/winfnt.c (FNT_Load_Glyph): Check glyph offset.
2159
2160 2014-02-26  Werner Lemberg  <wl@gnu.org>
2161
2162         [cff] Fix Savannah bug #41693.
2163
2164         * src/cff/cffload.c (CFF_Load_FD_Select): Reject empty array.
2165
2166 2014-02-26  Werner Lemberg  <wl@gnu.org>
2167
2168         [bdf] Fix Savannah bug #41692.
2169
2170         bdflib puts data from the input stream into a buffer in chunks of
2171         1024 bytes.  The data itself gets then parsed line by line, simply
2172         increasing the current pointer into the buffer; if the search for
2173         the final newline character exceeds the buffer size, more data gets
2174         read.
2175
2176         However, in case the current line's end is very near to the buffer
2177         end, and the keyword to compare with is longer than the current
2178         line's length, an out-of-bounds read might happen since `memcmp'
2179         doesn't stop properly at the string end.
2180
2181         * src/bdf/bdflib.c: s/ft_memcmp/ft_strncmp/ to make comparisons
2182         stop at string ends.
2183
2184 2014-02-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2185
2186         [autofit] Fix `make multi' compilation.
2187
2188         * src/autofit/hbshim.c: Include `afglobal.h' and `aftypes.h'.
2189
2190 2014-02-19  Werner Lemberg  <wl@gnu.org>
2191             Simon Bünzli  <zeniko@gmail.com>
2192
2193         Fix Savannah bug #32902.
2194
2195         Patch taken from
2196
2197           https://code.google.com/p/sumatrapdf/source/browse/trunk/ext/_patches/freetype2.patch?spec=svn8620&r=8620#87
2198
2199         with slight modifications.
2200
2201         * src/type1/t1parse.c (T1_Get_Private_Dict): Add heuristic test to
2202         handle fonts that incorrectly use \r at the beginning of an eexec
2203         block.
2204
2205 2014-02-19  Simon Bünzli  <zeniko@gmail.com>
2206
2207         Fix Savannah bug #41590.
2208
2209         * src/type1/t1load.c (parse_encoding): Protect against invalid
2210         number.
2211
2212 2014-02-12  Dave Arnold  <darnold@adobe.com>
2213
2214         [cff] Optimize by using `FT_MulDiv'.
2215         Suggested by Alexei.
2216
2217         * src/cff/cf2font.c (cf2_computeDarkening): Do it.
2218
2219 2014-02-12  Werner Lemberg  <wl@gnu.org>
2220
2221         Fix Savannah bug #41465.
2222
2223         * builds/unix/unix-def.in (CLEAN): Add `freetype-config'.
2224         (DISTCLEAN): Remove `freetype-config'.
2225
2226 2014-02-08  Sean McBride  <sean@rogue-research.com>
2227
2228         Fix clang static analyzer and compiler warnings.
2229
2230         * src/autofit/afhints.c (af_glyph_hints_align_weak_points),
2231         src/autofit/afloader (af_loader_load_g) <FT_GLYPH_FORMAT_COMPOSITE>,
2232         src/base/ftcalc.c (FT_MSB), src/base/ftoutln.c
2233         (FT_Outline_Decompose), src/bdf/bdfdrivr.c (bdf_interpret_style),
2234         src/cff/cffparse.c (cff_parse_integer), src/cid/cidparse.c
2235         (cid_parser_new), src/pfr/pfrload.c (pfr_phy_font_load),
2236         src/raster/ftraster.c (Decompose_Curve), src/sfnt/sfdriver.c
2237         (sfnt_get_ps_name), src/sfnt/ttcmap.c (tt_cmap12_next,
2238         tt_cmap13_next), src/smooth/ftgrays.c (gray_hline): Remove dead
2239         code.
2240
2241         * src/autofit/afmodule.c (af_property_get_face_globals,
2242         af_property_set, af_property_get), src/base/ftbitmap.c
2243         (ft_gray_for_premultiplied_srgb_bgra): Make functions static.
2244
2245         * src/base/ftobjs.c (ft_remove_renderer): Protect against
2246         library == NULL.
2247         (ft_property_do): Make function static.
2248
2249         * src/base/ftrfork.c: Include `ftbase.h'.
2250
2251         * src/sfnt/ttsbit.c (tt_face_load_sbix_image)
2252         [!FT_CONFIG_OPTION_USE_PNG], src/type1/t1gload.c
2253         (T1_Compute_Max_Advance): Avoid compiler warning.
2254
2255         * src/truetype/ttinterp.c (TT_New_Context): Reduce scope of
2256         variable.
2257
2258 2014-02-08  Werner Lemberg  <wl@gnu.org>
2259
2260         Fix Windows build directories.
2261
2262         The build target is now `windows' instead of `win32'.
2263
2264         Problem reported by Nickolas George <darknova.clan@gmail.com>.
2265
2266         * builds/modules.mk: Don't use `win32' and `win16' (!) but
2267         `windows'.
2268
2269         * builds/windows/detect.mk, builds/windows/win32-def.mk:
2270         s/win32/windows/.
2271
2272 2014-02-08  Eugen Sawin  <esawin@mozilla.com>
2273
2274         Fix Savannah bug #41507.
2275
2276         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap)
2277         [!FT_CONFIG_OPTION_USE_PNG] <17, 17, 19>: Fix error handling.
2278
2279 2014-02-08  Dave Arnold  <darnold@adobe.com>
2280
2281         [cff] Fix minor performance bug.
2282
2283         * src/cff/cf2font.c (cf2_font_setup): Darkening amount and blue zone
2284         calculations are now cached and not recomputed on each glyph.
2285
2286 2014-02-05  Werner Lemberg  <wl@gnu.org>
2287
2288         Fix problems with perl 5.8.8 as distributed with current MinGW.
2289
2290         * src/tools/afblue.pl: Work-around for Perl bug #63402.
2291         (string_re): Avoid `possessive quantifiers', which have been
2292         introduced in Perl version 5.10.
2293
2294 2014-02-04  Werner Lemberg  <wl@gnu.org>
2295
2296         Fix compilation with MinGW.
2297
2298         Right now, compilation out of the box with latest MinGW is broken
2299         due to bugs in header files of mingwrt 4.0.3 in strict ANSI mode,
2300         cf.
2301
2302           https://sourceforge.net/p/mingw/bugs/2024/
2303           https://sourceforge.net/p/mingw/bugs/2046/
2304
2305         * builds/unix/configure.raw: Don't set `-ansi' flag for MinGW.
2306
2307 2014-02-04  Werner Lemberg  <wl@gnu.org>
2308
2309         [autofit] Minor fix.
2310
2311         * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
2312         src/autofit/aflatin.c (af_latin_metrics_init_widths): Fix handling
2313         of alternative standard characters.
2314         This also fixes a compilation warning in non-debug mode.
2315
2316 2014-02-03  Werner Lemberg  <wl@gnu.org>
2317
2318         [cff] Fix Savannah bug #41363.
2319
2320         * src/cff/cf2ft.c (cf2_checkTransform): Convert assertion into
2321         parameter check.
2322         (cf2_decoder_parse_charstrings): Call `cf2_checkTransform' only if
2323         we are scaling the outline.
2324         (cf2_getPpemY): Remove problematic assertion.
2325
2326 2014-01-26  Werner Lemberg  <wl@gnu.org>
2327
2328         [autofit] Introduce two more slots for standard characters.
2329
2330         This is useful for OpenType features like `c2sc' (caps to small
2331         caps) that don't have lowercase letters by definition, or other
2332         features that mainly operate on numerals.
2333
2334         * src/autofit/afscript.h: Add more standard characters.
2335
2336         * src/autofit/aftypes.h: Update use of `SCRIPT' macro.
2337         (AF_ScriptClassRec): Add members to hold two more standard
2338         characters.
2339         (AF_DEFINE_SCRIPT_CLASS): Updated.
2340
2341         * src/autofit/afglobal.c, src/autofit/afglobal.h,
2342         * src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/hbshim.c:
2343         Update use of `SCRIPT' macro.
2344
2345         * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
2346         src/autofit/aflatin.c (af_latin_metrics_init_widths): Scan two more
2347         standard characters.
2348
2349 2014-01-24  Werner Lemberg  <wl@gnu.org>
2350
2351         Fix Savannah bug #41320.
2352
2353         * src/autofit/aflatin.c (af_latin_metrics_init_blues)
2354         <AF_LATIN_IS_LONG_BLUE>: Avoid negative index of `last'.
2355
2356 2014-01-23  Werner Lemberg  <wl@gnu.org>
2357
2358         Fix Savannah bug #41310.
2359
2360         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) <glyph_format==5>:
2361         Don't check metrics, which this format doesn't have.
2362         This is another correction to the commit from 2013-11-21.
2363
2364 2014-01-23  Werner Lemberg  <wl@gnu.org>
2365
2366         Fix Savannah bug #41309.
2367
2368         * src/type1/t1load.c (t1_parse_font_matrix): Properly handle result
2369         of `T1_ToFixedArray'.
2370
2371         * src/cid/cidload.c (cid_parse_font_matrix): Synchronize with
2372         `t1_parse_font_matrix'.
2373
2374         * src/type42/t42parse.c (t42_parse_font_matrix): Synchronize with
2375         `t1_parse_font_matrix'.
2376         (t42_parse_encoding): Synchronize with `t1_parse_encoding'.
2377
2378         * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_BBOX>,
2379         <T1_FIELD_TYPE_MMOX>: Properly handle result of `ps_tofixedarray'.
2380
2381 2014-01-22  Werner Lemberg  <wl@gnu.org>
2382
2383         * src/autofit/hbshim.c (af_get_coverage): Fix memory leaks.
2384
2385 2014-01-16  Werner Lemberg  <wl@gnu.org>
2386
2387         [autofit] Improve tracing of style coverages.
2388
2389         * include/internal/fttrace.h: Add `afglobal' for tracing style
2390         coverages.
2391
2392         * src/autofit/afglobal.c: Include FT_INTERNAL_DEBUG_H.
2393         (FT_COMPONENT): Define.
2394         (af_face_globals_compute_style_coverage): Trace `gstyles' array
2395         data.
2396
2397 2014-01-09  Werner Lemberg  <wl@gnu.org>
2398
2399         Fix Savannah bug #41158.
2400
2401         * builds/unix/install.mk (install): Create man page directory.
2402
2403 2014-01-08  Chongyu Zhu  <lembacon@gmail.com>
2404
2405         [arm] Fix Savannah bug #41138, part 2.
2406
2407         * builds/unix/ftconfig.in (FT_MulFix_arm), include/config/ftconfig.h
2408         (FT_MulFix_arm), src/truetype/ttinterp.c (TT_MulFix14_arm): Fix
2409         preprocessor conditionals for `add.w'.
2410
2411 2014-01-08  Werner Lemberg  <wl@gnu.org>
2412
2413         [autofit] Fix Savannah bug #41138, part 1.
2414
2415         * src/tools/afblue.pl <Handling #endif>: Produce correct auxiliary
2416         enumeration names for generated `#else'.
2417
2418         * src/autofit/afblue.h: Regenerated.
2419
2420 2014-01-06  Werner Lemberg  <wl@gnu.org>
2421
2422         Add manual page for `freetype-config'.
2423         Contributed by Nis Martensen <nis.martensen@web.de>.
2424
2425         * docs/freetype-config.1: New file.
2426
2427         * builds/unix/unix-def.in (mandir): Define.
2428         * builds/unix/install.mk (install, uninstall): Handle manpage.
2429
2430 2014-01-05  Werner Lemberg  <wl@gnu.org>
2431
2432         [autofit] Minor fixes for `afblue.pl'.
2433
2434         * src/tools/afblue.pl (aux_name): Don't use `reverse'.
2435         <Handling #endif>: Use proper indentation for generated `#else'.
2436
2437         * src/autofit/afblue.h: Regenerated.
2438
2439 2014-01-04  Werner Lemberg  <wl@gnu.org>
2440
2441         [autofit] Fix Indic scripts.
2442
2443         Split the single, incorrect Indic entry into separate scripts so
2444         that the covered ranges are the same: Bengali, Devanagari, Gujarati,
2445         Gurmukhi, Kannada, Limbu, Malayalam, Oriya, Sinhala, Sundanese,
2446         Syloti Nagri, Tamil, Telugu, and Tibetan.  At the same time, remove
2447         entries for Meetei Mayek and Sharada â€“ the Unicode ranges were
2448         incorrect (and nobody has complained about that), fonts are scarce
2449         for those scripts, and the Indic auto-hinter support is rudimentary
2450         anyways.
2451
2452         * src/autofit/afscript.h: Updated, using AF_CONFIG_OPTION_INDIC and
2453         AF_CONFIG_OPTION_CJK.
2454
2455         * src/autofit/afstyles.h (STYLE_DEFAULT_INDIC): New auxiliary macro.
2456         Use it, together with AF_CONFIG_OPTION_INDIC and
2457         AF_CONFIG_OPTION_CJK, to update.
2458
2459         * src/autofit/afranges.c [AF_CONFIG_OPTION_INDIC]: Updated.
2460         [!AF_CONFIG_OPTION_INDIC, !AF_CONFIG_OPTION_CJK]: Removed.
2461         Sort entries by tags.
2462
2463 2014-01-03  Werner Lemberg  <wl@gnu.org>
2464
2465         [autofit] Thinko.
2466
2467         * src/autofit/hbshim.c (af_get_char_index): Similar to
2468         `af_get_coverage', reject glyphs which are not substituted.
2469
2470 2014-01-03  Werner Lemberg  <wl@gnu.org>
2471
2472         [autofit] Fix handling of default coverages.
2473
2474         With this commit, the implementation of coverage handling is
2475         completed.
2476
2477         * src/autofit/hbshim.c (af_get_coverage): Exit early if nothing to
2478         do.
2479         Reject coverages which don't contain appropriate glyphs for blue
2480         zones.
2481
2482 2014-01-03  Werner Lemberg  <wl@gnu.org>
2483
2484         [autofit] Fix handling of default coverages.
2485
2486         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
2487         First handle non-default coverages, then the default coverage of the
2488         default script, and finally the other default coverages.
2489
2490 2014-01-03  Werner Lemberg  <wl@gnu.org>
2491
2492         [autofit] Fix scaling of HarfBuzz shaping.
2493
2494         * src/autofit/hbshim.c (af_get_char_index): Scale to units per EM.
2495
2496 2014-01-03  Werner Lemberg  <wl@gnu.org>
2497
2498         [autofit] Better ftgrid support.
2499
2500         * src/autofit/afhints.c (af_glyph_hints_get_segment_offset): Add
2501         parameters `is_blue' and `blue_offset'.
2502
2503 2014-01-01  Werner Lemberg  <wl@gnu.org>
2504
2505         [autofit] Remove some styles.
2506
2507         * src/autofit/afcover.h: Remove coverages for alternative fractions,
2508         denominators, numerators, and fractions.
2509
2510         * src/autofit/afstyles.h (META_STYLE_LATIN): Updated.
2511
2512 2014-01-01  Werner Lemberg  <wl@gnu.org>
2513
2514         [autofit] Add more styles.
2515
2516         * src/autofit/afstyles.h (STYLE_LATIN, META_STYLE_LATIN): New
2517         auxiliary macros; use them to define styles for Cyrillic, Greek, and
2518         Latin.
2519
2520         * src/autofit/afcover.h: Remove coverage for oldstyle figures.
2521         Since those digits are used in combination with ordinary letters, it
2522         makes no sense to handle them separately.
2523
2524         * src/autofit/afglobal.c (af_face_globals_get_metrics): Don't limit
2525         `options' parameter to 4 bits.
2526
2527 2014-01-01  Werner Lemberg  <wl@gnu.org>
2528
2529         [autofit] Fix style assignments to glyphs.
2530
2531         * src/autofit/hbshim.c (af_get_coverage)
2532         [FT_CONFIG_OPTION_USE_HARFBUZZ]: Scan GPOS coverage of features also
2533         so that we can skip glyphs that have both GSUB and GPOS data.
2534
2535 2014-01-01  Werner Lemberg  <wl@gnu.org>
2536
2537         * src/autofit/hbshim.c: s/{lookups,glyphs}/gsub_{lookups,glyphs}/.
2538
2539 2014-01-01  Werner Lemberg  <wl@gnu.org>
2540
2541         [autofit] Implement and use `af_get_char_index' with HarfBuzz.
2542
2543         * src/autofit/hbshim.c (COVERAGE) [FT_CONFIG_OPTION_USE_HARFBUZZ]:
2544         Redefine to construct HarfBuzz features.
2545         (af_get_char_index) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Rewritten.
2546
2547         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Use
2548         `y_offset' to adjust `best_y'.
2549
2550 2013-12-31  Werner Lemberg  <wl@gnu.org>
2551
2552         [autofit] s/AF_STYLE_...._DEFAULT/AF_STYLE_...._DFLT/i.
2553
2554 2013-12-31  Werner Lemberg  <wl@gnu.org>
2555
2556         [autofit] Fix interface of `af_get_char_index'.
2557
2558         * src/autofit/hbshim.c (af_get_char_index): Return error value.
2559         Add argument for y offset (to be used in a yet-to-come patch).
2560
2561         * src/autofit/hbshim.h, src/autofit/afcjk.c,
2562         src/autofit/aflatin.c: Updated.
2563
2564 2013-12-30  Werner Lemberg  <wl@gnu.org>
2565
2566         [autofit] Don't combine multiple features into one set.
2567
2568         Combining them, as originally envisioned, would lead to much more
2569         complicated code, as investigations have shown meanwhile.  The major
2570         drawback is that we run out of available style slots much earlier.
2571         However, this is only a theoretical issue since we don't support a
2572         large number of scripts currently.
2573
2574         * src/autofit/afcover.h: Replace `COVERAGE_{1,2,3}' macros with
2575         a single-element `COVERAGE' macro, sort the elements by the feature
2576         tags, and add entry for `ruby'.
2577
2578         * src/autofit/aftypes.h: Updated.
2579         * src/autofit/hbshim.c: Updated.
2580
2581 2013-12-28  Werner Lemberg  <wl@gnu.org>
2582
2583         [autofit] Code shuffling to reduce use of cpp macros.
2584
2585         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
2586         Call `af_get_coverage' unconditionally.
2587
2588         * src/autofit/autofit.c: Include `hbshim.c' unconditionally.
2589
2590         * src/autofit/hbshim.c (af_get_coverage)
2591         [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Provide dummy function.
2592
2593         * src/autofit/hbshim.h: Provide function declarations
2594         unconditionally.
2595
2596 2013-12-28  Werner Lemberg  <wl@gnu.org>
2597
2598         [autofit] Add wrapper function for `FT_Get_Char_Index'.
2599
2600         Yet-to-come changes will provide HarfBuzz functionality for the new
2601         function.
2602
2603         * src/autofit/hbshim.c (af_get_char_index): New function.
2604         * src/autofit/hbshim.h: Updated.
2605
2606         * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
2607         af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
2608
2609         * src/autofit/aflatin.c (af_latin_metrics_init_widths,
2610         af_latin_metrics_init_blues, af_latin_metrics_check_digits):
2611         Updated.
2612
2613 2013-12-28  Werner Lemberg  <wl@gnu.org>
2614
2615         [autofit] Use `global' HarfBuzz font object.
2616
2617         We now use `hb_font' instead of `hb_face' since yet-to-come changes
2618         need this.
2619
2620         * src/autofit/afglobal.h: Include `hbshim.h'.
2621         (AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member
2622         `hb_font'.
2623
2624         * src/autofit/afglobal.c (af_face_globals_new)
2625         [FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'.
2626         (af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy
2627         `hb_font'.
2628
2629         * src/autofit/hbshim.h: Include HarfBuzz headers.
2630
2631         * src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz
2632         headers.
2633         (af_get_coverage): Updated.
2634
2635 2013-12-27  Werner Lemberg  <wl@gnu.org>
2636
2637         [autofit] Handle `DFLT' OpenType script for coverages.
2638
2639         * include/ftautoh.h: Document new `default-script' property.
2640
2641         * src/autofit/hbshim.c (af_get_coverage): Use `AF_FaceGlobals' for
2642         type of first parameter.
2643         (script_tags): Add one more element.
2644         (af_get_coverage): Adjust `script_tags' to handle `DFLT' script tag.
2645
2646         * src/autofit/hbshim.h: Updated.
2647
2648         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
2649         Updated.
2650
2651         * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT): New macro.
2652
2653         * src/autofit/afmodule.h (AF_ModuleRec): New `default_script'
2654         member.
2655
2656         * src/autofit/afmodule.c (af_property_set, af_property_get): Handle
2657         `default-script' property.
2658         (af_autofitter_init): Updated.
2659
2660 2013-12-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
2661
2662         [ftrfork] Fix the face order difference between POSIX and Carbon.
2663
2664         The fragmented resources in Suitcase and .dfont should be reordered
2665         when `POST' resource for Type1 is being restored, but reordering of
2666         sfnt resources induces the different face order.  Now the ordering
2667         is restricted to `POST' resource only, to prevent the different
2668         order issue (e.g. the face index in the fontconfig cache generated
2669         with Carbon framework is incompatible with that by FreeType 2
2670         without Carbon framework.)  Found by Khaled Hosny and Hin-Tak Leung.
2671
2672         https://lists.gnu.org/archive/html/freetype-devel/2013-02/msg00035.html
2673         https://lists.gnu.org/archive/html/freetype-devel/2013-12/msg00027.html
2674
2675         * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Add a switch
2676         `sort_by_res_id' to control the fragmented resource ordering.
2677         * include/internal/ftrfork.h: Declare new switch.
2678         * src/base/ftobjs.c (IsMacResource): Enable the sorting for `POST'
2679         resource, and disable the sorting for `sfnt' resource.
2680
2681 2013-12-25  Werner Lemberg  <wl@gnu.org>
2682
2683         Fix Savannah bug #40997.
2684
2685         * src/bdf/bdfdrivr.c (BDF_Face_Init): Only use OR operator to
2686         adjust face flags since FT_FACE_FLAG_EXTERNAL_STREAM might already
2687         be set.
2688         * src/cff/cffobjs.c (cff_face_init): Ditto.
2689         * src/cid/cidobjs.c (cid_face_init): Ditto.
2690         * src/pcf/pcfread.c (pcf_load_font): Ditto.
2691         * src/pfr/pfrobjs.c (pfr_face_init): Ditto.
2692         * src/type1/t1objs.c (T1_Face_Init): Ditto.
2693         * src/type42/t42objs.c (T42_Face_Init): Ditto.
2694         * src/winfonts/winfnt.c (FNT_Face_Init): Ditto.
2695
2696 2013-12-21  Werner Lemberg  <wl@gnu.org>
2697
2698         [autofit] Introduce `coverages'.
2699
2700         Coverages are the interface to the HarfBuzz library to access
2701         OpenType features for handling glyphs not addressable by the cmap.
2702
2703         Right now, compilation of HarfBuzz is only added to the development
2704         build.  A solution for standard build mode will be delayed until
2705         HarfBuzz gets split into two libraries to avoid mutual dependencies
2706         between FreeType and HarfBuzz.
2707
2708         Note that this is only a first step in handling coverages, basically
2709         providing the framework only.  Code for handling selected OpenType
2710         features (this is, actually using the data in `afcover.h') will
2711         follow.
2712
2713         * devel/ftoption.h, include/config/ftoption.h
2714         (FT_CONFIG_OPTION_USE_HARFBUZZ): New macro.
2715
2716         * src/autofit/hbshim.c, src/autofit/hbshim.h, src/autofit/afcover.h:
2717         New files.
2718
2719         * src/autofit/afscript.h: Add HarfBuzz script name tags.
2720
2721         * src/autofit/afstyles.h: Add default coverage enumeration values.
2722
2723         * src/autofit/aftypes.h: Update use of `SCRIPT' and `STYLE' macros.
2724         (AF_Coverage): New enumeration (generated by `afcover.h').
2725         (AF_StyleClassRec): New member `coverage'.
2726         (AF_DEFINE_STYLE_CLASS): Updated.
2727
2728         * include/internal/fttrace.h: Add `afharfbuzz' for tracing coverage
2729         data.
2730
2731         * src/autofit/afglobal.h: Update use of `SCRIPT' and `STYLE' macros.
2732         (AF_SCRIPT_FALLBACK): Renamed to ...
2733         (AF_STYLE_FALLBACK): ... this.
2734
2735         * src/autofit/afglobal.c: Include `hbshim.c'.
2736         Update use of `SCRIPT' and `STYLE' macros.
2737         (af_face_globals_compute_style_coverage)
2738         [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call `af_get_coverage'.
2739         Update.
2740
2741         * src/autofit/afmodule.h (AF_ModuleRec):
2742         s/fallback_script/fallback_style/.
2743
2744         * src/autofit/afmodule.c (af_property_set): Adapt handling of
2745         `fallback-script' property to set a fallback style.
2746         (af_property_get, af_autofitter_init): Updated.
2747
2748         * src/autofit/afpic.c: Update use of `SCRIPT' and `STYLE' macros.
2749
2750         * src/autofit/afranges.h: Update use of `SCRIPT' macro.
2751
2752         * src/autofit/autofit.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include
2753         `hbshim.c'.
2754
2755         * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `hbshim.c'.
2756         (AUTOF_DRV_H): Add `afcover.h'.
2757
2758         * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Use pkg-config for
2759         all libraries needed by FreeType.
2760
2761 2013-12-21  Werner Lemberg  <wl@gnu.org>
2762
2763         Fix Savannah bug #40975 (sort of).
2764
2765         * src/truetype/ttinterp.c (Ins_IP): Fix sign typo to make FreeType
2766         behave the same as the Windows TrueType engine for the invalid case.
2767
2768 2013-12-21  Werner Lemberg  <wl@gnu.org>
2769
2770         [autofit] Make PIC mode work actually.
2771
2772         * src/autofit/afpic.h (AFModulePIC): Fix array sizes to fit the
2773         enumeration values automatically generated by including `afscript.h'
2774         and friends.
2775
2776         * src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
2777
2778 2013-12-21  Werner Lemberg  <wl@gnu.org>
2779
2780         Fix PIC linking.
2781
2782         * include/internal/ftrfork.h (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Fix
2783         generated function name.
2784
2785         * src/base/basepic.c (FT_Init_Table_raccess_guess_table): Rename
2786         to ...
2787         (FT_Init_Table_ft_raccess_guess_table): ... this so that the
2788         function name correctly corresponds to what the macro framework
2789         expects.
2790
2791         * src/psnames/rules.mk (PSNAMES_DRV_SRC_S): Use correct file name so
2792         that PIC functions are compiled also.
2793
2794 2013-12-21  Werner Lemberg  <wl@gnu.org>
2795
2796         [base] Add missing dependencies to Makefile.
2797
2798         * src/base/rules.mk (BASE_SRC): Add `basepic.c' and `ftpic.c'.
2799         (BASE_H): Add `basepic.h'.
2800
2801 2013-12-20  Werner Lemberg  <wl@gnu.org>
2802
2803         [autofit] Fix PIC compilation.
2804
2805         * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
2806         src/autofit/aflatin.c (af_latin_metrics_init_widths)
2807         [FT_CONFIG_OPTION_PIC]: Declare `globals'.
2808
2809         * src/autofit/afglobal.c: Always call AF_DEFINE_SCRIPT_CLASS, and
2810         AF_DEFINE_STYLE_CLASS.
2811
2812         * src/autofit/afpic.c: Include `afglobal.h'.
2813         (autofit_module_class_pic_init): Typo.
2814
2815         * src/autofit/aftypes.h (AF_DEFINE_SCRIPT_CLASS,
2816         AF_DEFINE_STYLE_CLASS): Don't use the same identifier for macro
2817         parameter and structure member.
2818
2819 2013-12-20  Werner Lemberg  <wl@gnu.org>
2820
2821         [autofit] Introduce `styles'.
2822
2823         This is the new top-level structure for handling glyph input data;
2824         scripts are now defined separately.
2825
2826         * src/autofit/aftypes.h (SCRIPT): Updated.
2827         (AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
2828         members to ...
2829         (AF_Style_ClassRec): ... this new structure.
2830         (AF_Style): New enumeration.
2831         (AF_StyleMetricsRec): Replace `script' enumeration with
2832         `style_class' pointer.
2833         (AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
2834         (AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
2835
2836         * src/autofit/afstyles.h: New file, using data from `afscript.h'.
2837         * src/autofit/afscript.h: Updated.
2838
2839         * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
2840         af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
2841
2842         * src/autofit/afglobal.c (SCRIPT): Updated.
2843         (STYLE): Redefine macro to load `afstyles.h'.
2844         (af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
2845         (af_style_names): ... this array.
2846         (af_face_globals_compute_script_coverage): Renamed to...
2847         (af_face_globals_compute_style_coverage): ... this.
2848         Updated.
2849         (af_face_globals_new, af_face_globals_free,
2850         af_face_globals_get_metrics): Updated.
2851
2852         * src/autofit/afglobal.h (SCRIPT): Updated.
2853         (STYLE): Redefine macro to load `afstyles.h'.
2854         (AF_SCRIPT_FALLBACK): Update definition.  This will get more
2855         refinements with later on.
2856         (AF_SCRIPT_UNASSIGNED): Replace with...
2857         (AF_STYLE_UNASSIGNED): ... this macro.
2858         (AF_FaceGlobalsRec): Updated.
2859
2860         * src/autofit/aflatin.c (af_latin_metrics_init_widths,
2861         af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
2862         af_latin_hint_edges): Updated.
2863
2864         * src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
2865         (af_ltn2_uniranges): Removed.
2866
2867         * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
2868         Updated.
2869
2870         * src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
2871         * src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
2872         (AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
2873         members.
2874
2875         * src/autofit/afranges.h: Updated.
2876
2877         * src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
2878
2879 2013-12-19  Werner Lemberg  <wl@gnu.org>
2880
2881         [autofit] Factor scripts and uniranges out of writing system files.
2882
2883         * src/autofit/afranges.c, src/autofit/afranges.h: New files.
2884
2885         * src/autofit/afscript.h: Extend `SCRIPT' macro with more
2886         parameters, taking data from the writing system files.
2887
2888         * src/autofit/aftypes.h: Updated.
2889
2890         * src/autofit/afglobal.c: Include `afranges.h'.
2891         Load `afscript.h' to call AF_DEFINE_SCRIPT_CLASS.
2892         * src/autofit/afglobal.c: Include `afranges.h'.
2893         Load `afscript.h' to call AF_DECLARE_SCRIPT_CLASS.
2894
2895         * src/autofit/afcjk.c, src/autofit/afcjk.h: Updated.
2896         * src/autofit/afdummy.c, src/autofit/afdummy.h: Updated.
2897         * src/autofit/afindic.c, src/autofit/afindic.h: Updated.
2898         * src/autofit/aflatin.c, src/autofit/aflatin.h: Updated.
2899         * src/autofit/aflatin2.c, src/autofit/aflatin2.h: Updated.
2900
2901         * src/autofit/afpic.c: Updated.
2902
2903         * src/autofit/autofit.c: Include `afranges.c'.
2904         * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afranges.c'.
2905
2906 2013-12-18  Werner Lemberg  <wl@gnu.org>
2907
2908         [autofit] More code orthogonality.
2909
2910         * src/autofit/aftypes.h (AF_StyleMetrics): Replace `script_class'
2911         pointer to an `AF_ScriptClass' structure with `script' index of type
2912         `AF_Script'.
2913         Move some code around.
2914
2915         * src/autofit/afcjk.c: Include `afpic.h'.
2916         (af_cjk_metrics_init_widths, af_cjk_metrics_init_blues,
2917         af_cjk_hint_edges): Updated.
2918
2919         * src/autofit/aflatin.c: Include `afpic.h'.
2920         (af_latin_metrics_init_widths, af_latin_metrics_init_blues,
2921         af_latin_metrics_scale_dim, af_latin_hint_edges): Updated.
2922
2923         * src/autofit/afglobal.c (af_face_globals_get_metrics): Updated.
2924
2925         * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
2926         Updated.
2927
2928 2013-12-18  Werner Lemberg  <wl@gnu.org>
2929
2930         [autofit] s/ScriptMetrics/StyleMetrics/.
2931
2932 2013-12-18  Werner Lemberg  <wl@gnu.org>
2933
2934         [autofit] s/script_{metrics,hints}/style_{metrics,hints}/
2935
2936 2013-12-18  Werner Lemberg  <wl@gnu.org>
2937
2938         [autofit] s/gscripts/gstyles/.
2939
2940 2013-12-18  Werner Lemberg  <wl@gnu.org>
2941
2942         [autofit] s/glyph_scripts/glyph_styles/.
2943
2944         This is the first commit of a series to create a new top-level
2945         structure (a `style') for handling scripts, writing_systems, and
2946         soon-to-be-added coverages.
2947
2948 2013-12-17  Werner Lemberg  <wl@gnu.org>
2949
2950         [autofit] s/AF_Script_/AF_WritingSystem_/ where appropriate.
2951
2952 2013-12-11  Infinality  <infinality@infinality.net>
2953
2954         [truetype] Simplify logic of rendering modes.
2955
2956         This patch unifies the subpixel and non-subpixel cases.
2957
2958         * src/truetype/ttinterp.h (TT_ExecContextRec): Remove
2959         `grayscale_hinting'; all code should refer to `grayscale' instead.
2960         Remove unused `native_hinting' member.
2961         Rename `subpixel_hinting' member to `subpixel.
2962
2963         * src/truetype/ttgload.c (TT_LOADER_SET_PP): Updated.
2964         (tt_loader_init): Updated.
2965
2966         * src/truetype/ttinterp.c (Ins_GETINFO): Simplify.
2967         Updated.
2968
2969 2013-12-11  Werner Lemberg  <wl@gnu.org>
2970
2971         [documentation] Add section how to include FreeType header files.
2972         Problem reported by David Kastrup <dak@gnu.org>.
2973
2974         Surprisingly, a description how to do that was completely missing in
2975         the API reference.
2976
2977         * include/freetype.h, include/ftchapters.h: New documentation
2978         section `header_inclusion'.
2979
2980 2013-12-10  Werner Lemberg  <wl@gnu.org>
2981
2982         [autofit] s/DFLT/NONE/, s/dflt/none/.
2983
2984 2013-12-10  Werner Lemberg  <wl@gnu.org>
2985
2986         [autofit] s/AF_SCRIPT_NONE/AF_SCRIPT_UNASSIGNED/.
2987
2988 2013-12-10  Werner Lemberg  <wl@gnu.org>
2989
2990         [truetype] Fix scaling of vertical phantom points.
2991
2992         * src/truetype/ttgload.c (load_truetype_glyph): Scale pp3.x and
2993         pp4.x also.
2994
2995 2013-12-10  Werner Lemberg  <wl@gnu.org>
2996
2997         [truetype] Fix positioning of composite glyphs.
2998         Problem reported by Nigel Tao <nigeltao@golang.org>.
2999
3000         * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts
3001         the glyph (component) by a fractional value computed from the LSB
3002         phantom point.  This is wrong, since the horizontal phantom points
3003         get rounded horizontally later on.
3004
3005 2013-12-08  Werner Lemberg  <wl@gnu.org>
3006
3007         * Version 2.5.2 released.
3008         =========================
3009
3010
3011         Tag sources with `VER-2-5-2'.
3012
3013         * docs/VERSION.DLL: Update documentation and bump version number to
3014         2.5.2.
3015
3016         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
3017         builds/windows/vc2005/index.html,
3018         builds/windows/vc2008/freetype.vcproj,
3019         builds/windows/vc2008/index.html,
3020         builds/windows/vc2010/freetype.vcxproj,
3021         builds/windows/vc2010/index.html,
3022         builds/windows/visualc/freetype.dsp,
3023         builds/windows/visualc/freetype.vcproj,
3024         builds/windows/visualc/index.html,
3025         builds/windows/visualce/freetype.dsp,
3026         builds/windows/visualce/freetype.vcproj,
3027         builds/windows/visualce/index.html,
3028         builds/wince/vc2005-ce/freetype.vcproj,
3029         builds/wince/vc2005-ce/index.html,
3030         builds/wince/vc2008-ce/freetype.vcproj,
3031         builds/wince/vc2008-ce/index.html: s/2.5.1/2.5.2/, s/251/252/.
3032
3033         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
3034
3035         * builds/unix/configure.raw (version_info): Set to 17:1:11.
3036         * CMakeLists.txt (VERSION_PATCH): Set to 2.
3037         * docs/CHANGES: Updated.
3038
3039 2013-12-07  Werner Lemberg  <wl@gnu.org>
3040
3041         [truetype] Next round in phantom point handling.
3042
3043         Greg Hitchcock provided very interesting insights into the
3044         complicated history of the horizontal positions of the TSB and BSB
3045         phantom points.
3046
3047         * src/truetype/ttgload.c (TT_LOADER_SET_PP)
3048         [TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Use `subpixel_hinting' and
3049         `grayscale_hinting' flags as conditionals for the x position of TSB
3050         and BSB.
3051
3052 2013-12-05  Werner Lemberg  <wl@gnu.org>
3053
3054         * builds/freetype.mk (FT_CC): Removed.  Unused.
3055
3056 2013-12-04  Werner Lemberg  <wl@gnu.org>
3057
3058         [sfnt] Fix handling of embedded bitmap strikes.
3059
3060         This corrects the commit from 2013-11-21.  Problem reported by
3061         Andrey Panov <panov@canopus.iacp.dvo.ru>.
3062
3063         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to
3064         detect excessive bytes for bit-aligned bitmaps.
3065
3066 2013-12-03  Werner Lemberg  <wl@gnu.org>
3067
3068         [truetype] Remove dead code.
3069
3070         Reported by Nigel Tao <nigeltao@golang.org>.
3071
3072         * include/internal/tttypes.h (TT_LoaderRec): Remove unused
3073         `preserve_pps' field.
3074         * src/truetype/ttgload.c (TT_Hint_Glyph): Updated.
3075
3076 2013-12-03  Werner Lemberg  <wl@gnu.org>
3077
3078         [truetype] Fix phantom point handling.
3079
3080         This is a further improvement to the changes from 2013-11-06.
3081
3082         * src/truetype/ttgload.c (TT_Hint_Glyph): Horizontal phantom points
3083         are rounded horizontally, vertical ones are rounded vertically.
3084         (TT_LOADER_SET_PP): The horizontal position of vertical phantom
3085         points in pre-ClearType mode is zero, as shown in the OpenType
3086         specification.
3087
3088 2013-12-02  Werner Lemberg  <wl@gnu.org>
3089
3090         [truetype] Fix change from 2013-11-20.
3091
3092         Problem reported by Akira Kakuto <kakuto@fuk.kindai.ac.jp>.
3093
3094         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Protect call to
3095         `Update_Max' with both a TT_USE_BYTECODE_INTERPRETER guard and a
3096         `IS_HINTED' clause.
3097         Also remove redundant check using `maxSizeOfInstructions' â€“ in
3098         simple glyphs, the bytecode data comes before the outline data, and
3099         a validity test for this is already present.
3100
3101 2013-11-27  Werner Lemberg  <wl@gnu.org>
3102
3103         [autofit] Fix use of dumping functions in `ftgrid' demo program.
3104
3105         * src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro.
3106         (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
3107         af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to
3108         handle output to stdout.
3109         Use AF_DUMP.
3110         (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
3111         af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed.
3112
3113 2013-11-25  Werner Lemberg  <wl@gnu.org>
3114
3115         * Version 2.5.1 released.
3116         =========================
3117
3118
3119         Tag sources with `VER-2-5-1'.
3120
3121         * docs/VERSION.DLL: Update documentation and bump version number to
3122         2.5.1.
3123
3124         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
3125         builds/windows/vc2005/index.html,
3126         builds/windows/vc2008/freetype.vcproj,
3127         builds/windows/vc2008/index.html,
3128         builds/windows/vc2010/freetype.vcxproj,
3129         builds/windows/vc2010/index.html,
3130         builds/windows/visualc/freetype.dsp,
3131         builds/windows/visualc/freetype.vcproj,
3132         builds/windows/visualc/index.html,
3133         builds/windows/visualce/freetype.dsp,
3134         builds/windows/visualce/freetype.vcproj,
3135         builds/windows/visualce/index.html,
3136         builds/wince/vc2005-ce/freetype.vcproj,
3137         builds/wince/vc2005-ce/index.html,
3138         builds/wince/vc2008-ce/freetype.vcproj,
3139         builds/wince/vc2008-ce/index.html: s/2.5.0/2.5.1/, s/250/251/.
3140
3141         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
3142
3143         * builds/unix/configure.raw (version_info): Set to 17:0:11.
3144         * CMakeLists.txt (VERSION_PATCH): Set to 1.
3145         * docs/CHANGES, docs/release: Updated.
3146
3147 2013-11-23  Werner Lemberg  <wl@gnu.org>
3148
3149         [truetype]: Add tricky font names `hkscsiic.ttf' and `iicore.ttf'.
3150
3151         * src/truetype/ttobjs.c (TRICK_NAMES_MAX_CHARACTERS,
3152         TRICK_NAMES_COUNT): Updated.
3153         (trick_names): Add family name for the two fonts.
3154
3155 2013-11-23  Werner Lemberg  <wl@gnu.org>
3156
3157         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo.
3158
3159 2013-11-21  Werner Lemberg  <wl@gnu.org>
3160
3161         [sfnt] Typo.
3162
3163         Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
3164
3165         * src/sfnt/sfobjs.c (sfnt_load_face): Return correct `bsize->width'
3166         value if the font lacks an `OS/2' table.
3167
3168 2013-11-21  Werner Lemberg  <wl@gnu.org>
3169
3170         [sfnt] Improve handling of buggy embedded bitmap strikes.
3171
3172         We are now able to successfully load `AppleMyoungJo.ttf'.
3173         Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
3174
3175         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph
3176         format.
3177
3178 2013-11-20  Werner Lemberg  <wl@gnu.org>
3179
3180         [truetype] Don't trust `maxp's `maxSizeOfInstructions'.
3181
3182         Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>; see
3183
3184           https://lists.nongnu.org/archive/html/freetype-devel/2013-08/msg00005.html
3185
3186         for details.
3187
3188         * src/base/ftobjs.c (FT_Load_Glyph): Check size of `fpgm' and `prep'
3189         tables also for setting `autohint'.
3190
3191         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use code from
3192         `TT_Process_Composite_Glyph' for handling unreliable values of
3193         `maxSizeOfInstructions'.
3194
3195 2013-11-16  Werner Lemberg  <wl@gnu.org>
3196
3197         [sfnt] Fix `OS/2' table version 5 support.
3198
3199         We now follow the `official' announcement from Microsoft (on the
3200         OpenType mailing list, which unfortunately hasn't a public archive).
3201
3202         * include/freetype/tttables.h (TT_OS2):
3203         s/usLowerPointSize/usLowerOpticalPointSize/,
3204         s/usUpperPointSize/usUpperOpticalPointSize/.
3205
3206         * src/sfnt/ttload.c (tt_face_load_os2): Update, and set correct
3207         default values.
3208
3209 2013-11-13  Werner Lemberg  <wl@gnu.org>
3210
3211         * builds/unix/ft2unix.h: Remove.  No longer necessary.
3212
3213         * builds/unix/install.mk (install): Updated.
3214
3215 2013-11-13  Werner Lemberg  <wl@gnu.org>
3216
3217         Simplify header file hierarchy.
3218
3219         This large patch changes the header file directory layout from
3220         `include/freetype/...' to `include/...', effectively removing one
3221         level.  Since the file `ft2build.h' is also located in `include'
3222         (and it stays there even after installation), all FreeType header
3223         files are now in a single directory.
3224
3225         Applications that use (a) `freetype-config' or FreeType's
3226         `pkg-config' file to get the include directory for the compiler, and
3227         (b) the documented way for header inclusion like
3228
3229           #include <ft2build.h>
3230           #include FT_FREETYPE_H
3231           ...
3232
3233         don't need any change to the source code.
3234
3235         * include/freetype/*: Move up to...
3236         * include/*: ... this directory.
3237
3238         * builds/amiga/include/freetype/*: Move up to...
3239         * builds/amiga/include/*: ... this directory.
3240
3241         */*: Essentially do `s@/freetype/@/@' where appropriate.
3242
3243         * CMakeLists.txt: Simplify.
3244         * builds/unix/freetype-config.in, builds/unix/freetype2.in: For
3245         `--cflags', return a single directory.
3246         * builds/unix/install.mk (install): No longer try to remove `cache'
3247         and `internal' subdirectories; instead, remove the `freetype'
3248         subdirectory.
3249
3250 2013-11-12  Werner Lemberg  <wl@gnu.org>
3251
3252         [truetype] Fix last `truetype' commit.
3253
3254         * src/truetype/ttgload.c (tt_get_metrics): Preserve stream position.
3255         Return error value.
3256         (load_truetype_glyph): Updated.
3257
3258 2013-11-10  Werner Lemberg  <wl@gnu.org>
3259
3260         * docs/CMAKE: New dummy file.
3261
3262 2013-11-08  Dave Arnold  <darnold@adobe.com>
3263
3264         [cff] Fix for hints that touch.
3265
3266         * src/cff/cf2hints.c (cf2_hintmap_insertHint): Fix condition for
3267         finding index value of insertion point.
3268
3269 2013-11-06  Werner Lemberg  <wl@gnu.org>
3270
3271         [truetype] Fix handling of phantom points in composite glyphs.
3272         Problem reported by Nigel Tao <nigeltao@golang.org>.
3273
3274         This is a follow-up commit to the previous one.
3275
3276         * src/truetype/ttgload.c (load_truetype_glyph): Call
3277         `tt_get_metrics' after loading the glyph header.
3278
3279 2013-11-06  Werner Lemberg  <wl@gnu.org>
3280
3281         [truetype] Improve emulation of vertical metrics.
3282
3283         This commit also improves the start values of vertical phantom
3284         points.  Kudos to Greg Hitchcock for help.
3285
3286         * src/truetype/ttgload.c (TT_Get_VMetrics): Add parameter to pass
3287         `yMax' value.  Replace code with fixed Microsoft definition.
3288         (tt_get_metrics): Updated.
3289         (TT_LOADER_SET_PP): Add explanation how to initialize phantom
3290         points, taken from both the OpenType specification and private
3291         communication with Greg (which will eventually be added to the
3292         standard).
3293         Fix horizontal position of `pp3' and `pp4'.
3294
3295         * src/truetype/ttgload.h: Updated.
3296
3297         * src/truetype/ttdriver.c (tt_get_advances): Updated.
3298
3299         * docs/CHANGES: Updated.
3300
3301 2013-11-05  Werner Lemberg  <wl@gnu.org>
3302
3303         * builds/windows/vc2010/freetype.vcxproj: s/v110/v100/.
3304         PlatformToolSet version 110 is for VC2012.
3305
3306         Problem reported (with solution) by Dave Arnold <darnold@adobe.com>.
3307
3308 2013-11-05  Werner Lemberg  <wl@gnu.org>
3309
3310         [truetype] Correctly reset point tags for glyph components.
3311         Problem reported by Nigel Tao <nigeltao@golang.org>.
3312
3313         * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop.
3314
3315 2013-11-02  Werner Lemberg  <wl@gnu.org>
3316
3317         [truetype] Fix GETINFO opcode handling of subpixel hinting bits.
3318
3319         * src/truetype/ttinterp.c (Ins_GETINFO): Don't request bit 6 set to
3320         get info on subpixel hinting.
3321
3322         * docs/CHANGES: Updated.
3323
3324 2013-11-02  Werner Lemberg  <wl@gnu.org>
3325
3326         Fix Savannah bug #40451.
3327
3328         Simply apply the patch from the bug report.
3329
3330         * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
3331         include/freetype/config/ftconfig.h: The used #pragma directives only
3332         work with gcc versions 4.6 and higher.
3333
3334 2013-11-01  Werner Lemberg  <wl@gnu.org>
3335
3336         * docs/CHANGES: Updated.
3337
3338 2013-11-01  Werner Lemberg  <wl@gnu.org>
3339
3340         [truetype] Minor code refactoring.
3341
3342         Two benefits: The allocated FDEF (and IDEF) array gets slightly
3343         smaller, and the `ttdebug' demo program has access to function
3344         numbers without additional costs.
3345
3346         Fortunately, no changes to FontForge are necessary â€“ this is the
3347         only external TrueType debugger I know of, but others may exist and
3348         should check the code accordingly.
3349
3350         * src/truetype/ttinterp.h (TT_CallRec): Replace `Cur_Restart' and
3351         `Cur_End' with a pointer to the corresponding `TT_DefRecord'
3352         structure.
3353
3354         * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF, Ins_ENDF,
3355         Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns <Invalid_Opcode>):
3356         Updated.
3357
3358 2013-10-27  Werner Lemberg  <wl@gnu.org>
3359
3360         [sfnt] Implement support for `OS/2' table version 5.
3361
3362         See
3363
3364           http://typedrawers.com/discussion/470/new-microsoft-size-specific-design-selection-mechanism
3365
3366         for the announcement.
3367
3368         * include/freetype/tttables.h (TT_OS2): Add fields
3369         `usLowerPointSize' and `usUpperPointSize'.  Since FreeType returns
3370         this structure only as a pointer through `FT_Get_Sfnt_Table', there
3371         shouldn't be any ABI problems.
3372
3373         * src/sfnt/ttload.c (tt_face_load_os2): Implement it.
3374
3375         * docs/CHANGES: Updated.
3376
3377 2013-10-24  Werner Lemberg  <wl@gnu.org>
3378
3379         * README.git, docs/CHANGES, docs/INSTALL: Updated.
3380
3381 2013-10-24  John Cary  <cary@txcorp.com>
3382
3383         Provide cmake support.
3384
3385         * CMakeLists.txt: New file.
3386
3387 2013-10-23  Kenneth Miller  <kennethadammiller@yahoo.com>
3388             Werner Lemberg  <wl@gnu.org>
3389
3390         Provide support for x64 builds in Visual C++ project files.
3391
3392         * src/builds/win32: Renamed to...
3393         * src/builds/windows: This.
3394
3395         * src/builds/windows/vc2010/*: Updated to handle x64 target.
3396
3397         * src/builds/windows/*.mk, docs/INSTALL.GNU: s/win32/windows/ where
3398         appropriate.
3399
3400 2013-10-22  Werner Lemberg  <wl@gnu.org>
3401
3402         * src/base/md5.c, src/base/md5.h: Updated to recent version.
3403
3404         * src/base/ftobjs.c: Updated; `md5.c' no longer uses `free'.
3405
3406         The canonical URL to get updates for this file is
3407
3408           http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/
3409
3410         as the author told me in private communication.
3411
3412 2013-10-19  Werner Lemberg  <wl@gnu.org>
3413
3414         [autofit] s/SMALL_TOP/X_HEIGHT/.
3415
3416         * src/autofit/afblue.dat: Updated.
3417
3418         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3419
3420         * src/autofit/aflatin.c, src/autofit/aflatin.h,
3421         src/autofit/aflatin2.c: Updated.
3422
3423 2013-10-19  Werner Lemberg  <wl@gnu.org>
3424
3425         * src/autofit/afblue.dat: s/MINOR/DESCENDER/.
3426
3427         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3428
3429 2013-10-16  Werner Lemberg  <wl@gnu.org>
3430
3431         [autofit] Add description strings to script entries.
3432
3433         Currently, this is unused.
3434
3435         * src/autofit/afscript.h: Do it.
3436         * src/autofit/afglobal.c, src/autofit/afpic.c,
3437         src/autofit/aftypes.h: Updated.
3438
3439 2013-10-16  Werner Lemberg  <wl@gnu.org>
3440
3441         [autofit] Improve tracing message for extra light flag.
3442
3443         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it.
3444
3445 2013-10-15  Chongyu Zhu  <lembacon@gmail.com>
3446
3447         [arm] Fix thumb2 inline assembly under LLVM.
3448
3449         When using `ADD' with an immediate operand, the instruction is
3450         actually `ADD Rd, Rn, #<imm12>', that is, the maximum of the
3451         immediate operand cannot exceed 4095.  It will fail to compile with
3452         LLVM.
3453
3454         However, in GCC, due to some legacy compatibility considerations,
3455         `ADD.W' will be automatically emitted when the immediate operand is
3456         larger than 4095.
3457
3458         * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
3459         (FT_MulFix_arm) [__GNUC__]: Support clang compiler.
3460
3461         * src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto.
3462
3463 2013-10-12  Werner Lemberg  <wl@gnu.org>
3464
3465         [autofit] Improve tracing of `latin' hinter.
3466
3467         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue
3468         zone types.
3469         (af_latin_metrics_scale_dim): Report scaling changes due to x height
3470         alignment.
3471         Report scaled stroke width and blue zone values.
3472
3473 2013-10-03  Dave Arnold  <darnold@adobe.com>
3474
3475         * src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.
3476
3477         Note that the old code avoided using a region of the piecewise
3478         linear function where the slope was zero.  The recovery was to use a
3479         different section of the function, which produced a different,
3480         incorrect amount of darkening.
3481
3482 2013-10-02  Darrell Bellert  <darrell.bellert@hl.konicaminolta.us>
3483
3484         * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'.
3485
3486 2013-10-02  Dave Arnold  <darnold@adobe.com>
3487
3488         * src/cff/cf2font.c (cf2_computeDarkening): Initialize darkenAmount.
3489
3490         This line was lost in commit 89ca1fd6 (from 2013-06-25).  The effect
3491         is to use a previous darkening amount when producing an unhinted,
3492         unscaled outline.  This can cause autohint samples in ftgrid and
3493         ftview to be based on darkened CFF outlines instead of unhinted,
3494         undarkened ones.
3495
3496 2013-09-29  Dave Arnold  <darnold@adobe.com>
3497
3498         Fix Savannah bug #39295.
3499
3500         The bug was caused by switching to the initial hintmap (the one in
3501         effect when `moveto' executes) just before drawing the final element
3502         in the charstring.  This ensured that the path was closed (in both
3503         Character Space and Device Space).  But if the final element was a
3504         curve and if the final hintmap was different enough from the initial
3505         one, then the curve was visibly distorted.
3506
3507         The first part of the fix is to draw the final curve using the final
3508         hintmap as specified by the charstring.  This corrects the
3509         distortion but does not ensure closing in Device Space.  It may
3510         require the rasterizer to automatically generate an extra closing
3511         line.  Depending on the hintmap differences, this line could be from
3512         zero to a couple pixels in length.
3513
3514         The second part of the fix covers the case where the charstring
3515         subpath is closed with an explicit line.  We now modify that line's
3516         end point to avoid the distortion.
3517
3518         Some glyphs in the bug report font (TexGyreHeros-Regular) that show
3519         the change are:
3520
3521           25ppem    S (98)
3522           24ppem    eight (52)
3523           25.5ppem  p (85)
3524
3525         Curves at the *end* of a subpath are no longer distorted.  However,
3526         some of these glyphs have bad hint substitutions in the middle of a
3527         subpath, and these are not affected.
3528
3529         The patch has been tested with a set of 106 fonts that shipped with
3530         Adobe Creative Suite 4, together with 756 Open Source CFF fonts from
3531         Google Fonts.  There are 1.5 million glyphs, of which some 20k are
3532         changed with the fix.  A sampling of a few hundred of these changes
3533         have been examined more closely, and the changes look good (or at
3534         least acceptable).
3535
3536         * src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing'
3537         to indicate that we synthesize a closepath line.
3538
3539         * src/cff/cf2hints.c (cf2_glyphpath_init): Updated.
3540         (cf2_glyphpath_pushPrevElem): If closing, use first hint map (for
3541         `lineto' operator) and adjust hint zone.
3542         For synthesized closing lines, use end point in first hint zone.
3543         (cf2_glyphpath_lineTo): Take care of synthesized closing lines.  In
3544         particular, shift the detection of zero-length lines from character
3545         space to device space.
3546         (cf2_glyphpath_closeOpenPath): Remove assertion.
3547         Updated.
3548
3549 2013-09-25  Werner Lemberg  <wl@gnu.org>
3550
3551         * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays.
3552
3553 2013-09-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3554
3555         [bdf, pcf] Refuse non-zero face_index.
3556
3557         Suggested by Akira Tagoh, see
3558
3559           https://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html
3560
3561         * src/bdf/bdfdrivr.c (BDF_Face_Init): Return `Invalid_Argument'
3562         error if the font could be opened but non-zero `face_index' is
3563         given.
3564         * src/pcf/pcfdrivr.c (PCF_Face_Init): Ditto.
3565
3566         * src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED
3567         macro for `face_index' because it is validated later.
3568
3569 2013-09-23  Werner Lemberg  <wl@gnu.org>
3570
3571         Fix Savannah bug #40090.
3572
3573         * src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit
3574         306f8c5d (from 2013-08-25) affecting this function.
3575
3576 2013-09-22  Werner Lemberg  <wl@gnu.org>
3577
3578         [autofit] Disunify Cyrillic and Greek handling from Latin.
3579
3580         * src/autofit/afscript.h: Add Cyrillic and Greek.
3581
3582         * src/autofit/afblue.dat (AF_BLUE_STRINGSET_GREK,
3583         AF_BLUE_STRINGSET_CYRL): Add blue zones for Greek and Cyrillic.
3584         (AF_BLUE_STRINGSET_LATN): Fix typo.
3585         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3586
3587         * src/autofit/aflatin.c (af_grek_uniranges, af_cyrl_uniranges): New
3588         arrays.
3589         (af_grek_script_class, af_cyrl_script_class): New scripts.
3590         * src/autofit/aflatin.h: Updated.
3591
3592 2013-09-20  Werner Lemberg  <wl@gnu.org>
3593
3594         * docs/CHANGES: Updated.
3595
3596 2013-09-20  Behdad Esfahbod  <behdad@behdad.org>
3597
3598         Fix vertical size of emboldened glyphs.
3599
3600         Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709
3601
3602         * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY'
3603         also.
3604
3605 2013-09-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
3606
3607         * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation
3608         algorithm description.
3609
3610 2013-09-11  Werner Lemberg  <wl@gnu.org>
3611
3612         [autofit] Improve Hebrew rendering.
3613
3614         This change introduces a new blue zone property
3615         `AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short
3616         top segments.
3617
3618         * src/autofit/afblue.dat: Fix Hebrew blue strings.
3619         Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP.
3620
3621         * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro.
3622
3623         * src/autofit/afblue.c, src/autofit/afblue.h: Updated.
3624
3625         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle
3626         `AF_LATIN_IS_LONG_BLUE'.
3627
3628         * src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro.
3629
3630 2013-08-28  Behdad Esfahbod  <behdad@google.com>
3631
3632         [sfnt] Fix frame access while reading WOFF table directory.
3633
3634         * src/sfnt/sfobjs.c (woff_open_font): Using single memory frame
3635         while reading the directory entries for the whole loop.
3636
3637 2013-08-29  Werner Lemberg  <wl@gnu.org>
3638             Behdad Esfahbod  <behdad@google.com>
3639
3640         Implement support for WOFF containers.
3641
3642         We simply synthesize a SFNT from the WOFF, create a memory stream
3643         for the new data, and load the SFNT as usual.
3644
3645         Does NOT add any API to access WOFF metadata or private blocks.
3646
3647         * include/freetype/internal/tttypes.h (WOFF_HeaderRec,
3648         WOFF_TableRec): New structures.
3649
3650         * include/freetype/tttags.h (TTAG_wOFF): New macro.
3651
3652         * src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling
3653         `open_face'.
3654
3655         * src/sfnt/sfobjs.c [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Include
3656         `FT_GZIP_H'.
3657         (WRITE_BYTE, WRITE_USHORT, WRITE_ULONG): New temporary macros for
3658         writing to a stream.
3659         (sfnt_stream_close, compare_offsets, woff_open_font): New functions.
3660         (sfnt_open_font): Handle `TTAG_wOFF'.
3661         (sfnt_init_face): Set `stream' after calling `sfnt_open_font'.
3662
3663         * src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling
3664         `sfnt->init_face'.
3665
3666         * src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an
3667         argument so that a changed stream survives.
3668         Update callers.
3669
3670 2013-08-28  Werner Lemberg  <wl@gnu.org>
3671
3672         [gzip] New function `FT_Gzip_Uncompress'.
3673
3674         This is modeled after zlib's `uncompress' function.  We need this
3675         for WOFF support.
3676
3677         * include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress):
3678         New function.
3679
3680         * src/gzip/rules.mk: Rewrite to better reflect dependencies.
3681
3682 2013-08-28  Werner Lemberg  <wl@gnu.org>
3683
3684         [autofit] Fix `make multi' compilation.
3685
3686         * src/autofit/afblue.cin, src/autofit/afblue.c: Don't include
3687         `afblue.h' but `aftypes.h'.
3688         * src/autofit/afcjk.c: Don't include `aftypes.h' but `afglobal.h'.
3689
3690 2013-08-28  Werner Lemberg  <wl@gnu.org>
3691
3692         [autofit] Fix C++ compilation.
3693
3694         * src/autofit/afglobal.c (af_face_globals_get_metrics),
3695         src/autofit/afdummy.c (af_dflt_script_class), src/autofit/afindic.c
3696         (af_deva_script_class): Use proper casts.
3697
3698 2013-08-27  Behdad Esfahbod  <behdad@google.com>
3699
3700         * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos.
3701
3702 2013-08-27  Behdad Esfahbod  <behdad@google.com>
3703
3704         FT_Open_Face: Improve external stream handling.
3705
3706         If the font's `clazz->init_face' function wants to swap to new
3707         stream, handling of whether original stream was external could
3708         result to either memory leak or double free.  Mark externality into
3709         face flags before calling `init_face' such that the clazz can handle
3710         external streams properly.
3711
3712         * src/base/ftobjs.c (FT_Open_Face): Move code to set
3713         FT_FACE_FLAG_EXTERNAL_STREAM to...
3714         (open_face): This function.
3715
3716 2013-08-27  Werner Lemberg  <wl@gnu.org>
3717
3718         Remove `FT_SqrtFixed' function.
3719
3720         It's no longer used.
3721
3722         * include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it.
3723
3724 2013-08-27  Werner Lemberg  <wl@gnu.org>
3725
3726         [autofit] While tracing, report script names instead of ID values.
3727
3728         * src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]:
3729         New array.
3730         * src/autofit/afglobal.h: Updated.
3731
3732         * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
3733         af_cjk_hint_edges): Use `af_script_names'.
3734         * src/autofit/aflatin.c (af_latin_metrics_init_widths,
3735         af_latin_hint_edges): Ditto.
3736
3737 2013-08-26  Werner Lemberg  <wl@gnu.org>
3738
3739         [autofit] Report used script while hinting a glyph.
3740
3741         * src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c
3742         (af_latin_hint_edges): Implement it.
3743
3744 2013-08-26  Werner Lemberg  <wl@gnu.org>
3745
3746         [autofit] Add support for Hebrew script.
3747
3748         * src/autofit/afblue.dat: Add blue strings for Hebrew.
3749         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3750
3751         * src/autofit/aflatin.c (af_hebr_uniranges): New array.
3752         (af_hebr_script_class): New script.
3753         * src/autofit/aflatin.h, src/autofit/afscript.h: Updated.
3754
3755 2013-08-26  Werner Lemberg  <wl@gnu.org>
3756
3757         [autofit] Improve tracing messages.
3758
3759         * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Mention script
3760         ID in tracing message.
3761         (af_cjk_metrics_init_blues): Initialize `axis' outside of the inner
3762         loop.
3763         Improve tracing messages.
3764         (af_cjk_hint_edges) [FT_DEBUG_LEVEL_TRACE]: New variable
3765         `num_actions' to count hinting actions.
3766         Improve tracing messages.
3767
3768         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Mention
3769         script ID in tracing message.
3770         (af_latin_metrics_init_blues, af_latin_hint_edges): Improve tracing
3771         messages.
3772
3773 2013-08-26  Werner Lemberg  <wl@gnu.org>
3774
3775         Better tracing of loaded glyphs.
3776
3777         Previously, the loading of a glyph was traced at level 4, if at all.
3778         With this change, all font loading routines emit a tracing message
3779         at level 1, making it easier to select tracing output (for example
3780         using F2_DEBUG="any:1 afhints:7 aflatin:7").
3781
3782         * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Add tracing message.
3783         * src/cff/cffdrivr.c (cff_glyph_load): Ditto.
3784         * src/cff/cffgload.c (cff_decoder_prepare): Improve tracing
3785         messages.
3786         * src/cid/cidgload.c (cid_load_glyph): Use level 1 for tracing
3787         message.
3788         * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.
3789         * src/pfr/pfrobjs.c (pfr_slot_load): Add tracing message.
3790         * src/truetype/ttgload.c (TT_Load_Glyph): Ditto.
3791         * src/type1/t1gload.c (T1_Load_Glyph): Ditto.
3792         * src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto.
3793         * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
3794
3795 2013-08-26  Werner Lemberg  <wl@gnu.org>
3796
3797         [autofit] Fix script selection.
3798
3799         * src/autofit/afglobal.c (af_face_globals_get_metrics): Use
3800         `AF_SCRIPT_DFLT', not value 0.
3801         Simplify code.
3802
3803         * src/autofit/afscript.h: Sort by script name.
3804
3805 2013-08-26  Werner Lemberg  <wl@gnu.org>
3806
3807         [autofit] Make `dummy' hinter work as expected.
3808
3809         * src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling
3810         information.
3811         (af_dummy_hints_apply): Scale the glyphs.
3812
3813 2013-08-25  Werner Lemberg  <wl@gnu.org>
3814
3815         [autofit] Make `cjk' module use blue stringsets.
3816
3817         * src/autofit/afcjk.c (AF_CJK_MAX_TEST_CHARACTERS): Removed.
3818         (af_cjk_hani_blue_chars): Removed.
3819         (AF_CJK_BLUE_TYPE_*): Removed.
3820         (af_cjk_metrics_init_blues): Replace AF_CJK_MAX_TEST_CHARACTERS with
3821         AF_BLUE_STRING_MAX_LEN.
3822         Change loops to use offsets (in file `afblue.h') into the new arrays
3823         `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
3824         Instead of three dimensions (as used in the old blue string array)
3825         we now use properties to do the same, saving one loop nesting level.
3826
3827         * src/autofit/afcjk.h: Remove old enumeration values superseded by
3828         the new data in `afblue.h'.
3829         (AF_CJK_IS_TOP_BLUE, AF_CJK_IS_HORIZ_BLUE, AF_CJK_IS_FILLED_BLUE,
3830         AF_CJK_IS_RIGHT_BLUE): New macros, to be used in
3831         `af_cjk_metrics_init_blues'.
3832         (AF_CJK_BLUE_IS_RIGHT): Remove this now redundant enum value.
3833         (AF_CJK_BLUE_IS_TOP): Renamed to...
3834         (AF_CJK_BLUE_TOP): This.
3835         (AF_CJK_MAX_BLUES): Remove.
3836         (AF_CJKAxisRec): Updated.
3837
3838 2013-08-25  Werner Lemberg  <wl@gnu.org>
3839
3840         [autofit] Typo.
3841
3842         * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use
3843         cast.
3844
3845 2013-08-25  Werner Lemberg  <wl@gnu.org>
3846
3847         [autofit] Synchronize `cjk' with `latin' module (and vice versa).
3848
3849         * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Add tracing
3850         messages.
3851         (af_cjk_metrics_init_blues): Don't pass blue string array as
3852         argument but use the global array directly.
3853         Use `outline' directly.
3854         Update and add tracing messages.
3855         (af_cjk_metrics_init): Simplify code.
3856         (af_cjk_metrics_scale_dim): Improve tracing message.
3857         (af_cjk_metrics_scale): Synchronize.
3858
3859         * src/autofit/aflatin.c (af_latin_metrics_init_widths,
3860         af_latin_metrics_init_blues): Improve and add tracing messages.
3861
3862 2013-08-25  Werner Lemberg  <wl@gnu.org>
3863
3864         [autofit] Make `latin' module use blue stringsets.
3865
3866         * src/autofit/aflatin.c (AF_LATIN_MAX_TEST_CHARACTERS): Removed.
3867         (af_latin_blue_chars): Removed.
3868         (af_latin_metrics_init_blues): Replace AF_LATIN_MAX_TEST_CHARACTERS
3869         with AF_BLUE_STRING_MAX_LEN.
3870         Change loops to use offsets (in file `afblue.h') into the new arrays
3871         `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
3872         Use `AF_LATIN_IS_SMALL_TOP_BLUE' macro.
3873
3874         * src/autofit/aflatin.h: Remove old enumeration values superseded by
3875         the new data in `afblue.h'.
3876         (AF_LATIN_IS_TOP_BLUE): Updated definition.
3877         (AF_LATIN_IS_SMALL_TOP_BLUE): New macro.
3878         (AF_LATIN_MAX_BLUES): Remove.
3879         (AF_LatinAxisRec): Updated.
3880
3881 2013-08-25  Werner Lemberg  <wl@gnu.org>
3882
3883         [autofit] Add blue stringsets.
3884
3885         * src/autofit/aftypes.h: Include `afblue.h'.
3886         (AF_ScriptClassRec): Add `blue_stringset' field.
3887         (AF_DEFINE_SCRIPT_CLASS): Updated.
3888
3889         * src/autofit/autofit.c: Include `afblue.c'.
3890
3891         * src/autofit/afcjk.c (af_hani_script_class), src/autofit/afdummy.c
3892         (af_dflt_script_class), src/autofit/afindic.c
3893         (af_deva_script_class), src/autofit/aflatin.c
3894         (af_latn_script_class), src/autofit/aflatin2.c
3895         (af_ltn2_script_class): Updated.
3896
3897         * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'.
3898
3899 2013-08-25  Werner Lemberg  <wl@gnu.org>
3900
3901         [autofit] Introduce data file for blue strings.
3902
3903         The idea is to have a central file which gets processed by a Perl
3904         script to create proper `.c' and `.h' files using templates.  There
3905         are two other reasons to do that:
3906
3907           . The data file should be easily readable.  We use UTF-8 encoding
3908             which then gets converted to single bytes.
3909
3910           . Since the number of supported scripts will increase soon, the
3911             current usage of blue string arrays is a waste of space.  Using
3912             the Perl script it is possible to imitate jagged arrays,
3913             defining enumeration constants as offsets into the arrays.
3914
3915         This commit only adds files without changing any functionality.
3916
3917         * src/autofit/afblue.dat: New data file.
3918         * src/tools/afblue.pl: New Perl script for processing `afblue.dat'.
3919
3920         * src/autofit/afblue.cin, src/autofit/afblue.hin: New template files
3921         for...
3922         * src/autofit/afblue.c, src/autofit/afblue.c: New source files.
3923         To avoid a dependency on Perl, we add them too.
3924
3925 2013-08-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
3926
3927         [base] Enable new algorithm for `BBox_Cubic_Check'.
3928
3929         * src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove
3930         the old one.
3931         Improve comments.
3932
3933 2013-08-18  Werner Lemberg  <wl@gnu.org>
3934
3935         * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit.
3936
3937 2013-08-18  Werner Lemberg  <wl@gnu.org>
3938
3939         Fix Savannah bug #39804.
3940
3941         * builds/unix/configure.raw (LIBPNG): Define and export.
3942         * builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle
3943         libpng.
3944
3945 2013-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
3946
3947         [base] Clean up BBox_Conic_Check.
3948
3949         * src/base/ftbbox.c (BBox_Conic_Check): Remove redundant checks for
3950         extremum at the segment ends, which are already within the bbox.
3951         Slightly modify calculations.
3952
3953 2013-08-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
3954
3955         [base] Finish experimental (disabled) BBox_Cubic_Check implementation.
3956
3957         * src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve
3958         accuracy and avoid overflows.
3959
3960 2013-08-13  Alexei Podtelezhnikov  <apodtele@gmail.com>
3961
3962         [base] Refactor experimental (disabled) BBox_Cubic_Check.
3963
3964         * src/base/ftbbox.c (BBox_Cubic_Check): Implement the minimum search
3965         as the mirror image of the maximum search implemented here...
3966         (update_max): New function.
3967
3968 2013-08-06  John Tytgat  <John.Tytgat@esko.com>
3969
3970         Fix Savannah bug #39702.
3971
3972         * src/cff/cffload.c (cff_index_get_pointers): Check for `cur_offset
3973         != 0'; this stronger test is mandated by the CFF specification.
3974         Fix test for INDEX structures which have one or more empty entries
3975         at the end.
3976
3977 2013-08-05  Werner Lemberg  <wl@gnu.org>
3978
3979         Fix gcc pragmas, part 2.
3980
3981         * src/truetype/ttinterp.c (TT_MulFix14_long_long,
3982         TT_DotFix14_long_long): `#pragma gcc diagnostic {push,pop}' has been
3983         introduced with gcc version 4.6.
3984
3985 2013-08-05  Werner Lemberg  <wl@gnu.org>
3986
3987         Fix gcc pragmas.
3988
3989         * src/truetype/ttinterp.c (TT_MulFix14_long_long,
3990         TT_DotFix14_long_long): Older gcc versions don't accept diagnostic
3991         pragmas within a function body.
3992
3993 2013-08-05  Werner Lemberg  <wl@gnu.org>
3994
3995         Fix Savannah bug #39700.
3996
3997         * builds/unix/ftconfig.h: Synchronize with
3998         `include/freetype/config/ftconfig.h'.
3999
4000         * builds/vms/ftconfig.h: Ditto.
4001         Make the differences to the master `ftconfig.h' file as small as
4002         possible for easier maintenance.
4003
4004 2013-08-05  Werner Lemberg  <wl@gnu.org>
4005
4006         [autofit] Improve handling of `near' points.
4007
4008         Points which are very near to each other are now marked as such.
4009         The `weak' flag is then computed by using the `in' vector of the
4010         first and the `out' vector of the last point of a group of near
4011         points.
4012
4013         For example, this fixes the rendering of glyph `Oslash' in
4014         `Roboto-Thin.ttf'.
4015
4016         * src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'.
4017
4018         * src/autofit/afhints.c (af_glyph_hints_reload): Introduce
4019         the heuristic value `near_limit' to decide whether the current point
4020         is near to the previous one, then set `AF_FLAG_NEAR' accordingly.
4021         Store good `in' vector (of last non-near point) in
4022         `last_good_in_{x,y}' and use it as an argument to
4023         `ft_corner_is_flat' if necessary.
4024
4025 2013-08-02  Werner Lemberg  <wl@gnu.org>
4026
4027         * include/freetype/ftcffdrv.h: Improve documentation.
4028         This is based on blog entries from David Lemon and Dave Arnold (both
4029         from Adobe) with kind permission.  Dave also helped in
4030         proof-reading.
4031
4032 2013-08-02  Werner Lemberg  <wl@gnu.org>
4033
4034         [autofit] Move declaration of scripts into separate file.
4035
4036         This has the benefit that we don't need to duplicate the data at
4037         different places.
4038
4039         * src/autofit/afscript.h: New file.
4040
4041         * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define
4042         the enumeration values.
4043
4044         * src/autofit/afglobal.c: Include `afscript.h' to get the script
4045         specific header files.
4046         (af_script_classes): Include `afscript.h' to fill this array.
4047
4048         * src/autofit/afpic.c: Include `afscript.h' to get the script
4049         specific header files.
4050         (autofit_module_class_pic_init): Include `afscript.h' for
4051         initialization.
4052         * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT,
4053         AF_SCRIPT_CLASSES_REC_COUNT): Removed.  Use `AF_SCRIPT_MAX' instead.
4054
4055         * src/autofit/rules.mk (AUTOF_DRV_H): Updated.
4056
4057 2013-08-02  Werner Lemberg  <wl@gnu.org>
4058
4059         [autofit] Move declaration of writing systems into separate file.
4060
4061         This has the benefit that we don't need to duplicate the data at
4062         different places.
4063
4064         * src/autofit/afwrtsys.h: New file.
4065
4066         * src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to
4067         define the enumeration values.
4068
4069         * src/autofit/afglobal.c: Include `afwrtsys.h' to get the writing
4070         system specific header files.
4071         Include `afpic.h'.
4072         (af_writing_system_classes): Include `afwrtsys.h' to fill this
4073         array.
4074
4075         * src/autofit/afpic.c: Include `afwrtsys.h' to get the writing
4076         system specific header files.
4077         (autofit_module_class_pic_init): Include `afwrtsys.h' for
4078         initialization.
4079         * src/autofit/afpic.h (AF_WRITING_SYSTEM_CLASSES_COUNT,
4080         AF_WRITING_SYSTEM_CLASSES_REC_COUNT): Removed.  Use
4081         `AF_WRITING_SYSTEM_MAX' instead.
4082
4083 2013-08-02  Werner Lemberg  <wl@gnu.org>
4084
4085         [sfnt] Fix compilation with g++.
4086
4087         * src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use
4088         cast.
4089         (Load_SBit_Png): Pacify compiler.
4090
4091 2013-08-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4092             Werner Lemberg  <wl@gnu.org>
4093
4094         [autofit] Fix `make multi'.
4095
4096         * include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY,
4097         FT_LOCAL_ARRAY_DEF): New macros.
4098
4099         * src/autofit/afglobal.c (af_writing_system_classes,
4100         af_script_classes): Use FT_LOCAL_ARRAY_DEF.
4101         * src/autofit/afglobal.h: Declare `af_writing_system_classes' and
4102         `af_script_classes'.
4103         * src/autofit/afloader.c: Include `afpic.h'.
4104
4105 2013-08-01  Werner Lemberg  <wl@gnu.org>
4106
4107         Another round of cppcheck nitpicks.
4108
4109         The call was (from the top-level of the FreeType tree):
4110
4111           cppcheck --force \
4112                    --enable=all \
4113                    -I /usr/include \
4114                    -I /usr/local/include \
4115                    -I /usr/lib/gcc/i586-suse-linux/4.7/include \
4116                    -I include \
4117                    -I include/freetype \
4118                    -I include/freetype/config \
4119                    -I include/freetype/internal \
4120                    -DFT2_BUILD_LIBRARY \
4121                    . &> cppcheck.log
4122
4123         using cppcheck git commit f7e93f99.
4124
4125         Note that cppcheck still can't handle `#include FOO' (with `FOO' a
4126         macro).
4127
4128         */* Improve variable scopes.
4129         */* Remove redundant initializations which get overwritten.
4130
4131         * src/gxvalid/*: Comment out redundant code or guard it with
4132         FT_DEBUG_LEVEL_TRACE.
4133
4134 2013-07-30  Werner Lemberg  <wl@gnu.org>
4135
4136         [autofit] Introduce `writing systems'.
4137
4138         This patch adds a new top level to the auto-hinter's script class
4139         hierarchy.  It defines `writing systems' which can contain multiple
4140         scripts.
4141
4142         For example, the `latin' writing system (in file `aflatin.c') is
4143         able to support scripts like Latin, Cyrillic, Armenian, etc., which
4144         can be handled similarly.
4145
4146         Scripts are now named using four-letter OpenType tags.
4147
4148         * src/autofit/aftypes.h (AF_ScriptClassRec): Move relevant members
4149         to...
4150         (AF_WritingSystemClassRec): This new structure.  It holds pointers
4151         to functions which can be shared among related scripts.
4152         (AF_WritingSystem): New enumeration.
4153         (AF_Script): Revised values using four-letter tags.
4154         (AF_DEFINE_WRITING_SYSTEM_CLASS): New macro.
4155         (AF_DEFINE_SCRIPT_CLASS): Updated.
4156
4157         * src/autofit/afglobal.c (af_writing_system_classes): New global,
4158         constant array.
4159         (af_script_classes): Updated.
4160         (af_face_globals_free): Updated.
4161         Remove assertion.
4162         (af_face_globals_get_metrics): Updated.
4163
4164         * src/autofit/afglobal.h (AF_SCRIPT_FALLBACK)
4165         [!AF_CONFIG_OPTION_CJK]: Handle this case.
4166
4167         * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
4168         Updated.
4169
4170         * src/autofit/afpic.c (autofit_module_class_pic_init): Updated;
4171         initialize structures for both writing systems and scripts.
4172         * src/autofit/afpic.h: Updated.
4173         (AF_WRITING_SYSTEM_CLASSES_GET): New macro.
4174
4175         * src/autofit/afcjk.c (af_cjk_writing_system_class): New writing
4176         system.
4177         (af_cjk_uniranges): Renamed to...
4178         (af_hani_uniranges): This.
4179         (af_cjk_script_class): Reduced and renamed to...
4180         (af_hani_script_class): This.
4181         * src/autofit/afcjk.h: Updated.
4182
4183         * src/autofit/afdummy.c (af_dummy_writing_system_class): New writing
4184         system.
4185         (af_dummy_script_class): Reduced and renamed to...
4186         (af_dflt_script_class): This.
4187         * src/autofit/afdummy.h: Updated.
4188
4189         * src/autofit/afindic.c (af_indic_writing_system_class): New writing
4190         system.
4191         (af_indic_uniranges): Renamed to...
4192         (af_deva_uniranges): This.
4193         (af_indic_script_class): Reduced and renamed to...
4194         (af_deva_script_class): This.
4195         * src/autofit/afcjk.h: Updated.
4196
4197         * src/autofit/aflatin.c (af_latin_writing_system_class): New writing
4198         system.
4199         (af_latin_uniranges): Renamed to...
4200         (af_latn_uniranges): This.
4201         (af_latin_script_class): Reduced and renamed to...
4202         (af_latn_script_class): This.
4203         * src/autofit/aflatin.h: Updated.
4204
4205         * src/autofit/aflatin2.c (af_latin2_writing_system_class): New
4206         writing system.
4207         (af_latin2_uniranges): Renamed to...
4208         (af_ltn2_uniranges): This.
4209         Synchronize ranges with `latin'.
4210         (af_latin2_script_class): Reduced and renamed to...
4211         (af_ltn2_script_class): This.
4212         * src/autofit/aflatin2.h: Updated.
4213
4214 2013-07-30  Werner Lemberg  <wl@gnu.org>
4215
4216         [autofit] Variable renaming.
4217
4218         * src/autofit/aftypes.h (AF_ScriptMetricsRec):
4219         s/clazz/script_class/.
4220         Update all users.
4221
4222 2013-07-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4223
4224         Ignore libpng-config under cross-building configuration,
4225         because it will return the flags for the hosting environment.
4226
4227         * builds/unix/configure.raw: Ignore libpng-config when
4228         `cross_compiling' == yes.
4229
4230 2013-07-30  Behdad Esfahbod  <behdad@google.com>
4231
4232         Prevent division by zero by a transparent color.
4233
4234         * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra):
4235         Return 0 immediately, when alpha channel is zero.
4236
4237 2013-07-25  Behdad Esfahbod  <behdad@google.com>
4238
4239         Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR.
4240
4241         Also disambiguate Google's color bitmap tables.
4242
4243         * include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR):
4244         New macros.
4245
4246         * include/freetype/internal/tttypes.h (TT_SbitTableType): Add
4247         TT_SBIT_TABLE_TYPE_CBLC.
4248
4249         * src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR.
4250
4251         * src/sfnt/ttsbit.c (tt_face_load_sbit,
4252         tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle
4253         TT_SBIT_TABLE_TYPE_CBLC.
4254
4255 2013-07-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
4256
4257         [sfnt] Fix for `make multi' target.
4258
4259         * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF().
4260
4261 2013-07-20  Werner Lemberg  <wl@gnu.org>
4262
4263         * docs/INSTALL.GNU: Updated.
4264
4265 2013-07-20  Behdad Esfahbod  <behdad@google.com>
4266
4267         [sfnt] Fix `sbix' table version handling.
4268
4269         * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
4270         USHORT version numbers are to be considered as `minor'.
4271
4272 2013-07-19  Werner Lemberg  <wl@gnu.org>
4273
4274         [autofit] Fix segment classification for blue zones.
4275
4276         The old code (essentially unchanged since the very beginning)
4277         incorrectly handled this configuration
4278
4279                        x -o- x
4280                         /   \
4281                        /     \
4282                       /       \
4283                      o         o
4284
4285         as flat and this
4286
4287                         o               o
4288                        /               /
4289                      x|              x|
4290                       |               |
4291                       o---------------o
4292
4293         as round.  (`o' and `x' are on and off points, respectively).
4294
4295         This is a major change which should improve the rendering results
4296         enormously for many TrueType fonts, especially in the range approx.
4297         20-40ppem, fixing the appearance of many overshoots.
4298
4299         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Look at the
4300         first and last points of the segment, not the points right before
4301         and after.
4302
4303 2013-07-19  Behdad Esfahbod  <behdad@google.com>
4304
4305         [sfnt] `sbix' fix-ups.
4306
4307         * src/sfnt/sfobjs.c (sfnt_load_face): Apple's `sbix' color bitmaps
4308         are rendered scaled and then the `glyf' outline rendered on top.  We
4309         don't support that yet, so just ignore the `glyf' outline and
4310         advertise it as a bitmap-only font.
4311
4312         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
4313         [TT_SBIT_TABLE_TYPE_SBIX]: Return metrics in 26.6 units.
4314         (tt_face_load_sbix_image): Typo.
4315
4316 2013-07-18  Behdad Esfahbod  <behdad@google.com>
4317
4318         [sfnt] Add support for Apple's `sbix' color bitmap table.
4319
4320         * include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen
4321         fields to FT_Short and FT_UShort, respectively.
4322         (TT_SbitTableType): New enumeration.
4323         (TT_FaceRec): Add `sbit_table_type' field.
4324
4325         * include/freetype/tttags.h (TTAG_sbix): New macro.
4326
4327         * src/sfnt/pngshim.c (Load_SBit_Png): Pass a more generic
4328         FT_GlyphSlot argument instead FT_Bitmap.
4329         Add flag to control map and metrics handling.
4330         Update all users.
4331
4332         * src/sfnt/ttsbit.c: Include `ttmtx.h'.
4333         (tt_face_load_eblc): Renamed to...
4334         (tt_face_load_sbit): This.
4335         Handle `sbix' bitmaps.
4336         (tt_face_free_eblc): Renamed to...
4337         (tt_face_load_sbit): This.
4338         Updated.
4339         (tt_face_load_strike_metrics): Handle `sbix' bitmaps.
4340         (tt_face_load_sbix_image): New function.
4341         (tt_sbit_decoder_alloc_bitmap, tt_sbit_decoder_load_image,
4342         tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
4343         tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
4344         tt_sbit_decoder_load_image, tt_sbit_decoder_load_bitmap): Don't pass
4345         and handle load flags.
4346         (tt_sbit_decoder_load_bitmap) [!FT_CONFIG_OPTION_USE_PNG]: Better
4347         handle formats 17-19.
4348         Move color to grayscale conversion to...
4349         (tt_face_load_sbit_image): Here.
4350         Handle `sbix' bitmaps.
4351
4352         * src/sfnt/pngshim.h: Updated.
4353         * src/sfnt/ttsbit.h: Updated.
4354         * src/sfnt/sfdriver.c: Updated.
4355
4356 2013-07-18  Werner Lemberg  <wl@gnu.org>
4357
4358         [sfnt] Ignore invalid magic number in `head' or `bhed'.
4359
4360         Other font engines seem to ignore it also.  Problem reported by
4361         Hin-Tak Leung <htl10@users.sourceforge.net>.
4362
4363         * src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if
4364         we have an invalid magic number.
4365
4366 2013-07-16  Werner Lemberg  <wl@gnu.org>
4367
4368         [smooth] Fix segfault caused by previous commit.
4369
4370         * src/smooth/ftgrays.c (gray_set_cell): Always compute
4371         `ras.invalid'.
4372
4373 2013-07-16  David Turner  <digit@google.com>
4374
4375         [smooth] Improve performance.
4376
4377         Provide a work-around for an ARM-specific performance bug in GCC.
4378         This speeds up the rasterizer by more than 5%.
4379
4380         Also slightly optimize `set_gray_cell' and `gray_record_cell' (which
4381         also improves performance on other platforms by a tiny bit (<1%).
4382
4383         * src/smooth/ftgrays.c (FT_DIV_MOD): New macro.
4384         Use it where appropriate.
4385
4386         (gray_record_cell, gray_set_cell, gray_move_to,
4387         gray_convert_glyph_inner): Streamline condition handling.
4388
4389 2013-07-16  David Turner  <digit@google.com>
4390
4391         [truetype] Add assembler code for TT_MulFix14 and TT_DotFix14.
4392
4393         This patch provides slightly optimized versions for ARM, x86, and
4394         x86_64 CPUs if built with GCC.
4395
4396         Also remove some dead code.
4397
4398         * src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long,
4399         TT_DotFix14_long_long): New functions.
4400
4401 2013-07-16  David Turner  <digit@google.com>
4402
4403         Optimize FT_MulFix for x86_64 GCC builds.
4404
4405         This patch provides an optimized `FT_MulFix' implementation for
4406         x86_64 machines when FreeType is built with GCC, or compatible
4407         compilers like Clang.
4408
4409         Example:
4410           bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf
4411
4412         Before:
4413
4414           Load                       4.863 us/op
4415           Load_Advances (Normal)     4.816 us/op
4416           Load_Advances (Fast)       0.028 us/op
4417           Render                     2.753 us/op
4418           Get_Glyph                  0.463 us/op
4419           Get_CBox                   0.077 us/op
4420           Get_Char_Index             0.023 us/op
4421           Iterate CMap              13.898 us/op
4422           New_Face                  12.368 us/op
4423           Embolden                   0.028 us/op
4424           Get_BBox                   0.302 us/op
4425
4426         After:
4427
4428           Load                       4.617 us/op
4429           Load_Advances (Normal)     4.645 us/op
4430           Load_Advances (Fast)       0.027 us/op
4431           Render                     2.789 us/op
4432           Get_Glyph                  0.460 us/op
4433           Get_CBox                   0.077 us/op
4434           Get_Char_Index             0.024 us/op
4435           Iterate CMap              13.403 us/op
4436           New_Face                  12.278 us/op
4437           Embolden                   0.028 us/op
4438           Get_BBox                   0.301 us/op
4439
4440         * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
4441         (FT_MulFix_x86_64): New function.
4442
4443 2013-07-16  David Turner  <digit@google.com>
4444
4445         Speed up ARMv7 support.
4446
4447         When building for ARMv7 with thumb2 instructions, the optimized
4448         `FT_MulFix_arm' assembly routine was not being used.
4449
4450         The reason for this is in the `ftconfig.h' header, namely:
4451
4452         - The assembly routine uses the `smull' instruction which is not
4453           available when generating Thumb-1 machine code.  It is available
4454           in Thumb-2 mode, though.
4455
4456         - The header was written a long time ago before Thumb-2 became
4457           widely popular (e.g. with Android).  So it simply doesn't use the
4458           assembly routine if the `__thumb__' built-in macro is defined.
4459
4460         - When compiling in Thumb-2 mode, the compiler will define both
4461           `__thumb__' and `__thumb2__'.
4462
4463         By checking for `(__thumb2__ || !__thumb__)', we ensure that the
4464         assembly routine is only avoided when generating Thumb-1 code.
4465
4466         Given that this is performance-sensitive function, this improves
4467         `ftbench' as follows on a Galaxy Nexus:
4468
4469                                    Before (us/op)   After (us/op)
4470
4471           - loading Arial.ttf glyphs at 14 ppem [1]
4472
4473               Load                   34.285          33.098
4474
4475           - same operation with the light auto-hinter [2]
4476
4477               Load                   31.317          29.590
4478
4479           - same operation without hinting [3]
4480
4481               Load                    6.143           5.376
4482
4483           - loading Arial.ttf advances at 14 ppem [4]
4484
4485               Load_Advances (normal) 34.216          33.016
4486               Load_Advances (fast)    0.176           0.176
4487
4488           [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
4489           [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
4490           [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
4491           [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf
4492
4493         * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
4494         (FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.
4495
4496 2013-06-28  Werner Lemberg  <wl@gnu.org>
4497
4498         * docs/CHANGES: Updated.
4499
4500 2013-06-27  Werner Lemberg  <wl@gnu.org>
4501
4502         * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard.
4503
4504 2013-06-25  Werner Lemberg  <wl@gnu.org>
4505
4506         [cff] Add darkening limit to `darkening-parameters'.
4507
4508         * src/cff/cffdrivr.c (cff_property_set): Add check.
4509
4510 2013-06-25  Werner Lemberg  <wl@gnu.org>
4511
4512         [cff] Add `darkening-parameters' property.
4513
4514         * include/freetype/ftcffdrv.h: Document it.
4515
4516         * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
4517         `darkening-parameters' property.
4518
4519         * src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array.
4520
4521         * src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams'
4522         argument and use it.
4523         Update all callers.
4524
4525         * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy
4526         `darken_params' values.
4527
4528         * src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array.
4529
4530         * src/cff/cffobjs.c (cff_driver_init): Set default values for
4531         `darken_params'.
4532
4533 2013-06-25  Werner Lemberg  <wl@gnu.org>
4534
4535         [docmaker] Code shuffling.
4536
4537         * src/tools/docmaker/tohtml.py (re_url): Move regexp...
4538         * src/tools/docmaker/sources.py: ... to this file.
4539
4540 2013-06-25  Werner Lemberg  <wl@gnu.org>
4541
4542         [docmaker] Remove unused functions.
4543
4544         * src/tools/docmaker/content.py (DocMarkup.get_start,
4545         DocBlock.get_markup_name): Removed.
4546         * src/tools/docmaker/tohtml.py (html_quote0, dump_html_code,
4547         HtmlFormatter.make_html_words): Removed.
4548
4549 2013-06-25  Werner Lemberg  <wl@gnu.org>
4550
4551         * builds/freetype.mk (dll): Remove target.
4552
4553         Problem reported by Jörg Günnewig <joerg.guennewig@googlemail.com>.
4554
4555 2013-06-25  Werner Lemberg  <wl@gnu.org>
4556
4557         [docmaker] Recognise URLs.
4558
4559         * src/tools/docmaker/tohtml.py (re_url): New regular expression.
4560         (make_html_para): Use it.
4561
4562 2013-06-19  Werner Lemberg  <wl@gnu.org>
4563
4564         * Version 2.5.0.1 released.
4565         ===========================
4566
4567
4568         Tag sources with `VER-2-5-0-1'.
4569
4570         * include/freetype/config/ftoption.h: Undefine
4571         CFF_CONFIG_OPTION_OLD_ENGINE.
4572         * devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE.
4573
4574 2013-06-19  Werner Lemberg  <wl@gnu.org>
4575
4576         * builds/unix/install.mk (install): Don't create `cache' directory.
4577
4578         Found by Peter Breitenlohner <peb@mppmu.mpg.de>.
4579
4580 2013-06-19  Werner Lemberg  <wl@gnu.org>
4581
4582         * Version 2.5.0 released.
4583         =========================
4584
4585
4586         Tag sources with `VER-2-5-0'.
4587
4588         * docs/VERSION.DLL: Update documentation and bump version number to
4589         2.5.0.
4590
4591         * README, Jamfile (RefDoc),
4592         builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
4593         builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
4594         builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
4595         builds/win32/visualc/freetype.dsp,
4596         builds/win32/visualc/freetype.vcproj,
4597         builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
4598         builds/win32/visualce/freetype.vcproj,
4599         builds/win32/visualce/index.html,
4600         builds/wince/vc2005-ce/freetype.vcproj,
4601         builds/wince/vc2005-ce/index.html,
4602         builds/wince/vc2008-ce/freetype.vcproj,
4603         builds/wince/vc2008-ce/index.html: s/2.4.12/2.5.0/, s/2412/250/.
4604
4605         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 5.
4606         (FREETYPE_PATCH): Set to 0.
4607
4608         * builds/unix/configure.raw (version_info): Set to 16:2:10.
4609
4610         * src/base/ftobjs.c (FT_Open_Face): Pacify compiler.
4611         * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto.
4612
4613 2013-06-18  Werner Lemberg  <wl@gnu.org>
4614
4615         Fix Savannah bug #39269.
4616
4617         * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in
4618         case of reallocation failures.
4619
4620 2013-06-18  Andrew Church  <achurch+savannah@achurch.org>
4621
4622         Fix Savannah bug #39266.
4623
4624         If memory allocations fail at certain points while opening a font,
4625         FreeType can either crash due to a NULL dereference or leak memory.
4626
4627         * include/freetype/internal/ftobjs.c (FT_Face_InternalRec,
4628         FT_LibraryRec): Make `refcount' a signed integer.  If, for example,
4629         FT_Open_Face() fails in a memory allocation before the face's
4630         reference count is set to 1, a subsequent `FT_Done_Library' call
4631         would otherwise loop over `FT_Done_Face' 2^32 times before freeing
4632         the face.
4633
4634         * src/base/ftobjs.c (open_face): Initialize `stream' and friends
4635         earlier.
4636         (FT_Open_Face) <Fail>: Behave correctly if `node' is NULL.
4637         (FT_Destroy_Module) <Fail>: Check that `renderer_clazz' is valid.
4638
4639 2013-06-14  Werner Lemberg  <wl@gnu.org>
4640
4641         * src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC.
4642
4643 2013-06-06  Dave Arnold  <darnold@adobe.com>
4644             Werner Lemberg  <wl@gnu.org>
4645
4646         [cff] Add code to Adobe's engine to handle ppem > 2000.
4647
4648         * src/cff/cffgload.c (cff_slot_load): If we get
4649         FT_Err_Glyph_Too_Big, retry unhinted and scale up later on.
4650
4651 2013-06-12  Werner Lemberg  <wl@gnu.org>
4652
4653         Another try on pragmas.
4654
4655         * include/freetype/internal/ftdebug.h: Move pragmas to...
4656         * include/freetype/internal/internal.h: ... this file since it gets
4657         included by all source files.
4658         * include/freetype/internal/ftserv.h: Remove pragma which has no
4659         effect.
4660
4661 2013-06-12  Werner Lemberg  <wl@gnu.org>
4662
4663         * include/freetype/internal/ftdebug.h: Disable MSVC warning C4127.
4664
4665         This partially undoes commit 3f6e0e0c.
4666
4667 2013-06-12  Werner Lemberg  <wl@gnu.org>
4668
4669         More compiler warning fixes.
4670
4671         */*: Use cast to `FT_Bool' (or `Bool') where appropriate.
4672
4673 2013-06-10  Werner Lemberg  <wl@gnu.org>
4674
4675         [truetype] Improve handling of broken sbit advance widths.
4676
4677         * src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled)
4678         `linearHoriAdvance' if the sbit's `horiAdvance' value is zero.
4679
4680         Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem.
4681
4682 2013-06-10  Werner Lemberg  <wl@gnu.org>
4683
4684         [sfnt] Improve embedded bitmap tracing.
4685
4686         * src/base/ftobjs.c (FT_Request_Size): Move trace message regarding
4687         bitmap strike match to...
4688         (FT_Match_Size): This function.
4689
4690         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics,
4691         tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
4692         tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
4693         tt_sbit_decoder_load_image): Decorate with tracing messages.
4694
4695 2013-06-10  Werner Lemberg  <wl@gnu.org>
4696
4697         Fix Savannah bug #39160.
4698
4699         * src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too
4700         for the degenerate case.
4701
4702 2013-06-09  David Turner  <digit@google.com>
4703
4704         * src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush.
4705
4706         This code, present since eight(!) years in the unused `CACHE'
4707         branch, has been forgotten to apply to the master branch.  It's
4708         really amazing that noone has ever complained since
4709         `FTC_Manager_Reset' is pretty useless without flushing the cache.
4710
4711 2013-06-07  Werner Lemberg  <wl@gnu.org>
4712
4713         Add and improve pragmas for MSVC compiler.
4714
4715         * include/freetype/internal/ftdebug.h: Remove pragmas.
4716         * include/freetype/internal/ftserv.h: Use push and pop for pragmas.
4717         * include/freetype/internal/ftvalid.h: Handle warning C4324.
4718         * src/base/ftobjs.c: Use push and pop for pragmas.
4719         * src/gzip/ftgzip.c: Handle warning C4244.
4720
4721 2013-06-07  Werner Lemberg  <wl@gnu.org>
4722
4723         [cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/.
4724
4725         * src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it.
4726
4727 2013-06-06  Dave Arnold  <darnold@adobe.com>
4728
4729         [cff] Add early exit feature for width-only calls.
4730
4731         This is for `FT_Get_Advance'.
4732
4733         There are 7 places where the spec says the width can be defined:
4734
4735           hstem/hstemhm
4736           vstem/vstemhm
4737           cntrmask/hintmask
4738           hmoveto
4739           vmoveto
4740           rmoveto
4741           endchar
4742
4743         * src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls,
4744         if possible.
4745
4746         (cf2_interpT2CharString) <cf2_cmdHSTEM>, <cf2_cmdVSTEM>,
4747         <cf2_cmdVMOVETO>, <cf2_cmdENDCHAR>, <cf2_cmdHINTMASK>,
4748         <cf2_cmdRMOVETO>, <cf2_cmdHMOVETO>: Exit early for width-only calls.
4749
4750 2013-06-06  Werner Lemberg  <wl@gnu.org>
4751
4752         Next round of compiler fixes.
4753
4754         * builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init):
4755         Add proper cast.
4756
4757         * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix
4758         cast.
4759         * include/freetype/internal/ftstream.h: Decorate stream and frame
4760         macros with `FT_Long' and `FT_ULong' as appropriate.
4761
4762         * src/base/ftrfork.c (raccess_guess_darwin_hfsplus,
4763         raccess_guess_darwin_newvfs): Use cast.
4764
4765         * src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast.
4766
4767         * src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast.
4768         * src/cache/ftcmanag.h (FTC_ManagerRec): Ditto.
4769
4770         * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use cast.
4771         * src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto.
4772         * src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto.
4773
4774         * src/cid/cidparse.c (cid_parser_new): Use cast.
4775
4776         * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast.
4777
4778         * src/psaux/psobjs.c (reallocate_t1_table): Fix argument type.
4779
4780         * src/raster/ftraster.c (ft_black_reset): Use cast.
4781
4782         * src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast.
4783         (ALL_POINTS): Fix cast.
4784
4785         * src/type1/t1driver.c (t1_ps_get_font_value): Add casts.
4786         * src/type1/t1parse.c (T1_Get_Private_Dict): Add cast.
4787
4788 2013-06-05  Dave Arnold  <darnold@adobe.com>
4789
4790         Fix more MSVC Win32 compiler warnings.
4791
4792         * src/base/ftobjs.c: Fix typo in MS pragma.
4793
4794         * src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
4795         `lineno' is only used in debug mode.
4796
4797         * src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in
4798         debug mode.
4799
4800 2013-06-05  Werner Lemberg  <wl@gnu.org>
4801
4802         Fix compiler warnings.
4803
4804         * include/freetype/internal/ftmemory.h: Decorate memory allocation
4805         macros with `FT_Long' where appropriate.
4806         Remove duplicate of FT_MEM_QRENEW_ARRAY definition.
4807
4808         * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
4809         cast.
4810
4811         * src/base/ftobjs.c: Add warning disabling pragma for MSVC while
4812         including `md5.c'.
4813
4814         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdESC>: Add
4815         cast.
4816
4817         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts.
4818         (tt_sbit_decoder_load_bitmap): Beautification.
4819
4820         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize
4821         variables (earlier).
4822
4823         * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler.
4824
4825         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants
4826         where appropriate.
4827
4828         * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
4829
4830 2013-06-04  Werner Lemberg  <wl@gnu.org>
4831
4832         * src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'.
4833
4834         Problem reported by Ingmar Sittl <ingmar.sittl@elektrobit.com>.
4835
4836 2013-06-04  Werner Lemberg  <wl@gnu.org>
4837
4838         Apply fixes for cppcheck nitpicks.
4839
4840           http://cppcheck.sourceforge.net/
4841
4842         The call was (from the top-level of the FreeType tree):
4843
4844           cppcheck --force \
4845                    --enable=all \
4846                    -I include \
4847                    -I include/freetype/ \
4848                    -I include/freetype/config/ \
4849                    -I include/freetype/internal/ \
4850                    . &> cppcheck.log
4851
4852         Note that the current version heavily chokes on FreeType, delivering
4853         many wrong results.  I will report those issues to the cppcheck team
4854         so that a newer version gives improved results hopefully.
4855
4856         */* Improve variable scopes.
4857         */* Remove redundant initializations which get overwritten.
4858
4859         * src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable):
4860         Remove unused variable.
4861
4862         * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero.
4863
4864         * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate):
4865         Remove functionless code.
4866
4867         * src/tools/ftrandom.c (main): Fix memory leak.
4868
4869 2013-06-03  Werner Lemberg  <wl@gnu.org>
4870
4871         Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option.
4872
4873         This controls whether the old FreeType CFF engine gets compiled into
4874         FreeType.  It is now disabled by default.
4875
4876         * devel/ftoption.h, include/freetype/config/ftoption.h
4877         (CFF_CONFIG_OPTION_OLD_ENGINE): New macro.
4878
4879         * src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c
4880         (CFF_Operator, cff_argument_counts, cff_builder_add_point,
4881         cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load),
4882         src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use
4883         CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code.
4884
4885         * docs/CHANGES: Updated.
4886
4887 2013-06-02  Werner Lemberg  <wl@gnu.org>
4888
4889         Fix PNG library handling.
4890
4891         * builds/unix/configure.raw: Don't use LIBPNG_LIBS but
4892         LIBPNG_LDFLAGS.
4893
4894 2013-05-23  Behdad Esfahbod  <behdad@google.com>
4895
4896         Add support for color embedded bitmaps (eg. color emoji).
4897
4898         A new load flag, FT_LOAD_COLOR, makes FreeType load color
4899         embedded-bitmaps, following this draft specification
4900
4901           https://color-emoji.googlecode.com/git/specification/v1.html
4902
4903         which defines two new SFNT tables, `CBDT' and `CBLC' (named and
4904         modeled after `EBDT' and `EBLC', respectively).  The color bitmaps
4905         are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA
4906         pre-multiplied sRGB images.  If PNG support is available, PNG color
4907         images as defined in the same proposed specification are supported
4908         also.
4909
4910         Note that color bitmaps are converted to grayscale if client didn't
4911         ask for color.
4912
4913         * builds/unix/configure.raw: Search for libpng.
4914         Add `--without-png' option.
4915
4916         * devel/ftoption.h, include/freetype/config/ftoption.h
4917         (FT_CONFIG_OPTION_USE_PNG): New macro.
4918
4919         * include/freetype/freetype.h (FT_LOAD_COLOR): New load flag.
4920
4921         * include/freetype/ftimage.h (FT_Pixel_Mode): Add
4922         `FT_PIXEL_MODE_BGRA'.
4923
4924         * include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags.
4925
4926         * src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated.
4927         (ft_gray_for_premultiplied_srgb_bgra): New function.
4928         (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA.
4929
4930         * src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files.
4931
4932         * src/sfnt/sfnt.c: Include `pngshim.c'.
4933
4934         * src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h'
4935         (tt_face_load_eblc): Load `CBLC'.
4936         (tt_sbit_decoder_init): Load `CBDT'.
4937         (tt_sbit_decoder_alloc_bitmap): Pass load flags to select between
4938         color and grayscale bitmaps.
4939         Set `num_grays'.  This is used by `ftview' to choose the blending
4940         algorithm.
4941         (tt_sbit_decoder_load_byte_aligned,
4942         tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound,
4943         tt_sbit_decoder_load_image): Pass load flag.
4944         s/write/pwrite/.
4945         Don't call `tt_sbit_decoder_alloc_bitmap'.
4946         Updated.
4947         (tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function.
4948         (tt_sbit_decoder_load_bitmap): Pass load flag.
4949         Handle new glyph formats 17, 18, and 19.
4950         Call `tt_sbit_decoder_alloc_bitmap'.
4951         Flatten color bitmaps if necessary.
4952         (tt_face_load_sbit_image): Updated.
4953
4954         * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'.
4955
4956         * docs/CHANGES: Updated.
4957
4958 2013-05-24  Guenter  <info@gknw.net>
4959
4960         Apply Savannah patch #8055.
4961
4962         Make `apinames' create an import file for NetWare.
4963
4964         * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2.
4965         (OutputFormat): Add `OUTPUT_NETWARE_IMP'.
4966         (names_dump): Handle it.
4967         (usage): Updated.
4968         (main): Handle new command line flag `-wN'.
4969
4970 2013-05-23  Behdad Esfahbod  <behdad@behdad.org>
4971
4972         Compilation fix.
4973
4974         * src/truetype/ttinterp.c (TT_RunIns)
4975         [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work.
4976
4977 2013-05-22  Infinality  <infinality@infinality.net>
4978
4979         [truetype] Formatting and an additional subpixel tweak.
4980
4981         * src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix.
4982         * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules):
4983         Revert previous modification for Verdana clones.
4984
4985 2013-05-22  Infinality  <infinality@infinality.net>
4986
4987         [truetype] Adjust subpixel zp2 moves and tweak rules.
4988
4989         These modifications fix thin diagonal stems in some legacy fonts.
4990
4991         * src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro.
4992         (Move_Zp2_Point): Don't always disable x moves for subpixel rendering.
4993         (Ins_SHP): Disable x moves here for subpixel rendering.
4994         (Ins_SHPIX): Only disable x moves in compatibility mode.
4995         Split out zp2 move reversals and reorder conditional respectively.
4996
4997         * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight.
4998         Only adjust Verdana clones for 17 ppem.
4999         (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New.
5000         (ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'.
5001
5002 2013-05-20  Infinality  <infinality@infinality.net>
5003
5004         [truetype] Simplify and improve subpixel function detection.
5005
5006         Some small enhancements have allowed the removal of many macros and
5007         the simplification of existing rules in `ttsubpix.c'.
5008
5009         * src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX,
5010         SPH_TWEAK_ALLOW_X_MOVE_ZP2,
5011         SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES,
5012         SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed.
5013         (SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro.
5014
5015         * src/truetype/ttsubpix.c: Updated affected rules.
5016
5017         * src/truetype/ttinterp.c (Direct_Move_X): Updated.
5018         (INS_FDEF): Add additional function detection.
5019         (INS_ENDF): Set runtime flag.
5020         (Ins_CALL): Skip the call under certain conditions.
5021         Remove bad code.
5022         (Ins_LOOPCALL): Skip the call under certain conditions.
5023         Remove bad code.
5024         (Move_Zp2_Point): Updated.
5025         (Ins_SHPIX): Updated.
5026         Skip the move under some situations.
5027         (Ins_MIAP): Improve conditions.
5028         (Ins_MIRP): Updated.
5029         (Ins_DELTAP): Skip move under certain conditions.
5030         Simplify conditions.
5031         (TT_RunIns): Updated.
5032         Add code to handle new function detection.
5033         Trace messages.
5034
5035 2013-05-17  Werner Lemberg  <wl@gnu.org>
5036
5037         Update more FT_Err_XXX macros using FT_ERR and FT_THROW;
5038
5039         * builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c,
5040         builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it.
5041
5042 2013-05-15  Werner Lemberg  <wl@gnu.org>
5043
5044         [truetype] Add `interpreter-version' property.
5045
5046         This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable
5047         at runtime.
5048
5049         * include/freetype/ftttdrv.h: New file.
5050
5051         * include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New
5052         macro.
5053
5054         * src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H.
5055         (tt_property_set, tt_property_get): Fill templates.
5056
5057         * src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version'
5058         member.
5059         Remove unused `extension_component' member.
5060
5061         * src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H.
5062         (tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph,
5063         compute_glyph_metrics, tt_loader_init): Use `interpreter_version'.
5064
5065         * src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H.
5066         (SUBPIXEL_HINTING): New macro to check `interpreter_version' flag.
5067         Update all affected functions to use it.
5068         Use TT_INTERPRETER_VERSION_XXX where appropriate.
5069
5070         * src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H.
5071         (tt_driver_init): Initialize `interpreter_version'.
5072
5073         * src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H.
5074         Use TT_INTERPRETER_VERSION_XXX where appropriate.
5075
5076 2013-05-13  Werner Lemberg  <wl@gnu.org>
5077
5078         [truetype] Avoid empty source file.
5079
5080         * src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]:
5081         Provide dummy typedef.
5082
5083 2013-05-13  Werner Lemberg  <wl@gnu.org>
5084
5085         * src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable.
5086
5087         Fix suggested by Vaibhav Nagarnaik <vnagarnaik@gmail.com>.
5088
5089 2013-05-13  Brian Nixon  <bnixon@yahoo.com>
5090
5091         Fix Savannah bug #38970.
5092
5093         * src/base/ftdebug.c, builds/win32/ftdebug.c,
5094         builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c
5095         (ft_debug_init): Don't read past the environment variable FT2_DEBUG.
5096
5097 2013-05-12  Werner Lemberg  <wl@gnu.org>
5098
5099         [truetype] Add framework for TrueType properties.
5100
5101         * src/truetype/ttdriver.c: Include FT_SERVICE_PROPERTIES_H.
5102         (tt_property_set, tt_property_get): New functions, still empty.
5103         Define `tt_service_properties' service.
5104         Update `tt_services'.
5105
5106         * src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H.
5107         (TT_SERVICE_PROPERTIES_GET): New macro.
5108         (TTModulePIC): Add `tt_service_properties'.
5109
5110 2013-05-12  Werner Lemberg  <wl@gnu.org>
5111
5112         Fix Savannah bug #38967.
5113
5114         * src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast.
5115
5116 2013-05-12  Werner Lemberg  <wl@gnu.org>
5117
5118         Introduce unsigned 64bit type (if available).
5119
5120         * include/freetype/config/ftconfig.h: Define FT_UINT64 if available.
5121         [FT_LONG64]: Provide FT_UInt64.
5122
5123         * builds/unix/ftconfig.in: Synchronized.
5124
5125 2013-05-12  Werner Lemberg  <wl@gnu.org>
5126
5127         Fix Savannah bug #38968.
5128
5129         * include/freetype/ftmodapi.h: Add `FT_EXPORT' to
5130         FT_Property_{Set,Get}.
5131         * src/base/ftobjs.c: Add `FT_EXPORT_DEF' to
5132         FT_Property_{Set,Get}.
5133
5134 2013-05-10  Werner Lemberg  <wl@gnu.org>
5135
5136         [sfnt] Clean up bitmap code.
5137
5138         * src/sfnt/ttsbit.c: Deleted.
5139         * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'.
5140         * rules.mk (SFNT_DRV_H): Updated.
5141
5142 2013-05-10  Werner Lemberg  <wl@gnu.org>
5143
5144         */* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code.
5145
5146 ----------------------------------------------------------------------------
5147
5148 Copyright 2013-2018 by
5149 David Turner, Robert Wilhelm, and Werner Lemberg.
5150
5151 This file is part of the FreeType project, and may only be used, modified,
5152 and distributed under the terms of the FreeType project license,
5153 LICENSE.TXT.  By continuing to use, modify, or distribute this file you
5154 indicate that you have read the license and understand and accept it
5155 fully.
5156
5157
5158 Local Variables:
5159 version-control: never
5160 coding: utf-8
5161 End: