Sync with trunk r63343.
[reactos.git] / lib / 3rdparty / freetype / ChangeLog
1 2014-03-06 Werner Lemberg <wl@gnu.org>
2
3 * Version 2.5.3 released.
4 =========================
5
6
7 Tag sources with `VER-2-5-3'.
8
9 * docs/VERSION.DLL: Update documentation and bump version number to
10 2.5.3.
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.2/2.5.3/, s/252/253/.
28
29 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
30
31 * builds/unix/configure.raw (version_info): Set to 17:2:11.
32 * CMakeLists.txt (VERSION_PATCH): Set to 3.
33 * docs/CHANGES: Updated.
34
35 2014-03-06 Werner Lemberg <wl@gnu.org>
36
37 Fixes for compilation with C++.
38
39 * src/autofit/hbshim.c (scripts): Change type to `hb_script_t'.
40 (af_get_coverage): Updated.
41 (COVERAGE): Add cast.
42
43 2014-03-06 Sean McBride <sean@rogue-research.com>
44
45 Remove more clang analyzer warnings.
46
47 * src/bdf/bdflib.c (_bdf_readstream), src/truetype/ttgload.c
48 (TT_Load_Glyph): Remove dead stores.
49
50 2014-03-05 Werner Lemberg <wl@gnu.org>
51
52 * builds/unix/configure.raw: Simplify.
53
54 2014-03-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
55
56 Fix a bug in configure in library dependency setting
57 Reported in https://bugs.freedesktop.org/show_bug.cgi?id=75652.
58
59 * builds/unix/configure.raw: Use `x"${xxx}" != xno' style.
60
61 2014-03-04 Werner Lemberg <wl@gnu.org>
62
63 Minor fix for `make devel'.
64
65 * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Don't use
66 pkg-config for bzip2 since not all GNU/Linux distributions have
67 `bzip2.pc' (and the header file `bzlib.h' is located in /usr/include
68 normally).
69
70 2014-03-04 Sean McBride <sean@rogue-research.com>
71
72 Fix several clang static analyzer dead store warnings.
73
74 * src/autofit/afhints.c (af_glyph_hints_reload,
75 af_glyph_hints_align_weak_points): Remove unnecessary assignments.
76
77 * src/bdf/bdflib.c (bdf_font_load): Ditto.
78
79 * src/pshinter/pshalgo.c (psh_glyph_compute_extrema,
80 psh_glyph_interpolate_other_points): Ditto.
81
82 * src/type1/t1load.c (T1_Set_MM_Blend): Ditto.
83
84 2014-03-03 Werner Lemberg <wl@gnu.org>
85
86 Rewrite library option handling in `configure'.
87
88 o Introduce `auto' value for `--with-XXX' library options; this is
89 now the default.
90
91 o First use `pkg-config' for library detection, then fall back to
92 other tests.
93
94 * builds/unix/configure.raw (--with-zlib, --with-bzip2, --with-png,
95 --with-harfbuzz): Rewrite.
96 Use new `xxx_reqpriv', `xxx_libpriv', and `xxx_libstaticconf'
97 variables to collect data for `freetype2.pc' and `freetype-config'.
98 (FT2_EXTRA_LIBS): Renamed to ...
99 (ft2_extra_libs): This since it gets no longer substituted.
100 (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBS_CONFIG, LIBSSTATIC_CONFIG):
101 New output variables, replacing `XXX_PKG' and `LIBXXX'.
102 Add notice at the end of `configure' showing the library
103 configuration.
104
105 * builds/unix/freetype-config.in (--static): New command line
106 option.
107 (libs): Updated.
108 (staticlibs): New variable, to be used if `--static' is given.
109 * builds/doc/freetype-config.1: Document `--static'.
110
111 * builds/unix/freetype2.in, builds/unix/unix-def.in: Updated.
112
113 2014-03-01 Werner Lemberg <wl@gnu.org>
114
115 Avoid `long long' warnings with older gcc compilers.
116 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
117
118 * builds/unix/configure.raw: Don't use gcc's `-pedantic' flag for
119 versions < 4.6. This is especially needed for Max OS X since this
120 OS runs a gcc variant (or emulation) based on version 4.2.1.
121
122 2014-03-01 Werner Lemberg <wl@gnu.org>
123
124 * docs/INSTALL.CROSS: Revised and updated.
125
126 2014-03-01 Werner Lemberg <wl@gnu.org>
127
128 Make `make clean' remove `freetype2.pc'.
129
130 This is a generated file at build time, not configure time.
131
132 * builds/unix/unix-def.in (DISTCLEAN): Move `freetype2.pc' to ...
133 (CLEAN): This variable.
134
135 2014-03-01 Werner Lemberg <wl@gnu.org>
136
137 Use pkg-config for detecting libpng and libbz2 also.
138
139 * builds/unix/configure.raw (HAVE_PKG): New variable.
140 Search for libbz2 using `pkg-config'; s/BZ2/BZIP2/.
141 Search for libpng using `pkg-config'.
142 Fix definition of `LIBHARFBUZZ' variable.
143 * builds/unix/freetype-config.in ($libs): Updated.
144 * builds/unix/freetype2.in: Add `URL' field.
145 Update `Requires.private' and `Libs.private'.
146 * builds/unix/unix-def.in: Updated.
147
148 2014-03-01 Werner Lemberg <wl@gnu.org>
149
150 Add configure support for HarfBuzz.
151
152 * builds/unix/pkg.m4: New file.
153 * builds/unix/configure.raw: Search for libharfbuzz using
154 `pkg-config'.
155 Add `--without-harfbuzz' option.
156 * builds/unix/freetype-config.in, builds/unix/freetype2.in,
157 builds/unix/unix-def.in (freetype-config, freetype2.pc): Handle
158 HarfBuzz.
159
160 * docs/INSTALL.UNIX: Document interdependency of Freetype with
161 HarfBuzz.
162
163 2014-02-28 Alexei Podtelezhnikov <apodtele@gmail.com>
164
165 [cff] Math simplifications.
166
167 * src/cf2blues.c (cf2_blues_init): Use `FT_MulDiv'.
168 * src/cf2ft.c (cf2_getScaleAndHintFlag): Use simple division.
169
170 2014-02-28 Dave Arnold <darnold@adobe.com>
171
172 [cff] Fix Savannah bug #41697, part 2.
173
174 * src/cff/cf2ft.c (cf2_initLocalRegionBuffer,
175 cf2_initGlobalRegionBuffer): It is possible for a charstring to call
176 a subroutine if no subroutines exist. This is an error but should
177 not trigger an assert. Split the assert to account for this.
178
179 2014-02-28 Dave Arnold <darnold@adobe.com>
180
181 [cff] Fix Savannah bug #41697, part 1.
182
183 * src/cff/cf2hints.c (cf2_hintmap_build): Return when `hintMask' is
184 invalid. In this case, it is not safe to use the length of
185 `hStemHintArray'; the exception has already been recorded in
186 `hintMask'.
187
188 2014-02-26 Werner Lemberg <wl@gnu.org>
189
190 [sfnt] Fix Savannah bug #41696.
191
192 * src/sfnt/ttcmap.c (tt_cmap0_validate, tt_cmap2_validate,
193 tt_cmap4_validate, tt_cmap14_validate): Fix limit tests.
194
195 2014-02-26 Werner Lemberg <wl@gnu.org>
196
197 [winfnt] Fix Savannah bug #41694.
198
199 * src/winfonts/winfnt.c (FNT_Load_Glyph): Check glyph offset.
200
201 2014-02-26 Werner Lemberg <wl@gnu.org>
202
203 [cff] Fix Savannah bug #41693.
204
205 * src/cff/cffload.c (CFF_Load_FD_Select): Reject empty array.
206
207 2014-02-26 Werner Lemberg <wl@gnu.org>
208
209 [bdf] Fix Savannah bug #41692.
210
211 bdflib puts data from the input stream into a buffer in chunks of
212 1024 bytes. The data itself gets then parsed line by line, simply
213 increasing the current pointer into the buffer; if the search for
214 the final newline character exceeds the buffer size, more data gets
215 read.
216
217 However, in case the current line's end is very near to the buffer
218 end, and the keyword to compare with is longer than the current
219 line's length, an out-of-bounds read might happen since `memcmp'
220 doesn't stop properly at the string end.
221
222 * src/bdf/bdflib.c: s/ft_memcmp/ft_strncmp/ to make comparisons
223 stop at string ends.
224
225 2014-02-17 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
226
227 [autofit] Fix `make multi' compilation.
228
229 * src/autofit/hbshim.c: Include `afglobal.h' and `aftypes.h'.
230
231 2014-02-19 Werner Lemberg <wl@gnu.org>
232 Simon Bünzli <zeniko@gmail.com>
233
234 Fix Savannah bug #32902.
235
236 Patch taken from
237
238 https://code.google.com/p/sumatrapdf/source/browse/trunk/ext/_patches/freetype2.patch?spec=svn8620&r=8620#87
239
240 with slight modifications.
241
242 * src/type1/t1parse.c (T1_Get_Private_Dict): Add heuristic test to
243 handle fonts that incorrectly use \r at the beginning of an eexec
244 block.
245
246 2014-02-19 Simon Bünzli <zeniko@gmail.com>
247
248 Fix Savannah bug #41590.
249
250 * src/type1/t1load.c (parse_encoding): Protect against invalid
251 number.
252
253 2014-02-12 Dave Arnold <darnold@adobe.com>
254
255 [cff] Optimize by using `FT_MulDiv'.
256 Suggested by Alexei.
257
258 * src/cff/cf2font.c (cf2_computeDarkening): Do it.
259
260 2014-02-12 Werner Lemberg <wl@gnu.org>
261
262 Fix Savannah bug #41465.
263
264 * builds/unix/unix-def.in (CLEAN): Add `freetype-config'.
265 (DISTCLEAN): Remove `freetype-config'.
266
267 2014-02-08 Sean McBride <sean@rogue-research.com>
268
269 Fix clang static analyzer and compiler warnings.
270
271 * src/autofit/afhints.c (af_glyph_hints_align_weak_points),
272 src/autofit/afloader (af_loader_load_g) <FT_GLYPH_FORMAT_COMPOSITE>,
273 src/base/ftcalc.c (FT_MSB), src/base/ftoutln.c
274 (FT_Outline_Decompose), src/bdf/bdfdrivr.c (bdf_interpret_style),
275 src/cff/cffparse.c (cff_parse_integer), src/cid/cidparse.c
276 (cid_parser_new), src/pfr/pfrload.c (pfr_phy_font_load),
277 src/raster/ftraster.c (Decompose_Curve), src/sfnt/sfdriver.c
278 (sfnt_get_ps_name), src/sfnt/ttcmap.c (tt_cmap12_next,
279 tt_cmap13_next), src/smooth/ftgrays.c (gray_hline): Remove dead
280 code.
281
282 * src/autofit/afmodule.c (af_property_get_face_globals,
283 af_property_set, af_property_get), src/base/ftbitmap.c
284 (ft_gray_for_premultiplied_srgb_bgra): Make functions static.
285
286 * src/base/ftobjs.c (ft_remove_renderer): Protect against
287 library == NULL.
288 (ft_property_do): Make function static.
289
290 * src/base/ftrfork.c: Include `ftbase.h'.
291
292 * src/sfnt/ttsbit.c (tt_face_load_sbix_image)
293 [!FT_CONFIG_OPTION_USE_PNG], src/type1/t1gload.c
294 (T1_Compute_Max_Advance): Avoid compiler warning.
295
296 * src/truetype/ttinterp.c (TT_New_Context): Reduce scope of
297 variable.
298
299 2014-02-08 Werner Lemberg <wl@gnu.org>
300
301 Fix Windows build directories.
302
303 The build target is now `windows' instead of `win32'.
304
305 Problem reported by Nickolas George <darknova.clan@gmail.com>.
306
307 * builds/modules.mk: Don't use `win32' and `win16' (!) but
308 `windows'.
309
310 * builds/windows/detect.mk, builds/windows/win32-def.mk:
311 s/win32/windows/.
312
313 2014-02-08 Eugen Sawin <esawin@mozilla.com>
314
315 Fix Savannah bug #41507.
316
317 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap)
318 [!FT_CONFIG_OPTION_USE_PNG] <17, 17, 19>: Fix error handling.
319
320 2014-02-08 Dave Arnold <darnold@adobe.com>
321
322 [cff] Fix minor performance bug.
323
324 * src/cff/cf2font.c (cf2_font_setup): Darkening amount and blue zone
325 calculations are now cached and not recomputed on each glyph.
326
327 2014-02-05 Werner Lemberg <wl@gnu.org>
328
329 Fix problems with perl 5.8.8 as distributed with current MinGW.
330
331 * src/tools/afblue.pl: Work-around for Perl bug #63402.
332 (string_re): Avoid `possessive quantifiers', which have been
333 introduced in Perl version 5.10.
334
335 2014-02-04 Werner Lemberg <wl@gnu.org>
336
337 Fix compilation with MinGW.
338
339 Right now, compilation out of the box with latest MinGW is broken
340 due to bugs in header files of mingwrt 4.0.3 in strict ANSI mode,
341 cf.
342
343 https://sourceforge.net/p/mingw/bugs/2024/
344 https://sourceforge.net/p/mingw/bugs/2046/
345
346 * builds/unix/configure.raw: Don't set `-ansi' flag for MinGW.
347
348 2014-02-04 Werner Lemberg <wl@gnu.org>
349
350 [autofit] Minor fix.
351
352 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
353 src/autofit/aflatin.c (af_latin_metrics_init_widths): Fix handling
354 of alternative standard characters.
355 This also fixes a compilation warning in non-debug mode.
356
357 2014-02-03 Werner Lemberg <wl@gnu.org>
358
359 [cff] Fix Savannah bug #41363.
360
361 * src/cff/cf2ft.c (cf2_checkTransform): Convert assertion into
362 parameter check.
363 (cf2_decoder_parse_charstrings): Call `cf2_checkTransform' only if
364 we are scaling the outline.
365 (cf2_getPpemY): Remove problematic assertion.
366
367 2014-01-26 Werner Lemberg <wl@gnu.org>
368
369 [autofit] Introduce two more slots for standard characters.
370
371 This is useful for OpenType features like `c2sc' (caps to small
372 caps) that don't have lowercase letters by definition, or other
373 features that mainly operate on numerals.
374
375 * src/autofit/afscript.h: Add more standard characters.
376
377 * src/autofit/aftypes.h: Update use of `SCRIPT' macro.
378 (AF_ScriptClassRec): Add members to hold two more standard
379 characters.
380 (AF_DEFINE_SCRIPT_CLASS): Updated.
381
382 * src/autofit/afglobal.c, src/autofit/afglobal.h,
383 * src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/hbshim.c:
384 Update use of `SCRIPT' macro.
385
386 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
387 src/autofit/aflatin.c (af_latin_metrics_init_widths): Scan two more
388 standard characters.
389
390 2014-01-24 Werner Lemberg <wl@gnu.org>
391
392 Fix Savannah bug #41320.
393
394 * src/autofit/aflatin.c (af_latin_metrics_init_blues)
395 <AF_LATIN_IS_LONG_BLUE>: Avoid negative index of `last'.
396
397 2014-01-23 Werner Lemberg <wl@gnu.org>
398
399 Fix Savannah bug #41310.
400
401 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) <glyph_format==5>:
402 Don't check metrics, which this format doesn't have.
403 This is another correction to the commit from 2013-11-21.
404
405 2014-01-23 Werner Lemberg <wl@gnu.org>
406
407 Fix Savannah bug #41309.
408
409 * src/type1/t1load.c (t1_parse_font_matrix): Properly handle result
410 of `T1_ToFixedArray'.
411
412 * src/cid/cidload.c (cid_parse_font_matrix): Synchronize with
413 `t1_parse_font_matrix'.
414
415 * src/type42/t42parse.c (t42_parse_font_matrix): Synchronize with
416 `t1_parse_font_matrix'.
417 (t42_parse_encoding): Synchronize with `t1_parse_encoding'.
418
419 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_BBOX>,
420 <T1_FIELD_TYPE_MMOX>: Properly handle result of `ps_tofixedarray'.
421
422 2014-01-22 Werner Lemberg <wl@gnu.org>
423
424 * src/autofit/hbshim.c (af_get_coverage): Fix memory leaks.
425
426 2014-01-16 Werner Lemberg <wl@gnu.org>
427
428 [autofit] Improve tracing of style coverages.
429
430 * include/internal/fttrace.h: Add `afglobal' for tracing style
431 coverages.
432
433 * src/autofit/afglobal.c: Include FT_INTERNAL_DEBUG_H.
434 (FT_COMPONENT): Define.
435 (af_face_globals_compute_style_coverage): Trace `gstyles' array
436 data.
437
438 2014-01-09 Werner Lemberg <wl@gnu.org>
439
440 Fix Savannah bug #41158.
441
442 * builds/unix/install.mk (install): Create man page directory.
443
444 2014-01-08 Chongyu Zhu <lembacon@gmail.com>
445
446 [arm] Fix Savannah bug #41138, part 2.
447
448 * builds/unix/ftconfig.in (FT_MulFix_arm), include/config/ftconfig.h
449 (FT_MulFix_arm), src/truetype/ttinterp.c (TT_MulFix14_arm): Fix
450 preprocessor conditionals for `add.w'.
451
452 2014-01-08 Werner Lemberg <wl@gnu.org>
453
454 [autofit] Fix Savannah bug #41138, part 1.
455
456 * src/tools/afblue.pl <Handling #endif>: Produce correct auxiliary
457 enumeration names for generated `#else'.
458
459 * src/autofit/afblue.h: Regenerated.
460
461 2014-01-06 Werner Lemberg <wl@gnu.org>
462
463 Add manual page for `freetype-config'.
464 Contributed by Nis Martensen <nis.martensen@web.de>.
465
466 * docs/freetype-config.1: New file.
467
468 * builds/unix/unix-def.in (mandir): Define.
469 * builds/unix/install.mk (install, uninstall): Handle manpage.
470
471 2014-01-05 Werner Lemberg <wl@gnu.org>
472
473 [autofit] Minor fixes for `afblue.pl'.
474
475 * src/tools/afblue.pl (aux_name): Don't use `reverse'.
476 <Handling #endif>: Use proper indentation for generated `#else'.
477
478 * src/autofit/afblue.h: Regenerated.
479
480 2014-01-04 Werner Lemberg <wl@gnu.org>
481
482 [autofit] Fix Indic scripts.
483
484 Split the single, incorrect Indic entry into separate scripts so
485 that the covered ranges are the same: Bengali, Devanagari, Gujarati,
486 Gurmukhi, Kannada, Limbu, Malayalam, Oriya, Sinhala, Sundanese,
487 Syloti Nagri, Tamil, Telugu, and Tibetan. At the same time, remove
488 entries for Meetai Mayak and Sharada – the Unicode ranges were
489 incorrect (and nobody has complained about that), fonts are scarce
490 for those scripts, and the Indic auto-hinter support is rudimentary
491 anyways.
492
493 * src/autofit/afscript.h: Updated, using AF_CONFIG_OPTION_INDIC and
494 AF_CONFIG_OPTION_CJK.
495
496 * src/autofit/afstyles.h (STYLE_DEFAULT_INDIC): New auxiliary macro.
497 Use it, together with AF_CONFIG_OPTION_INDIC and
498 AF_CONFIG_OPTION_CJK, to update.
499
500 * src/autofit/afranges.c [AF_CONFIG_OPTION_INDIC]: Updated.
501 [!AF_CONFIG_OPTION_INDIC, !AF_CONFIG_OPTION_CJK]: Removed.
502 Sort entries by tags.
503
504 2014-01-03 Werner Lemberg <wl@gnu.org>
505
506 [autofit] Thinko.
507
508 * src/autofit/hbshim.c (af_get_char_index): Similar to
509 `af_get_coverage', reject glyphs which are not substituted.
510
511 2014-01-03 Werner Lemberg <wl@gnu.org>
512
513 [autofit] Fix handling of default coverages.
514
515 With this commit, the implementation of coverage handling is
516 completed.
517
518 * src/autofit/hbshim.c (af_get_coverage): Exit early if nothing to
519 do.
520 Reject coverages which don't contain appropriate glyphs for blue
521 zones.
522
523 2014-01-03 Werner Lemberg <wl@gnu.org>
524
525 [autofit] Fix handling of default coverages.
526
527 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
528 First handle non-default coverages, then the default coverage of the
529 default script, and finally the other default coverages.
530
531 2014-01-03 Werner Lemberg <wl@gnu.org>
532
533 [autofit] Fix scaling of HarfBuzz shaping.
534
535 * src/autofit/hbshim.c (af_get_char_index): Scale to units per EM.
536
537 2014-01-03 Werner Lemberg <wl@gnu.org>
538
539 [autofit] Better ftgrid support.
540
541 * src/autofit/afhints.c (af_glyph_hints_get_segment_offset): Add
542 parameters `is_blue' and `blue_offset'.
543
544 2014-01-01 Werner Lemberg <wl@gnu.org>
545
546 [autofit] Remove some styles.
547
548 * src/autofit/afcover.h: Remove coverages for alternative fractions,
549 denominators, numerators, and fractions.
550
551 * src/autofit/afstyles.h (META_STYLE_LATIN): Updated.
552
553 2014-01-01 Werner Lemberg <wl@gnu.org>
554
555 [autofit] Add more styles.
556
557 * src/autofit/afstyles.h (STYLE_LATIN, META_STYLE_LATIN): New
558 auxiliary macros; use them to define styles for Cyrillic, Greek, and
559 Latin.
560
561 * src/autofit/afcover.h: Remove coverage for oldstyle figures.
562 Since those digits are used in combination with ordinary letters, it
563 makes no sense to handle them separately.
564
565 * src/autofit/afglobal.c (af_face_globals_get_metrics): Don't limit
566 `options' parameter to 4 bits.
567
568 2014-01-01 Werner Lemberg <wl@gnu.org>
569
570 [autofit] Fix style assignments to glyphs.
571
572 * src/autofit/hbshim.c (af_get_coverage)
573 [FT_CONFIG_OPTION_USE_HARFBUZZ]: Scan GPOS coverage of features also
574 so that we can skip glyphs that have both GSUB and GPOS data.
575
576 2014-01-01 Werner Lemberg <wl@gnu.org>
577
578 * src/autofit/hbshim.c: s/{lookups,glyphs}/gsub_{lookups,glyphs}/.
579
580 2014-01-01 Werner Lemberg <wl@gnu.org>
581
582 [autofit] Implement and use `af_get_char_index' with HarfBuzz.
583
584 * src/autofit/hbshim.c (COVERAGE) [FT_CONFIG_OPTION_USE_HARFBUZZ]:
585 Redefine to construct HarfBuzz features.
586 (af_get_char_index) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Rewritten.
587
588 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Use
589 `y_offset' to adjust `best_y'.
590
591 2013-12-31 Werner Lemberg <wl@gnu.org>
592
593 [autofit] s/AF_STYLE_...._DEFAULT/AF_STYLE_...._DFLT/i.
594
595 2013-12-31 Werner Lemberg <wl@gnu.org>
596
597 [autofit] Fix interface of `af_get_char_index'.
598
599 * src/autofit/hbshim.c (af_get_char_index): Return error value.
600 Add argument for y offset (to be used in a yet-to-come patch).
601
602 * src/autofit/hbshim.h, src/autofit/afcjk.c,
603 src/autofit/aflatin.c: Updated.
604
605 2013-12-30 Werner Lemberg <wl@gnu.org>
606
607 [autofit] Don't combine multiple features into one set.
608
609 Combining them, as originally envisioned, would lead to much more
610 complicated code, as investigations have shown meanwhile. The major
611 drawback is that we run out of available style slots much earlier.
612 However, this is only a theoretical issue since we don't support a
613 large number of scripts currently.
614
615 * src/autofit/afcover.h: Replace `COVERAGE_{1,2,3}' macros with
616 a single-element `COVERAGE' macro, sort the elements by the feature
617 tags, and add entry for `ruby'.
618
619 * src/autofit/aftypes.h: Updated.
620 * src/autofit/hbshim.c: Updated.
621
622 2013-12-28 Werner Lemberg <wl@gnu.org>
623
624 [autofit] Code shuffling to reduce use of cpp macros.
625
626 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
627 Call `af_get_coverage' unconditionally.
628
629 * src/autofit/autofit.c: Include `hbshim.c' unconditionally.
630
631 * src/autofit/hbshim.c (af_get_coverage)
632 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Provide dummy function.
633
634 * src/autofit/hbshim.h: Provide function declarations
635 unconditionally.
636
637 2013-12-28 Werner Lemberg <wl@gnu.org>
638
639 [autofit] Add wrapper function for `FT_Get_Char_Index'.
640
641 Yet-to-come changes will provide HarfBuzz functionality for the new
642 function.
643
644 * src/autofit/hbshim.c (af_get_char_index): New function.
645 * src/autofit/hbshim.h: Updated.
646
647 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
648 af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
649
650 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
651 af_latin_metrics_init_blues, af_latin_metrics_check_digits):
652 Updated.
653
654 2013-12-28 Werner Lemberg <wl@gnu.org>
655
656 [autofit] Use `global' HarfBuzz font object.
657
658 We now use `hb_font' instead of `hb_face' since yet-to-come changes
659 need this.
660
661 * src/autofit/afglobal.h: Include `hbshim.h'.
662 (AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member
663 `hb_font'.
664
665 * src/autofit/afglobal.c (af_face_globals_new)
666 [FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'.
667 (af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy
668 `hb_font'.
669
670 * src/autofit/hbshim.h: Include HarfBuzz headers.
671
672 * src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz
673 headers.
674 (af_get_coverage): Updated.
675
676 2013-12-27 Werner Lemberg <wl@gnu.org>
677
678 [autofit] Handle `DFLT' OpenType script for coverages.
679
680 * include/ftautoh.h: Document new `default-script' property.
681
682 * src/autofit/hbshim.c (af_get_coverage): Use `AF_FaceGlobals' for
683 type of first parameter.
684 (script_tags): Add one more element.
685 (af_get_coverage): Adjust `script_tags' to handle `DFLT' script tag.
686
687 * src/autofit/hbshim.h: Updated.
688
689 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
690 Updated.
691
692 * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT): New macro.
693
694 * src/autofit/afmodule.h (AF_ModuleRec): New `default_script'
695 member.
696
697 * src/autofit/afmodule.c (af_property_set, af_property_get): Handle
698 `default-script' property.
699 (af_autofitter_init): Updated.
700
701 2013-12-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
702
703 [ftrfork] Fix the face order difference between POSIX and Carbon.
704
705 The fragmented resources in Suitcase and .dfont should be reordered
706 when `POST' resource for Type1 is being restored, but reordering of
707 sfnt resources induces the different face order. Now the ordering
708 is restricted to `POST' resource only, to prevent the different
709 order issue (e.g. the face index in the fontconfig cache generated
710 with Carbon framework is incompatible with that by FreeType 2
711 without Carbon framework.) Found by Khaled Hosny and Hin-Tak Leung.
712
713 http://lists.gnu.org/archive/html/freetype-devel/2013-02/msg00035.html
714 http://lists.gnu.org/archive/html/freetype-devel/2013-12/msg00027.html
715
716 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Add a switch
717 `sort_by_res_id' to control the fragmented resource ordering.
718 * include/internal/ftrfork.h: Declare new switch.
719 * src/base/ftobjs.c (IsMacResource): Enable the sorting for `POST'
720 resource, and disable the sorting for `sfnt' resource.
721
722 2013-12-25 Werner Lemberg <wl@gnu.org>
723
724 Fix Savannah bug #40997.
725
726 * src/bdf/bdfdrivr.c (BDF_Face_Init): Only use OR operator to
727 adjust face flags since FT_FACE_FLAG_EXTERNAL_STREAM might already
728 be set.
729 * src/cff/cffobjs.c (cff_face_init): Ditto.
730 * src/cid/cidobjs.c (cid_face_init): Ditto.
731 * src/pcf/pcfread.c (pcf_load_font): Ditto.
732 * src/pfr/pfrobjs.c (pfr_face_init): Ditto.
733 * src/type1/t1objs.c (T1_Face_Init): Ditto.
734 * src/type42/t42objs.c (T42_Face_Init): Ditto.
735 * src/winfonts/winfnt.c (FNT_Face_Init): Ditto.
736
737 2013-12-21 Werner Lemberg <wl@gnu.org>
738
739 [autofit] Introduce `coverages'.
740
741 Coverages are the interface to the HarfBuzz library to acces
742 OpenType features for handling glyphs not addressable by the cmap.
743
744 Right now, compilation of HarfBuzz is only added to the development
745 build. A solution for standard build mode will be delayed until
746 HarfBuzz gets split into two libraries to avoid mutual dependencies
747 between FreeType and HarfBuzz.
748
749 Note that this is only a first step in handling coverages, basically
750 providing the framework only. Code for handling selected OpenType
751 features (this is, actually using the data in `afcover.h') will
752 follow.
753
754 * devel/ftoption.h, include/config/ftoption.h
755 (FT_CONFIG_OPTION_USE_HARFBUZZ): New macro.
756
757 * src/autofit/hbshim.c, src/autofit/hbshim.h, src/autofit/afcover.h:
758 New files.
759
760 * src/autofit/afscript.h: Add HarfBuzz script name tags.
761
762 * src/autofit/afstyles.h: Add default coverage enumeration values.
763
764 * src/autofit/aftypes.h: Update use of `SCRIPT' and `STYLE' macros.
765 (AF_Coverage): New enumeration (generated by `afcover.h').
766 (AF_StyleClassRec): New member `coverage'.
767 (AF_DEFINE_STYLE_CLASS): Updated.
768
769 * include/internal/fttrace.h: Add `afharfbuzz' for tracing coverage
770 data.
771
772 * src/autofit/afglobal.h: Update use of `SCRIPT' and `STYLE' macros.
773 (AF_SCRIPT_FALLBACK): Renamed to ...
774 (AF_STYLE_FALLBACK): ... this.
775
776 * src/autofit/afglobal.c: Include `hbshim.c'.
777 Update use of `SCRIPT' and `STYLE' macros.
778 (af_face_globals_compute_style_coverage)
779 [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call `af_get_coverage'.
780 Update.
781
782 * src/autofit/afmodule.h (AF_ModuleRec):
783 s/fallback_script/fallback_style/.
784
785 * src/autofit/afmodule.c (af_property_set): Adapt handling of
786 `fallback-script' property to set a fallback style.
787 (af_property_get, af_autofitter_init): Updated.
788
789 * src/autofit/afpic.c: Update use of `SCRIPT' and `STYLE' macros.
790
791 * src/autofit/afranges.h: Update use of `SCRIPT' macro.
792
793 * src/autofit/autofit.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include
794 `hbshim.c'.
795
796 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `hbshim.c'.
797 (AUTOF_DRV_H): Add `afcover.h'.
798
799 * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Use pkg-config for
800 all libraries needed by FreeType.
801
802 2013-12-21 Werner Lemberg <wl@gnu.org>
803
804 Fix Savannah bug #40975 (sort of).
805
806 * src/truetype/ttinterp.c (Ins_IP): Fix sign typo to make FreeType
807 behave the same as the Windows TrueType engine for the invalid case.
808
809 2013-12-21 Werner Lemberg <wl@gnu.org>
810
811 [autofit] Make PIC mode work actually.
812
813 * src/autofit/afpic.h (AFModulePIC): Fix array sizes to fit the
814 enumeration values automatically generated by including `afscript.h'
815 and friends.
816
817 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
818
819 2013-12-21 Werner Lemberg <wl@gnu.org>
820
821 Fix PIC linking.
822
823 * include/internal/ftrfork.h (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Fix
824 generated function name.
825
826 * src/base/basepic.c (FT_Init_Table_raccess_guess_table): Rename
827 to ...
828 (FT_Init_Table_ft_raccess_guess_table): ... this so that the
829 function name correctly corresponds to what the macro framework
830 expects.
831
832 * src/psnames/rules.mk (PSNAMES_DRV_SRC_S): Use correct file name so
833 that PIC functions are compiled also.
834
835 2013-12-21 Werner Lemberg <wl@gnu.org>
836
837 [base] Add missing dependencies to Makefile.
838
839 * src/base/rules.mk (BASE_SRC): Add `basepic.c' and `ftpic.c'.
840 (BASE_H): Add `basepic.h'.
841
842 2013-12-20 Werner Lemberg <wl@gnu.org>
843
844 [autofit] Fix PIC compilation.
845
846 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
847 src/autofit/aflatin.c (af_latin_metrics_init_widths)
848 [FT_CONFIG_OPTION_PIC]: Declare `globals'.
849
850 * src/autofit/afglobal.c: Always call AF_DEFINE_SCRIPT_CLASS, and
851 AF_DEFINE_STYLE_CLASS.
852
853 * src/autofit/afpic.c: Include `afglobal.h'.
854 (autofit_module_class_pic_init): Typo.
855
856 * src/autofit/aftypes.h (AF_DEFINE_SCRIPT_CLASS,
857 AF_DEFINE_STYLE_CLASS): Don't use the same identifier for macro
858 parameter and structure member.
859
860 2013-12-20 Werner Lemberg <wl@gnu.org>
861
862 [autofit] Introduce `styles'.
863
864 This is the new top-level structure for handling glyph input data;
865 scripts are now defined separately.
866
867 * src/autofit/aftypes.h (SCRIPT): Updated.
868 (AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
869 members to ...
870 (AF_Style_ClassRec): ... this new structure.
871 (AF_Style): New enumeration.
872 (AF_StyleMetricsRec): Replace `script' enumeration with
873 `style_class' pointer.
874 (AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
875 (AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
876
877 * src/autofit/afstyles.h: New file, using data from `afscript.h'.
878 * src/autofit/afscript.h: Updated.
879
880 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
881 af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
882
883 * src/autofit/afglobal.c (SCRIPT): Updated.
884 (STYLE): Redefine macro to load `afstyles.h'.
885 (af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
886 (af_style_names): ... this array.
887 (af_face_globals_compute_script_coverage): Renamed to...
888 (af_face_globals_compute_style_coverage): ... this.
889 Updated.
890 (af_face_globals_new, af_face_globals_free,
891 af_face_globals_get_metrics): Updated.
892
893 * src/autofit/afglobal.h (SCRIPT): Updated.
894 (STYLE): Redefine macro to load `afstyles.h'.
895 (AF_SCRIPT_FALLBACK): Update definition. This will get more
896 refinements with later on.
897 (AF_SCRIPT_UNASSIGNED): Replace with...
898 (AF_STYLE_UNASSIGNED): ... this macro.
899 (AF_FaceGlobalsRec): Updated.
900
901 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
902 af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
903 af_latin_hint_edges): Updated.
904
905 * src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
906 (af_ltn2_uniranges): Removed.
907
908 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
909 Updated.
910
911 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
912 * src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
913 (AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
914 members.
915
916 * src/autofit/afranges.h: Updated.
917
918 * src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
919
920 2013-12-19 Werner Lemberg <wl@gnu.org>
921
922 [autofit] Factor scripts and uniranges out of writing system files.
923
924 * src/autofit/afranges.c, src/autofit/afranges.h: New files.
925
926 * src/autofit/afscript.h: Extend `SCRIPT' macro with more
927 parameters, taking data from the writing system files.
928
929 * src/autofit/aftypes.h: Updated.
930
931 * src/autofit/afglobal.c: Include `afranges.h'.
932 Load `afscript.h' to call AF_DEFINE_SCRIPT_CLASS.
933 * src/autofit/afglobal.c: Include `afranges.h'.
934 Load `afscript.h' to call AF_DECLARE_SCRIPT_CLASS.
935
936 * src/autofit/afcjk.c, src/autofit/afcjk.h: Updated.
937 * src/autofit/afdummy.c, src/autofit/afdummy.h: Updated.
938 * src/autofit/afindic.c, src/autofit/afindic.h: Updated.
939 * src/autofit/aflatin.c, src/autofit/aflatin.h: Updated.
940 * src/autofit/aflatn2.c, src/autofit/aflatn2.h: Updated.
941
942 * src/autofit/afpic.c: Updated.
943
944 * src/autofir/autofit.c: Include `afranges.c'.
945 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afranges.c'.
946
947 2013-12-18 Werner Lemberg <wl@gnu.org>
948
949 [autofit] More code orthogonality.
950
951 * src/autofit/aftypes.h (AF_StyleMetrics): Replace `script_class'
952 pointer to an `AF_ScriptClass' structure with `script' index of type
953 `AF_Script'.
954 Move some code around.
955
956 * src/autofit/afcjk.c: Include `afpic.h'.
957 (af_cjk_metrics_init_widths, af_cjk_metrics_init_blues,
958 af_cjk_hint_edges): Updated.
959
960 * src/autofit/aflatin.c: Include `afpic.h'.
961 (af_latin_metrics_init_widths, af_latin_metrics_init_blues,
962 af_latin_metrics_scale_dim, af_latin_hint_edges): Updated.
963
964 * src/autofit/afglobal.c (af_face_globals_get_metrics): Updated.
965
966 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
967 Updated.
968
969 2013-12-18 Werner Lemberg <wl@gnu.org>
970
971 [autofit] s/ScriptMetrics/StyleMetrics/.
972
973 2013-12-18 Werner Lemberg <wl@gnu.org>
974
975 [autofit] s/script_{metrics,hints}/style_{metrics,hints}/
976
977 2013-12-18 Werner Lemberg <wl@gnu.org>
978
979 [autofit] s/gscripts/gstyles/.
980
981 2013-12-18 Werner Lemberg <wl@gnu.org>
982
983 [autofit] s/glyph_scripts/glyph_styles/.
984
985 This is the first commit of a series to create a new top-level
986 structure (a `style') for handling scripts, writing_systems, and
987 soon-to-be-added coverages.
988
989 2013-12-17 Werner Lemberg <wl@gnu.org>
990
991 [autofit] s/AF_Script_/AF_WritingSystem_/ where appropriate.
992
993 2013-12-11 Infinality <infinality@infinality.net>
994
995 [truetype] Simplify logic of rendering modes.
996
997 This patch unifies the subpixel and non-subpixel cases.
998
999 * src/truetype/ttinterp.h (TT_ExecContextRec): Remove
1000 `grayscale_hinting'; all code should refer to `grayscale' instead.
1001 Remove unused `native_hinting' member.
1002 Rename `subpixel_hinting' member to `subpixel.
1003
1004 * src/truetype/ttgload.c (TT_LOADER_SET_PP): Updated.
1005 (tt_loader_init): Updated.
1006
1007 * src/truetype/ttinterp.c (Ins_GETINFO): Simplify.
1008 Updated.
1009
1010 2013-12-11 Werner Lemberg <wl@gnu.org>
1011
1012 [documentation] Add section how to include FreeType header files.
1013 Problem reported by David Kastrup <dak@gnu.org>.
1014
1015 Surprisingly, a description how to do that was completely missing in
1016 the API reference.
1017
1018 * include/freetype.h, include/ftchapters.h: New documentation
1019 section `header_inclusion'.
1020
1021 2013-12-10 Werner Lemberg <wl@gnu.org>
1022
1023 [autofit] s/DFLT/NONE/, s/dflt/none/.
1024
1025 2013-12-10 Werner Lemberg <wl@gnu.org>
1026
1027 [autofit] s/AF_SCRIPT_NONE/AF_SCRIPT_UNASSIGNED/.
1028
1029 2013-12-10 Werner Lemberg <wl@gnu.org>
1030
1031 [truetype] Fix scaling of vertical phantom points.
1032
1033 * src/truetype/ttgload.c (load_truetype_glyph): Scale pp3.x and
1034 pp4.x also.
1035
1036 2013-12-10 Werner Lemberg <wl@gnu.org>
1037
1038 [truetype] Fix positioning of composite glyphs.
1039 Problem reported by Nigel Tao <nigeltao@golang.org>.
1040
1041 * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts
1042 the glyph (component) by a fractional value computed from the LSB
1043 phantom point. This is wrong, since the horizontal phantom points
1044 get rounded horizontally later on.
1045
1046 2013-12-08 Werner Lemberg <wl@gnu.org>
1047
1048 * Version 2.5.2 released.
1049 =========================
1050
1051
1052 Tag sources with `VER-2-5-2'.
1053
1054 * docs/VERSION.DLL: Update documentation and bump version number to
1055 2.5.2.
1056
1057 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1058 builds/windows/vc2005/index.html,
1059 builds/windows/vc2008/freetype.vcproj,
1060 builds/windows/vc2008/index.html,
1061 builds/windows/vc2010/freetype.vcxproj,
1062 builds/windows/vc2010/index.html,
1063 builds/windows/visualc/freetype.dsp,
1064 builds/windows/visualc/freetype.vcproj,
1065 builds/windows/visualc/index.html,
1066 builds/windows/visualce/freetype.dsp,
1067 builds/windows/visualce/freetype.vcproj,
1068 builds/windows/visualce/index.html,
1069 builds/wince/vc2005-ce/freetype.vcproj,
1070 builds/wince/vc2005-ce/index.html,
1071 builds/wince/vc2008-ce/freetype.vcproj,
1072 builds/wince/vc2008-ce/index.html: s/2.5.1/2.5.2/, s/251/252/.
1073
1074 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
1075
1076 * builds/unix/configure.raw (version_info): Set to 17:1:11.
1077 * CMakeLists.txt (VERSION_PATCH): Set to 2.
1078 * docs/CHANGES: Updated.
1079
1080 2013-12-07 Werner Lemberg <wl@gnu.org>
1081
1082 [truetype] Next round in phantom point handling.
1083
1084 Greg Hitchcock provided very interesting insights into the
1085 complicated history of the horizontal positions of the TSB and BSB
1086 phantom points.
1087
1088 * src/truetype/ttgload.c (TT_LOADER_SET_PP)
1089 [TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Use `subpixel_hinting' and
1090 `grayscale_hinting' flags as conditionals for the x position of TSB
1091 and BSB.
1092
1093 2013-12-05 Werner Lemberg <wl@gnu.org>
1094
1095 * builds/freetype.mk (FT_CC): Removed. Unused.
1096
1097 2013-12-04 Werner Lemberg <wl@gnu.org>
1098
1099 [sfnt] Fix handling of embedded bitmap strikes.
1100
1101 This corrects the commit from 2013-11-21. Problem reported by
1102 Andrey Panov <panov@canopus.iacp.dvo.ru>.
1103
1104 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to
1105 detect excessive bytes for bit-aligned bitmaps.
1106
1107 2013-12-03 Werner Lemberg <wl@gnu.org>
1108
1109 [truetype] Remove dead code.
1110
1111 Reported by Nigel Tao <nigeltao@golang.org>.
1112
1113 * include/internal/tttypes.h (TT_LoaderRec): Remove unused
1114 `preserve_pps' field.
1115 * src/truetype/ttgload.c (TT_Hint_Glyph): Updated.
1116
1117 2013-12-03 Werner Lemberg <wl@gnu.org>
1118
1119 [truetype] Fix phantom point handling.
1120
1121 This is a further improvement to the changes from 2013-11-06.
1122
1123 * src/truetype/ttgload.c (TT_Hint_Glyph): Horizontal phantom points
1124 are rounded horizontally, vertical ones are rounded vertically.
1125 (TT_LOADER_SET_PP): The horizontal position of vertical phantom
1126 points in pre-ClearType mode is zero, as shown in the OpenType
1127 specification.
1128
1129 2013-12-02 Werner Lemberg <wl@gnu.org>
1130
1131 [truetype] Fix change from 2013-11-20.
1132
1133 Problem reported by Akira Kakuto <kakuto@fuk.kindai.ac.jp>.
1134
1135 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Protect call to
1136 `Update_Max' with both a TT_USE_BYTECODE_INTERPRETER guard and a
1137 `IS_HINTED' clause.
1138 Also remove redundant check using `maxSizeOfInstructions' – in
1139 simple glyphs, the bytecode data comes before the outline data, and
1140 a validity test for this is already present.
1141
1142 2013-11-27 Werner Lemberg <wl@gnu.org>
1143
1144 [autofit] Fix use of dumping functions in `ftgrid' demo program.
1145
1146 * src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro.
1147 (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
1148 af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to
1149 handle output to stdout.
1150 Use AF_DUMP.
1151 (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
1152 af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed.
1153
1154 2013-11-25 Werner Lemberg <wl@gnu.org>
1155
1156 * Version 2.5.1 released.
1157 =========================
1158
1159
1160 Tag sources with `VER-2-5-1'.
1161
1162 * docs/VERSION.DLL: Update documentation and bump version number to
1163 2.5.1.
1164
1165 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1166 builds/windows/vc2005/index.html,
1167 builds/windows/vc2008/freetype.vcproj,
1168 builds/windows/vc2008/index.html,
1169 builds/windows/vc2010/freetype.vcxproj,
1170 builds/windows/vc2010/index.html,
1171 builds/windows/visualc/freetype.dsp,
1172 builds/windows/visualc/freetype.vcproj,
1173 builds/windows/visualc/index.html,
1174 builds/windows/visualce/freetype.dsp,
1175 builds/windows/visualce/freetype.vcproj,
1176 builds/windows/visualce/index.html,
1177 builds/wince/vc2005-ce/freetype.vcproj,
1178 builds/wince/vc2005-ce/index.html,
1179 builds/wince/vc2008-ce/freetype.vcproj,
1180 builds/wince/vc2008-ce/index.html: s/2.5.0/2.5.1/, s/250/251/.
1181
1182 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
1183
1184 * builds/unix/configure.raw (version_info): Set to 17:0:11.
1185 * CMakeLists.txt (VERSION_PATCH): Set to 1.
1186 * docs/CHANGES, docs/release: Updated.
1187
1188 2013-11-23 Werner Lemberg <wl@gnu.org>
1189
1190 [truetype]: Add tricky font names `hkscsiic.ttf' and `iicore.ttf'.
1191
1192 * src/truetype/ttobjs.c (TRICK_NAMES_MAX_CHARACTERS,
1193 TRICK_NAMES_COUNT): Updated.
1194 (trick_names): Add family name for the two fonts.
1195
1196 2013-11-23 Werner Lemberg <wl@gnu.org>
1197
1198 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo.
1199
1200 2013-11-21 Werner Lemberg <wl@gnu.org>
1201
1202 [sfnt] Typo.
1203
1204 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1205
1206 * src/sfnt/sfobjs.c (sfnt_load_face): Return correct `bsize->width'
1207 value if the font lacks an `OS/2' table.
1208
1209 2013-11-21 Werner Lemberg <wl@gnu.org>
1210
1211 [sfnt] Improve handling of buggy embedded bitmap strikes.
1212
1213 We are now able to successfully load `AppleMyoungJo.ttf'.
1214 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1215
1216 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph
1217 format.
1218
1219 2013-11-20 Werner Lemberg <wl@gnu.org>
1220
1221 [truetype] Don't trust `maxp's `maxSizeOfInstructions'.
1222
1223 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>; see
1224
1225 http://lists.nongnu.org/archive/html/freetype-devel/2013-08/msg00005.html
1226
1227 for details.
1228
1229 * src/base/ftobjs.c (FT_Load_Glyph): Check size of `fpgm' and `prep'
1230 tables also for setting `autohint'.
1231
1232 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use code from
1233 `TT_Process_Composite_Glyph' for handling unreliable values of
1234 `maxSizeOfInstructions'.
1235
1236 2013-11-16 Werner Lemberg <wl@gnu.org>
1237
1238 [sfnt] Fix `OS/2' table version 5 support.
1239
1240 We now follow the `official' announcement from Microsoft (on the
1241 OpenType mailing list, which unfortunately hasn't a public archive).
1242
1243 * include/freetype/tttables.h (TT_OS2):
1244 s/usLowerPointSize/usLowerOpticalPointSize/,
1245 s/usUpperPointSize/usUpperOpticalPointSize/.
1246
1247 * src/sfnt/ttload.c (tt_face_load_os2): Update, and set correct
1248 default values.
1249
1250 2013-11-13 Werner Lemberg <wl@gnu.org>
1251
1252 * builds/unix/ft2unix.h: Remove. No longer necessary.
1253
1254 * builds/unix/install.mk (install): Updated.
1255
1256 2013-11-13 Werner Lemberg <wl@gnu.org>
1257
1258 Simplify header file hierarchy.
1259
1260 This large patch changes the header file directory layout from
1261 `include/freetype/...' to `include/...', effectively removing one
1262 level. Since the file `ft2build.h' is also located in `include'
1263 (and it stays there even after installation), all FreeType header
1264 files are now in a single directory.
1265
1266 Applications that use (a) `freetype-config' or FreeType's
1267 `pkg-config' file to get the include directory for the compiler, and
1268 (b) the documented way for header inclusion like
1269
1270 #include <ft2build.h>
1271 #include FT_FREETYPE_H
1272 ...
1273
1274 don't need any change to the source code.
1275
1276 * include/freetype/*: Move up to...
1277 * include/*: ... this directory.
1278
1279 * builds/amiga/include/freetype/*: Move up to...
1280 * builds/amiga/include/*: ... this directory.
1281
1282 */*: Essentially do `s@/freetype/@/@' where appropriate.
1283
1284 * CMakeList.txt: Simplify.
1285 * builds/unix/freetype-config.in, builds/unix/freetype2.in: For
1286 `--cflags', return a single directory.
1287 * builds/unix/install.mk (install): No longer try to remove `cache'
1288 and `internal' subdirectories; instead, remove the `freetype'
1289 subdirectory.
1290
1291 2013-11-12 Werner Lemberg <wl@gnu.org>
1292
1293 [truetype] Fix last `truetype' commit.
1294
1295 * src/truetype/ttgload.c (tt_get_metrics): Preserve stream position.
1296 Return error value.
1297 (load_truetype_glyph): Updated.
1298
1299 2013-11-10 Werner Lemberg <wl@gnu.org>
1300
1301 * docs/CMAKE: New dummy file.
1302
1303 2013-11-08 Dave Arnold <darnold@adobe.com>
1304
1305 [cff] Fix for hints that touch.
1306
1307 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Fix condition for
1308 finding index value of insertion point.
1309
1310 2013-11-06 Werner Lemberg <wl@gnu.org>
1311
1312 [truetype] Fix handling of phantom points in composite glyphs.
1313 Problem reported by Nigel Tao <nigeltao@golang.org>.
1314
1315 This is a follow-up commit to the previous one.
1316
1317 * src/truetype/ttgload.c (load_truetype_glyph): Call
1318 `tt_get_metrics' after loading the glyph header.
1319
1320 2013-11-06 Werner Lemberg <wl@gnu.org>
1321
1322 [truetype] Improve emulation of vertical metrics.
1323
1324 This commit also improves the start values of vertical phantom
1325 points. Kudos to Greg Hitchcock for help.
1326
1327 * src/truetype/ttgload.c (TT_Get_VMetrics): Add parameter to pass
1328 `yMax' value. Replace code with fixed Microsoft definition.
1329 (tt_get_metrics): Updated.
1330 (TT_LOADER_SET_PP): Add explanation how to initialize phantom
1331 points, taken from both the OpenType specification and private
1332 communication with Greg (which will eventually be added to the
1333 standard).
1334 Fix horizontal position of `pp3' and `pp4'.
1335
1336 * src/truetype/ttgload.h: Updated.
1337
1338 * src/truetype/ttdriver.c (tt_get_advances): Updated.
1339
1340 * docs/CHANGES: Updated.
1341
1342 2013-11-05 Werner Lemberg <wl@gnu.org>
1343
1344 * builds/windows/vc2010/freetype.vcxproj: s/v110/v100/.
1345 PlatformToolSet version 110 is for VC2012.
1346
1347 Problem reported (with solution) by Dave Arnold <darnold@adobe.com>.
1348
1349 2013-11-05 Werner Lemberg <wl@gnu.org>
1350
1351 [truetype] Correctly reset point tags for glyph components.
1352 Problem reported by Nigel Tao <nigeltao@golang.org>.
1353
1354 * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop.
1355
1356 2013-11-02 Werner Lemberg <wl@gnu.org>
1357
1358 [truetype] Fix GETINFO opcode handling of subpixel hinting bits.
1359
1360 * src/truetype/ttinterp.c (Ins_GETINFO): Don't request bit 6 set to
1361 get info on subpixel hinting.
1362
1363 * docs/CHANGES: Updated.
1364
1365 2013-11-02 Werner Lemberg <wl@gnu.org>
1366
1367 Fix Savannah bug #40451.
1368
1369 Simply apply the patch from the bug report.
1370
1371 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
1372 include/freetype/config/ftconfig.h: The used #pragma directives only
1373 work with gcc versions 4.6 and higher.
1374
1375 2013-11-01 Werner Lemberg <wl@gnu.org>
1376
1377 * docs/CHANGES: Updated.
1378
1379 2013-11-01 Werner Lemberg <wl@gnu.org>
1380
1381 [truetype] Minor code refactoring.
1382
1383 Two benefits: The allocated FDEF (and IDEF) array gets slightly
1384 smaller, and the `ttdebug' demo program has access to function
1385 numbers without additional costs.
1386
1387 Fortunately, no changes to FontForge are necessary – this is the
1388 only external TrueType debugger I know of, but others may exist and
1389 should check the code accordingly.
1390
1391 * src/truetype/ttinterp.h (TT_CallRec): Replace `Cur_Restart' and
1392 `Cur_End' with a pointer to the corresponding `TT_DefRecord'
1393 structure.
1394
1395 * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF, Ins_ENDF,
1396 Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns <Invalid_Opcode>):
1397 Updated.
1398
1399 2013-10-27 Werner Lemberg <wl@gnu.org>
1400
1401 [sfnt] Implement support for `OS/2' table version 5.
1402
1403 See
1404
1405 http://typedrawers.com/discussion/470/new-microsoft-size-specific-design-selection-mechanism
1406
1407 for the announcement.
1408
1409 * include/freetype/tttables.h (TT_OS2): Add fields
1410 `usLowerPointSize' and `usUpperPointSize'. Since FreeType returns
1411 this structure only as a pointer through `FT_Get_Sfnt_Table', there
1412 shouldn't be any ABI problems.
1413
1414 * src/sfnt/ttload.c (tt_face_load_os2): Implement it.
1415
1416 * docs/CHANGES: Updated.
1417
1418 2013-10-24 Werner Lemberg <wl@gnu.org>
1419
1420 * README.git, docs/CHANGES, docs/INSTALL: Updated.
1421
1422 2013-10-24 John Cary <cary@txcorp.com>
1423
1424 Provide cmake support.
1425
1426 * CMakeLists.txt: New file.
1427
1428 2013-10-23 Kenneth Miller <kennethadammiller@yahoo.com>
1429 Werner Lemberg <wl@gnu.org>
1430
1431 Provide support for x64 builds in Visual C++ project files.
1432
1433 * src/builds/win32: Renamed to...
1434 * src/builds/windows: This.
1435
1436 * src/builds/windows/vc2010/*: Updated to handle x64 target.
1437
1438 * src/builds/windows/*.mk, docs/INSTALL.GNU: s/win32/windows/ where
1439 appropriate.
1440
1441 2013-10-22 Werner Lemberg <wl@gnu.org>
1442
1443 * src/base/md5.c, src/base/md5.h: Updated to recent version.
1444
1445 * src/base/ftobjs.c: Updated; `md5.c' no longer uses `free'.
1446
1447 The canonical URL to get updates for this file is
1448
1449 http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/
1450
1451 as the author told me in private communication.
1452
1453 2013-10-19 Werner Lemberg <wl@gnu.org>
1454
1455 [autofit] s/SMALL_TOP/X_HEIGHT/.
1456
1457 * src/autofit/afblue.dat: Updated.
1458
1459 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1460
1461 * src/autofit/aflatin.c, src/autofit/aflatin.h,
1462 src/autofit/atlatin2.c: Updated.
1463
1464 2013-10-19 Werner Lemberg <wl@gnu.org>
1465
1466 * src/autofit/afblue.dat: s/MINOR/DESCENDER/.
1467
1468 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1469
1470 2013-10-16 Werner Lemberg <wl@gnu.org>
1471
1472 [autofit] Add description strings to script entries.
1473
1474 Currently, this is unused.
1475
1476 * src/autofit/afscript.h: Do it.
1477 * src/autofit/afglobal.c, src/autofit/afpic.c,
1478 src/autofit/aftypes.h: Updated.
1479
1480 2013-10-16 Werner Lemberg <wl@gnu.org>
1481
1482 [autofit] Improve tracing message for extra light flag.
1483
1484 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it.
1485
1486 2013-10-15 Chongyu Zhu <lembacon@gmail.com>
1487
1488 [arm] Fix thumb2 inline assembly under LLVM.
1489
1490 When using `ADD' with an immediate operand, the instruction is
1491 actually `ADD Rd, Rn, #<imm12>', that is, the maximum of the
1492 immediate operand cannot exceed 4095. It will fail to compile with
1493 LLVM.
1494
1495 However, in GCC, due to some legacy compatibility considerations,
1496 `ADD.W' will be automatically emitted when the immediate operand is
1497 larger than 4095.
1498
1499 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
1500 (FT_MulFix_arm) [__GNUC__]: Support clang compiler.
1501
1502 * src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto.
1503
1504 2013-10-12 Werner Lemberg <wl@gnu.org>
1505
1506 [autofit] Improve tracing of `latin' hinter.
1507
1508 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue
1509 zone types.
1510 (af_latin_metrics_scale_dim): Report scaling changes due to x height
1511 alignment.
1512 Report scaled stroke width and blue zone values.
1513
1514 2013-10-03 Dave Arnold <darnold@adobe.com>
1515
1516 * src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.
1517
1518 Note that the old code avoided using a region of the piecewise
1519 linear function where the slope was zero. The recovery was to use a
1520 different section of the function, which produced a different,
1521 incorrect amount of darkening.
1522
1523 2013-10-02 Darrell Bellert <darrell.bellert@hl.konicaminolta.us>
1524
1525 * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'.
1526
1527 2013-10-02 Dave Arnold <darnold@adobe.com>
1528
1529 * src/cff/cf2font.c (cf2_computeDarkening): Initialize darkenAmount.
1530
1531 This line was lost in commit 89ca1fd6 (from 2013-06-25). The effect
1532 is to use a previous darkening amount when producing an unhinted,
1533 unscaled outline. This can cause autohint samples in ftgrid and
1534 ftview to be based on darkened CFF outlines instead of unhinted,
1535 undarkened ones.
1536
1537 2013-09-29 Dave Arnold <darnold@adobe.com>
1538
1539 Fix Savannah bug #39295.
1540
1541 The bug was caused by switching to the initial hintmap (the one in
1542 effect when `moveto' executes) just before drawing the final element
1543 in the charstring. This ensured that the path was closed (in both
1544 Character Space and Device Space). But if the final element was a
1545 curve and if the final hintmap was different enough from the initial
1546 one, then the curve was visibly distorted.
1547
1548 The first part of the fix is to draw the final curve using the final
1549 hintmap as specified by the charstring. This corrects the
1550 distortion but does not ensure closing in Device Space. It may
1551 require the rasterizer to automatically generate an extra closing
1552 line. Depending on the hintmap differences, this line could be from
1553 zero to a couple pixels in length.
1554
1555 The second part of the fix covers the case where the charstring
1556 subpath is closed with an explicit line. We now modify that line's
1557 end point to avoid the distortion.
1558
1559 Some glyphs in the bug report font (TexGyreHeros-Regular) that show
1560 the change are:
1561
1562 25ppem S (98)
1563 24ppem eight (52)
1564 25.5ppem p (85)
1565
1566 Curves at the *end* of a subpath are no longer distorted. However,
1567 some of these glyphs have bad hint substitutions in the middle of a
1568 subpath, and these are not affected.
1569
1570 The patch has been tested with a set of 106 fonts that shipped with
1571 Adobe Creative Suite 4, together with 756 Open Source CFF fonts from
1572 Google Fonts. There are 1.5 million glyphs, of which some 20k are
1573 changed with the fix. A sampling of a few hundred of these changes
1574 have been examined more closely, and the changes look good (or at
1575 least acceptable).
1576
1577 * src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing'
1578 to indicate that we synthesize a closepath line.
1579
1580 * src/cff/cf2hints.c (cf2_glyphpath_init): Updated.
1581 (cf2_glyphpath_pushPrevElem): If closing, use first hint map (for
1582 `lineto' operator) and adjust hint zone.
1583 For synthesized closing lines, use end point in first hint zone.
1584 (cf2_glyphpath_lineTo): Take care of synthesized closing lines. In
1585 particular, shift the detection of zero-length lines from character
1586 space to device space.
1587 (cf2_glyphpath_closeOpenPath): Remove assertion.
1588 Updated.
1589
1590 2013-09-25 Werner Lemberg <wl@gnu.org>
1591
1592 * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays.
1593
1594 2013-09-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
1595
1596 [bdf, pcf] Refuse non-zero face_index.
1597
1598 Suggested by Akira Tagoh, see
1599
1600 http://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html
1601
1602 * src/bdf/bdfdrivr.c (BDF_Face_Init): Return `Invalid_Argument'
1603 error if the font could be opened but non-zero `face_index' is
1604 given.
1605 * src/pcf/pcfdrivr.c (PCF_Face_Init): Ditto.
1606
1607 * src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED
1608 macro for `face_index' because it is validated later.
1609
1610 2013-09-23 Werner Lemberg <wl@gnu.org>
1611
1612 Fix Savannah bug #40090.
1613
1614 * src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit
1615 306f8c5d (from 2013-08-25) affecting this function.
1616
1617 2013-09-22 Werner Lemberg <wl@gnu.org>
1618
1619 [autofit] Disunify Cyrillic and Greek handling from Latin.
1620
1621 * src/autofit/afscript.h: Add Cyrillic and Greek.
1622
1623 * src/autofit/afblue.dat (AF_BLUE_STRINGSET_GREK,
1624 AF_BLUE_STRINGSET_CYRL): Add blue zones for Greek and Cyrillic.
1625 (AF_BLUE_STRINGSET_LATN): Fix typo.
1626 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1627
1628 * src/autofit/aflatin.c (af_grek_uniranges, af_cyrl_uniranges): New
1629 arrays.
1630 (af_grek_script_class, af_cyrl_script_class): New scripts.
1631 * src/autofit/aflatin.h: Updated.
1632
1633 2013-09-20 Werner Lemberg <wl@gnu.org>
1634
1635 * docs/CHANGES: Updated.
1636
1637 2013-09-20 Behdad Esfahbod <behdad@behdad.org>
1638
1639 Fix vertical size of emboldened glyphs.
1640
1641 Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709
1642
1643 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY'
1644 also.
1645
1646 2013-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1647
1648 * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation
1649 algorithm description.
1650
1651 2013-09-11 Werner Lemberg <wl@gnu.org>
1652
1653 [autofit] Improve Hebrew rendering.
1654
1655 This change introduces a new blue zone property
1656 `AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short
1657 top segments.
1658
1659 * src/autofit/afblue.dat: Fix Hebrew blue strings.
1660 Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP.
1661
1662 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro.
1663
1664 * src/autofit/afblue.c, src/autofit/afblue.h: Updated.
1665
1666 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle
1667 `AF_LATIN_IS_LONG_BLUE'.
1668
1669 * src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro.
1670
1671 2013-08-28 Behdad Esfahbod <behdad@google.com>
1672
1673 [sfnt] Fix frame access while reading WOFF table directory.
1674
1675 * src/sfnt/sfobjs.c (woff_open_font): Using single memory frame
1676 while reading the directory entries for the whole loop.
1677
1678 2013-08-29 Werner Lemberg <wl@gnu.org>
1679 Behdad Esfahbod <behdad@google.com>
1680
1681 Implement support for WOFF containers.
1682
1683 We simply synthesize a SFNT from the WOFF, create a memory stream
1684 for the new data, and load the SFNT as usual.
1685
1686 Does NOT add any API to access WOFF metadata or private blocks.
1687
1688 * include/freetype/internal/tttypes.h (WOFF_HeaderRec,
1689 WOFF_TableRec): New structures.
1690
1691 * include/freetype/tttags.h (TTAG_wOFF): New macro.
1692
1693 * src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling
1694 `open_face'.
1695
1696 * src/sfnt/sfobjs.c [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Include
1697 `FT_GZIP_H'.
1698 (WRITE_BYTE, WRITE_USHORT, WRITE_ULONG): New temporary macros for
1699 writing to a stream.
1700 (sfnt_stream_close, compare_offsets, woff_open_font): New functions.
1701 (sfnt_open_font): Handle `TTAG_wOFF'.
1702 (sfnt_init_face): Set `stream' after calling `sfnt_open_font'.
1703
1704 * src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling
1705 `sfnt->init_face'.
1706
1707 * src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an
1708 argument so that a changed stream survives.
1709 Update callers.
1710
1711 2013-08-28 Werner Lemberg <wl@gnu.org>
1712
1713 [gzip] New function `FT_Gzip_Uncompress'.
1714
1715 This is modeled after zlib's `uncompress' function. We need this
1716 for WOFF support.
1717
1718 * include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress):
1719 New function.
1720
1721 * src/gzip/rules.mk: Rewrite to better reflect dependencies.
1722
1723 2013-08-28 Werner Lemberg <wl@gnu.org>
1724
1725 [autofit] Fix `make multi' compilation.
1726
1727 * src/autofit/afblue.cin, src/autofit/afblue.c: Don't include
1728 `afblue.h' but `aftypes.h'.
1729 * src/autofit/afcjk.c: Don't include `aftypes.h' but `afglobal.h'.
1730
1731 2013-08-28 Werner Lemberg <wl@gnu.org>
1732
1733 [autofit] Fix C++ compilation.
1734
1735 * src/autofit/afglobal.c (af_face_globals_get_metrics),
1736 src/autofit/afdummy.c (af_dflt_script_class), src/autofit/afindic.c
1737 (af_deva_script_class): Use proper casts.
1738
1739 2013-08-27 Behdad Esfahbod <behdad@google.com>
1740
1741 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos.
1742
1743 2013-08-27 Behdad Esfahbod <behdad@google.com>
1744
1745 FT_Open_Face: Improve external stream handling.
1746
1747 If the font's `clazz->init_face' function wants to swap to new
1748 stream, handling of whether original stream was external could
1749 result to either memory leak or double free. Mark externality into
1750 face flags before calling `init_face' such that the clazz can handle
1751 external streams properly.
1752
1753 * src/base/ftobjs.c (FT_Open_Face): Move code to set
1754 FT_FACE_FLAG_EXTERNAL_STREAM to...
1755 (open_face): This function.
1756
1757 2013-08-27 Werner Lemberg <wl@gnu.org>
1758
1759 Remove `FT_SqrtFixed' function.
1760
1761 It's no longer used.
1762
1763 * include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it.
1764
1765 2013-08-27 Werner Lemberg <wl@gnu.org>
1766
1767 [autofit] While tracing, report script names instead of ID values.
1768
1769 * src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]:
1770 New array.
1771 * src/autofit/afglobal.h: Updated.
1772
1773 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
1774 af_cjk_hint_edges): Use `af_script_names'.
1775 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
1776 af_latin_hint_edges): Ditto.
1777
1778 2013-08-26 Werner Lemberg <wl@gnu.org>
1779
1780 [autofit] Report used script while hinting a glyph.
1781
1782 * src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c
1783 (af_latin_hint_edges): Implement it.
1784
1785 2013-08-26 Werner Lemberg <wl@gnu.org>
1786
1787 [autofit] Add support for Hebrew script.
1788
1789 * src/autofit/afblue.dat: Add blue strings for Hebrew.
1790 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1791
1792 * src/autofit/aflatin.c (af_hebr_uniranges): New array.
1793 (af_hebr_script_class): New script.
1794 * src/autofit/aflatin.h, src/autofit/afscript.h: Updated.
1795
1796 2013-08-26 Werner Lemberg <wl@gnu.org>
1797
1798 [autofit] Improve tracing messages.
1799
1800 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Mention script
1801 ID in tracing message.
1802 (af_cjk_metrics_init_blues): Initialize `axis' outside of the inner
1803 loop.
1804 Improve tracing messages.
1805 (af_cjk_hint_edges) [FT_DEBUG_LEVEL_TRACE]: New variable
1806 `num_actions' to count hinting actions.
1807 Improve tracing messages.
1808
1809 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Mention
1810 script ID in tracing message.
1811 (af_latin_metrics_init_blues, af_latin_hint_edges): Improve tracing
1812 messages.
1813
1814 2013-08-26 Werner Lemberg <wl@gnu.org>
1815
1816 Better tracing of loaded glyphs.
1817
1818 Previously, the loading of a glyph was traced at level 4, if at all.
1819 With this change, all font loading routines emit a tracing message
1820 at level 1, making it easier to select tracing output (for example
1821 using F2_DEBUG="any:1 afhints:7 aflatin:7").
1822
1823 * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Add tracing message.
1824 * src/cff/cffdrivr.c (cff_glyph_load): Ditto.
1825 * src/cff/cffgload.c (cff_decoder_prepare): Improve tracing
1826 messages.
1827 * src/cid/cidgload.c (cid_load_glyph): Use level 1 for tracing
1828 message.
1829 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.
1830 * src/pfr/pfrobjs.c (pfr_slot_load): Add tracing message.
1831 * src/truetype/ttgload.c (TT_Load_Glyph): Ditto.
1832 * src/type1/t1gload.c (T1_Load_Glyph): Ditto.
1833 * src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto.
1834 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
1835
1836 2013-08-26 Werner Lemberg <wl@gnu.org>
1837
1838 [autofit] Fix script selection.
1839
1840 * src/autofit/afglobal.c (af_face_globals_get_metrics): Use
1841 `AF_SCRIPT_DFLT', not value 0.
1842 Simplify code.
1843
1844 * src/autofit/afscript.h: Sort by script name.
1845
1846 2013-08-26 Werner Lemberg <wl@gnu.org>
1847
1848 [autofit] Make `dummy' hinter work as expected.
1849
1850 * src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling
1851 information.
1852 (af_dummy_hints_apply): Scale the glyphs.
1853
1854 2013-08-25 Werner Lemberg <wl@gnu.org>
1855
1856 [autofit] Make `cjk' module use blue stringsets.
1857
1858 * src/autofit/afcjk.c (AF_CJK_MAX_TEST_CHARACTERS): Removed.
1859 (af_cjk_hani_blue_chars): Removed.
1860 (AF_CJK_BLUE_TYPE_*): Removed.
1861 (af_cjk_metrics_init_blues): Replace AF_CJK_MAX_TEST_CHARACTERS with
1862 AF_BLUE_STRING_MAX_LEN.
1863 Change loops to use offsets (in file `afblue.h') into the new arrays
1864 `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
1865 Instead of three dimensions (as used in the old blue string array)
1866 we now use properties to do the same, saving one loop nesting level.
1867
1868 * src/autofit/afcjk.h: Remove old enumeration values superseded by
1869 the new data in `afblue.h'.
1870 (AF_CJK_IS_TOP_BLUE, AF_CJK_IS_HORIZ_BLUE, AF_CJK_IS_FILLED_BLUE,
1871 AF_CJK_IS_RIGHT_BLUE): New macros, to be used in
1872 `af_cjk_metrics_init_blues'.
1873 (AF_CJK_BLUE_IS_RIGHT): Remove this now redundant enum value.
1874 (AF_CJK_BLUE_IS_TOP): Renamed to...
1875 (AF_CJK_BLUE_TOP): This.
1876 (AF_CJK_MAX_BLUES): Remove.
1877 (AF_CJKAxisRec): Updated.
1878
1879 2013-08-25 Werner Lemberg <wl@gnu.org>
1880
1881 [autofit] Typo.
1882
1883 * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use
1884 cast.
1885
1886 2013-08-25 Werner Lemberg <wl@gnu.org>
1887
1888 [autofit] Synchronize `cjk' with `latin' module (and vice versa).
1889
1890 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Add tracing
1891 messages.
1892 (af_cjk_metrics_init_blues): Don't pass blue string array as
1893 argument but use the global array directly.
1894 Use `outline' directly.
1895 Update and add tracing messages.
1896 (af_cjk_metrics_init): Simplify code.
1897 (af_cjk_metrics_scale_dim): Improve tracing message.
1898 (af_cjk_metrics_scale): Synchronize.
1899
1900 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
1901 af_latin_metrics_init_blues): Improve and add tracing messages.
1902
1903 2013-08-25 Werner Lemberg <wl@gnu.org>
1904
1905 [autofit] Make `latin' module use blue stringsets.
1906
1907 * src/autofit/aflatin.c (AF_LATIN_MAX_TEST_CHARACTERS): Removed.
1908 (af_latin_blue_chars): Removed.
1909 (af_latin_metrics_init_blues): Replace AF_LATIN_MAX_TEST_CHARACTERS
1910 with AF_BLUE_STRING_MAX_LEN.
1911 Change loops to use offsets (in file `afblue.h') into the new arrays
1912 `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
1913 Use `AF_LATIN_IS_SMALL_TOP_BLUE' macro.
1914
1915 * src/autofit/aflatin.h: Remove old enumeration values superseded by
1916 the new data in `afblue.h'.
1917 (AF_LATIN_IS_TOP_BLUE): Updated definition.
1918 (AF_LATIN_IS_SMALL_TOP_BLUE): New macro.
1919 (AF_LATIN_MAX_BLUES): Remove.
1920 (AF_LatinAxisRec): Updated.
1921
1922 2013-08-25 Werner Lemberg <wl@gnu.org>
1923
1924 [autofit] Add blue stringsets.
1925
1926 * src/autofit/aftypes.h: Include `afblue.h'.
1927 (AF_ScriptClassRec): Add `blue_stringset' field.
1928 (AF_DEFINE_SCRIPT_CLASS): Updated.
1929
1930 * src/autofit/autofit.c: Include `afblue.c'.
1931
1932 * src/autofit/afcjk.c (af_hani_script_class), src/autofit/afdummy.c
1933 (af_dflt_script_class), src/autofit/afindic.c
1934 (af_deva_script_class), src/autofit/aflatin.c
1935 (af_latn_script_class), src/autofit/aflatin2.c
1936 (af_ltn2_script_class): Updated.
1937
1938 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'.
1939
1940 2013-08-25 Werner Lemberg <wl@gnu.org>
1941
1942 [autofit] Introduce data file for blue strings.
1943
1944 The idea is to have a central file which gets processed by a Perl
1945 script to create proper `.c' and `.h' files using templates. There
1946 are two other reasons to do that:
1947
1948 . The data file should be easily readable. We use UTF-8 encoding
1949 which then gets converted to single bytes.
1950
1951 . Since the number of supported scripts will increase soon, the
1952 current usage of blue string arrays is a waste of space. Using
1953 the Perl script it is possible to imitate jagged arrays,
1954 defining enumeration constants as offsets into the arrays.
1955
1956 This commit only adds files without changing any functionality.
1957
1958 * src/autofit/afblue.dat: New data file.
1959 * src/tools/afblue.pl: New Perl script for processing `afblue.dat'.
1960
1961 * src/autofit/afblue.cin, src/autofit/afblue.hin: New template files
1962 for...
1963 * src/autofit/afblue.c, src/autofit/afblue.c: New source files.
1964 To avoid a dependency on Perl, we add them too.
1965
1966 2013-08-19 Alexei Podtelezhnikov <apodtele@gmail.com>
1967
1968 [base] Enable new algorithm for `BBox_Cubic_Check'.
1969
1970 * src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove
1971 the old one.
1972 Improve comments.
1973
1974 2013-08-18 Werner Lemberg <wl@gnu.org>
1975
1976 * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit.
1977
1978 2013-08-18 Werner Lemberg <wl@gnu.org>
1979
1980 Fix Savannah bug #39804.
1981
1982 * builds/unix/configure.raw (LIBPNG): Define and export.
1983 * builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle
1984 libpng.
1985
1986 2013-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
1987
1988 [base] Clean up BBox_Conic_Check.
1989
1990 * src/base/ftbbox.c (BBox_Conic_Check): Remove redundant checks for
1991 extremum at the segment ends, which are already within the bbox.
1992 Slightly modify calculations.
1993
1994 2013-08-15 Alexei Podtelezhnikov <apodtele@gmail.com>
1995
1996 [base] Finish experimental (disabled) BBox_Cubic_Check implementation.
1997
1998 * src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve
1999 accuracy and avoid overflows.
2000
2001 2013-08-13 Alexei Podtelezhnikov <apodtele@gmail.com>
2002
2003 [base] Refactor experimental (disabled) BBox_Cubic_Check.
2004
2005 * src/base/ftbbox.c (BBox_Cubic_Check): Implement the minimum search
2006 as the mirror image of the maximum search implemented here...
2007 (update_max): New function.
2008
2009 2013-08-06 John Tytgat <John.Tytgat@esko.com>
2010
2011 Fix Savannah bug #39702.
2012
2013 * src/cff/cffload.c (cff_index_get_pointers): Check for `cur_offset
2014 != 0'; this stronger test is mandated by the CFF specification.
2015 Fix test for INDEX structures which have one or more empty entries
2016 at the end.
2017
2018 2013-08-05 Werner Lemberg <wl@gnu.org>
2019
2020 Fix gcc pragmas, part 2.
2021
2022 * src/truetype/ttinterp.c (TT_MulFix14_long_long,
2023 TT_DotFix14_long_long): `#pragma gcc diagnostic {push,pop}' has been
2024 introduced with gcc version 4.6.
2025
2026 2013-08-05 Werner Lemberg <wl@gnu.org>
2027
2028 Fix gcc pragmas.
2029
2030 * src/truetype/ttinterp.c (TT_MulFix14_long_long,
2031 TT_DotFix14_long_long): Older gcc versions don't accept diagnostic
2032 pragmas within a function body.
2033
2034 2013-08-05 Werner Lemberg <wl@gnu.org>
2035
2036 Fix Savannah bug #39700.
2037
2038 * builds/unix/ftconfig.h: Synchronize with
2039 `include/freetype/config/ftconfig.h'.
2040
2041 * builds/vms/ftconfig.h: Ditto.
2042 Make the differences to the master `ftconfig.h' file as small as
2043 possible for easier maintainance.
2044
2045 2013-08-05 Werner Lemberg <wl@gnu.org>
2046
2047 [autofit] Improve handling of `near' points.
2048
2049 Points which are very near to each other are now marked as such.
2050 The `weak' flag is then computed by using the `in' vector of the
2051 first and the `out' vector of the last point of a group of near
2052 points.
2053
2054 For example, this fixes the rendering of glyph `Oslash' in
2055 `Roboto-Thin.ttf'.
2056
2057 * src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'.
2058
2059 * src/autofit/afhints.c (af_glyph_hints_reload): Introduce
2060 the heuristic value `near_limit' to decide whether the current point
2061 is near to the previous one, then set `AF_FLAG_NEAR' accordingly.
2062 Store good `in' vector (of last non-near point) in
2063 `last_good_in_{x,y}' and use it as an argument to
2064 `ft_corner_is_flat' if necessary.
2065
2066 2013-08-02 Werner Lemberg <wl@gnu.org>
2067
2068 * include/freetype/ftcffdrv.h: Improve documentation.
2069 This is based on blog entries from David Lemon and Dave Arnold (both
2070 from Adobe) with kind permission. Dave also helped in
2071 proof-reading.
2072
2073 2013-08-02 Werner Lemberg <wl@gnu.org>
2074
2075 [autofit] Move declaration of scripts into separate file.
2076
2077 This has the benefit that we don't need to duplicate the data at
2078 different places.
2079
2080 * src/autofit/afscript.h: New file.
2081
2082 * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define
2083 the enumeration values.
2084
2085 * src/autofit/afglobal.c: Include `afscript.h' to get the script
2086 specific header files.
2087 (af_script_classes): Include `afscript.h' to fill this array.
2088
2089 * src/autofit/afpic.c: Include `afscript.h' to get the script
2090 specific header files.
2091 (autofit_module_class_pic_init): Include `afscript.h' for
2092 initialization.
2093 * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT,
2094 AF_SCRIPT_CLASSES_REC_COUNT): Removed. Use `AF_SCRIPT_MAX' instead.
2095
2096 * src/autofit/rules.mk (AUTOF_DRV_H): Updated.
2097
2098 2013-08-02 Werner Lemberg <wl@gnu.org>
2099
2100 [autofit] Move declaration of writing systems into separate file.
2101
2102 This has the benefit that we don't need to duplicate the data at
2103 different places.
2104
2105 * src/autofit/afwrtsys.h: New file.
2106
2107 * src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to
2108 define the enumeration values.
2109
2110 * src/autofit/afglobal.c: Include `afwrtsys.h' to get the writing
2111 system specific header files.
2112 Include `afpic.h'.
2113 (af_writing_system_classes): Include `afwrtsys.h' to fill this
2114 array.
2115
2116 * src/autofit/afpic.c: Include `afwrtsys.h' to get the writing
2117 system specific header files.
2118 (autofit_module_class_pic_init): Include `afwrtsys.h' for
2119 initialization.
2120 * src/autofit/afpic.h (AF_WRITING_SYSTEM_CLASSES_COUNT,
2121 AF_WRITING_SYSTEM_CLASSES_REC_COUNT): Removed. Use
2122 `AF_WRITING_SYSTEM_MAX' instead.
2123
2124 2013-08-02 Werner Lemberg <wl@gnu.org>
2125
2126 [sfnt] Fix compilation with g++.
2127
2128 * src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use
2129 cast.
2130 (Load_SBit_Png): Pacify compiler.
2131
2132 2013-08-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2133 Werner Lemberg <wl@gnu.org>
2134
2135 [autofit] Fix `make multi'.
2136
2137 * include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY,
2138 FT_LOCAL_ARRAY_DEF): New macros.
2139
2140 * src/autofit/afglobal.c (af_writing_system_classes,
2141 af_script_classes): Use FT_LOCAL_ARRAY_DEF.
2142 * src/autofit/afglobal.h: Declare `af_writing_system_classes' and
2143 `af_script_classes'.
2144 * src/autofit/afloader.c: Include `afpic.h'.
2145
2146 2013-08-01 Werner Lemberg <wl@gnu.org>
2147
2148 Another round of cppcheck nitpicks.
2149
2150 The call was (from the top-level of the FreeType tree):
2151
2152 cppcheck --force \
2153 --enable=all \
2154 -I /usr/include \
2155 -I /usr/local/include \
2156 -I /usr/lib/gcc/i586-suse-linux/4.7/include \
2157 -I include \
2158 -I include/freetype \
2159 -I include/freetype/config \
2160 -I include/freetype/internal \
2161 -DFT2_BUILD_LIBRARY \
2162 . &> cppcheck.log
2163
2164 using cppcheck git commit f7e93f99.
2165
2166 Note that cppcheck still can't handle `#include FOO' (with `FOO' a
2167 macro).
2168
2169 */* Improve variable scopes.
2170 */* Remove redundant initializations which get overwritten.
2171
2172 * src/gxvalid/*: Comment out redundant code or guard it with
2173 FT_DEBUG_LEVEL_TRACE.
2174
2175 2013-07-30 Werner Lemberg <wl@gnu.org>
2176
2177 [autofit] Introduce `writing systems'.
2178
2179 This patch adds a new top level to the auto-hinter's script class
2180 hierarchy. It defines `writing systems' which can contain multiple
2181 scripts.
2182
2183 For example, the `latin' writing system (in file `aflatin.c') is
2184 able to support scripts like Latin, Cyrillic, Armenian, etc., which
2185 can be handled similarly.
2186
2187 Scripts are now named using four-letter OpenType tags.
2188
2189 * src/autofit/aftypes.h (AF_ScriptClassRec): Move relevant members
2190 to...
2191 (AF_WritingSystemClassRec): This new structure. It holds pointers
2192 to functions which can be shared among related scripts.
2193 (AF_WritingSystem): New enumeration.
2194 (AF_Script): Revised values using four-letter tags.
2195 (AF_DEFINE_WRITING_SYSTEM_CLASS): New macro.
2196 (AF_DEFINE_SCRIPT_CLASS): Updated.
2197
2198 * src/autofit/afglobal.c (af_writing_system_classes): New global,
2199 constant array.
2200 (af_script_classes): Updated.
2201 (af_face_globals_free): Updated.
2202 Remove assertion.
2203 (af_face_globals_get_metrics): Updated.
2204
2205 * src/autofit/afglobal.h (AF_SCRIPT_FALLBACK)
2206 [!AF_CONFIG_OPTION_CJK]: Handle this case.
2207
2208 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
2209 Updated.
2210
2211 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated;
2212 initialize structures for both writing systems and scripts.
2213 * src/autofit/afpic.h: Updated.
2214 (AF_WRITING_SYSTEM_CLASSES_GET): New macro.
2215
2216 * src/autofit/afcjk.c (af_cjk_writing_system_class): New writing
2217 system.
2218 (af_cjk_uniranges): Renamed to...
2219 (af_hani_uniranges): This.
2220 (af_cjk_script_class): Reduced and renamed to...
2221 (af_hani_script_class): This.
2222 * src/autofit/afcjk.h: Updated.
2223
2224 * src/autofit/afdummy.c (af_dummy_writing_system_class): New writing
2225 system.
2226 (af_dummy_script_class): Reduced and renamed to...
2227 (af_dflt_script_class): This.
2228 * src/autofit/afdummy.h: Updated.
2229
2230 * src/autofit/afindic.c (af_indic_writing_system_class): New writing
2231 system.
2232 (af_indic_uniranges): Renamed to...
2233 (af_deva_uniranges): This.
2234 (af_indic_script_class): Reduced and renamed to...
2235 (af_deva_script_class): This.
2236 * src/autofit/afcjk.h: Updated.
2237
2238 * src/autofit/aflatin.c (af_latin_writing_system_class): New writing
2239 system.
2240 (af_latin_uniranges): Renamed to...
2241 (af_latn_uniranges): This.
2242 (af_latin_script_class): Reduced and renamed to...
2243 (af_latn_script_class): This.
2244 * src/autofit/aflatin.h: Updated.
2245
2246 * src/autofit/aflatin2.c (af_latin2_writing_system_class): New
2247 writing system.
2248 (af_latin2_uniranges): Renamed to...
2249 (af_ltn2_uniranges): This.
2250 Synchronize ranges with `latin'.
2251 (af_latin2_script_class): Reduced and renamed to...
2252 (af_ltn2_script_class): This.
2253 * src/autofit/aflatin2.h: Updated.
2254
2255 2013-07-30 Werner Lemberg <wl@gnu.org>
2256
2257 [autofit] Variable renaming.
2258
2259 * src/autofit/aftypes.h (AF_ScriptMetricsRec):
2260 s/clazz/script_class/.
2261 Update all users.
2262
2263 2013-07-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2264
2265 Ignore libpng-config under cross-building configuration,
2266 because it will return the flags for the hosting environment.
2267
2268 * builds/unix/configure.raw: Ignore libpng-config when
2269 `cross_compiling' == yes.
2270
2271 2013-07-30 Behdad Esfahbod <behdad@google.com>
2272
2273 Prevent division by zero by a transparent color.
2274
2275 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra):
2276 Return 0 immediately, when alpha channel is zero.
2277
2278 2013-07-25 Behdad Esfahbod <behdad@google.com>
2279
2280 Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR.
2281
2282 Also disambiguate Google's color bitmap tables.
2283
2284 * include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR):
2285 New macros.
2286
2287 * include/freetype/internal/tttypes.h (TT_SbitTableType): Add
2288 TT_SBIT_TABLE_TYPE_CBLC.
2289
2290 * src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR.
2291
2292 * src/sfnt/ttsbit.c (tt_face_load_sbit,
2293 tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle
2294 TT_SBIT_TABLE_TYPE_CBLC.
2295
2296 2013-07-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
2297
2298 [sfnt] Fix for `make multi' target.
2299
2300 * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF().
2301
2302 2013-07-20 Werner Lemberg <wl@gnu.org>
2303
2304 * docs/INSTALL.GNU: Updated.
2305
2306 2013-07-20 Behdad Esfahbod <behdad@google.com>
2307
2308 [sfnt] Fix `sbix' table version handling.
2309
2310 * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
2311 USHORT version numbers are to be considered as `minor'.
2312
2313 2013-07-19 Werner Lemberg <wl@gnu.org>
2314
2315 [autofit] Fix segment classification for blue zones.
2316
2317 The old code (essentially unchanged since the very beginning)
2318 incorrectly handled this configuration
2319
2320 x -o- x
2321 / \
2322 / \
2323 / \
2324 o o
2325
2326 as flat and this
2327
2328 o o
2329 / /
2330 x| x|
2331 | |
2332 o---------------o
2333
2334 as round. (`o' and `x' are on and off points, respectively).
2335
2336 This is a major change which should improve the rendering results
2337 enormously for many TrueType fonts, especially in the range approx.
2338 20-40ppem, fixing the appearance of many overshoots.
2339
2340 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Look at the
2341 first and last points of the segment, not the points right before
2342 and after.
2343
2344 2013-07-19 Behdad Esfahbod <behdad@google.com>
2345
2346 [sfnt] `sbix' fix-ups.
2347
2348 * src/sfnt/sfobjs.c (sfnt_load_face): Apple's `sbix' color bitmaps
2349 are rendered scaled and then the `glyf' outline rendered on top. We
2350 don't support that yet, so just ignore the `glyf' outline and
2351 advertise it as a bitmap-only font.
2352
2353 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2354 [TT_SBIT_TABLE_TYPE_SBIX]: Return metrics in 26.6 units.
2355 (tt_face_load_sbix_image): Typo.
2356
2357 2013-07-18 Behdad Esfahbod <behdad@google.com>
2358
2359 [sfnt] Add support for Apple's `sbix' color bitmap table.
2360
2361 * include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen
2362 fields to FT_Short and FT_UShort, respectively.
2363 (TT_SBitTableType): New enumeration.
2364 (TT_FaceRec): Add `sbit_table_type' field.
2365
2366 * include/freetype/tttags.h (TTAG_sbix): New macro.
2367
2368 * src/sfnt/pngshim.c (Load_SBit_Png): Pass a more generic
2369 FT_GlyphSlot argument instead FT_Bitmap.
2370 Add flag to control map and metrics handling.
2371 Update all users.
2372
2373 * src/sfnt/ttsbit.c: Include `ttmtx.h'.
2374 (tt_face_load_eblc): Renamed to...
2375 (tt_face_load_sbit): This.
2376 Handlic `sbix' bitmaps.
2377 (tt_face_free_eblc): Renamed to...
2378 (tt_face_load_sbit): This.
2379 Updated.
2380 (tt_face_load_strike_metrics): Handle `sbix' bitmaps.
2381 (tt_face_load_sbix_image): New function.
2382 (tt_sbit_decoder_alloc_bitmap, tt_sbit_decoder_load_image,
2383 tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
2384 tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
2385 tt_sbit_decoder_load_image, tt_sbit_decoder_load_bitmap): Don't pass
2386 and handle load flags.
2387 (tt_sbit_decoder_load_bitmap) [!FT_CONFIG_OPTION_USE_PNG]: Better
2388 handle formats 17-19.
2389 Move color to grayscale conversion to...
2390 (tt_face_load_sbit_image): Here.
2391 Handle `sbix' bitmaps.
2392
2393 * src/sfnt/pngshim.h: Updated.
2394 * src/sfnt/ttsbit.h: Updated.
2395 * src/sfnt/sfdriver.c: Updated.
2396
2397 2013-07-18 Werner Lemberg <wl@gnu.org>
2398
2399 [sfnt] Ignore invalid magic number in `head' or `bhed'.
2400
2401 Other font engines seem to ignore it also. Problem reported by
2402 Hin-Tak Leung <htl10@users.sourceforge.net>.
2403
2404 * src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if
2405 we have an invalid magic number.
2406
2407 2013-07-16 Werner Lemberg <wl@gnu.org>
2408
2409 [smooth] Fix segfault caused by previous commit.
2410
2411 * src/smooth/ftgrays.c (gray_set_cell): Always compute
2412 `ras.invalid'.
2413
2414 2013-07-16 David Turner <digit@google.com>
2415
2416 [smooth] Improve performance.
2417
2418 Provide a work-around for an ARM-specific performance bug in GCC.
2419 This speeds up the rasterizer by more than 5%.
2420
2421 Also slightly optimize `set_gray_cell' and `gray_record_cell' (which
2422 also improves performance on other platforms by a tiny bit (<1%).
2423
2424 * src/smooth/ftgrays.c (FT_DIV_MOD): New macro.
2425 Use it where appropriate.
2426
2427 (gray_record_cell, gray_set_cell, gray_move_to,
2428 gray_convert_glyph_inner): Streamline condition handling.
2429
2430 2013-07-16 David Turner <digit@google.com>
2431
2432 [truetype] Add assembler code for TT_MulFix14 and TT_DotFix14.
2433
2434 This patch provides slightly optimized versions for ARM, x86, and
2435 x86_64 CPUs if built with GCC.
2436
2437 Also remove some dead code.
2438
2439 * src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long,
2440 TT_DotFix14_long_long): New functions.
2441
2442 2013-07-16 David Turner <digit@google.com>
2443
2444 Optimize FT_MulFix for x86_64 GCC builds.
2445
2446 This patch provides an optimized `FT_MulFix' implementation for
2447 x86_64 machines when FreeType is built with GCC, or compatible
2448 compilers like Clang.
2449
2450 Example:
2451 bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf
2452
2453 Before:
2454
2455 Load 4.863 us/op
2456 Load_Advances (Normal) 4.816 us/op
2457 Load_Advances (Fast) 0.028 us/op
2458 Render 2.753 us/op
2459 Get_Glyph 0.463 us/op
2460 Get_CBox 0.077 us/op
2461 Get_Char_Index 0.023 us/op
2462 Iterate CMap 13.898 us/op
2463 New_Face 12.368 us/op
2464 Embolden 0.028 us/op
2465 Get_BBox 0.302 us/op
2466
2467 After:
2468
2469 Load 4.617 us/op
2470 Load_Advances (Normal) 4.645 us/op
2471 Load_Advances (Fast) 0.027 us/op
2472 Render 2.789 us/op
2473 Get_Glyph 0.460 us/op
2474 Get_CBox 0.077 us/op
2475 Get_Char_Index 0.024 us/op
2476 Iterate CMap 13.403 us/op
2477 New_Face 12.278 us/op
2478 Embolden 0.028 us/op
2479 Get_BBox 0.301 us/op
2480
2481 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
2482 (FT_MulFix_x86_64): New function.
2483
2484 2013-07-16 David Turner <digit@google.com>
2485
2486 Speed up ARMv7 support.
2487
2488 When building for ARMv7 with thumb2 instructions, the optimized
2489 `FT_MulFix_arm' assembly routine was not being used.
2490
2491 The reason for this is in the `ftconfig.h' header, namely:
2492
2493 - The assembly routine uses the `smull' instruction which is not
2494 available when generating Thumb-1 machine code. It is available
2495 in Thumb-2 mode, though.
2496
2497 - The header was written a long time ago before Thumb-2 became
2498 widely popular (e.g. with Android). So it simply doesn't use the
2499 assembly routine if the `__thumb__' built-in macro is defined.
2500
2501 - When compiling in Thumb-2 mode, the compiler will define both
2502 `__thumb__' and `__thumb2__'.
2503
2504 By checking for `(__thumb2__ || !__thumb__)', we ensure that the
2505 assembly routine is only avoided when generating Thumb-1 code.
2506
2507 Given that this is performance-sensitive function, this improves
2508 `ftbench' as follows on a Galaxy Nexus:
2509
2510 Before (us/op) After (us/op)
2511
2512 - loading Arial.ttf glyphs at 14 ppem [1]
2513
2514 Load 34.285 33.098
2515
2516 - same operation with the light auto-hinter [2]
2517
2518 Load 31.317 29.590
2519
2520 - same operation without hinting [3]
2521
2522 Load 6.143 5.376
2523
2524 - loading Arial.ttf advances at 14 ppem [4]
2525
2526 Load_Advances (normal) 34.216 33.016
2527 Load_Advances (fast) 0.176 0.176
2528
2529 [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
2530 [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
2531 [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
2532 [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf
2533
2534 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
2535 (FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.
2536
2537 2013-06-28 Werner Lemberg <wl@gnu.org>
2538
2539 * docs/CHANGES: Updated.
2540
2541 2013-06-27 Werner Lemberg <wl@gnu.org>
2542
2543 * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard.
2544
2545 2013-06-25 Werner Lemberg <wl@gnu.org>
2546
2547 [cff] Add darkening limit to `darkening-parameters'.
2548
2549 * src/cff/cffdrivr.c (cff_property_set): Add check.
2550
2551 2013-06-25 Werner Lemberg <wl@gnu.org>
2552
2553 [cff] Add `darkening-parameters' property.
2554
2555 * include/freetype/ftcffdrv.h: Document it.
2556
2557 * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
2558 `darkening-parameters' property.
2559
2560 * src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array.
2561
2562 * src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams'
2563 argument and use it.
2564 Update all callers.
2565
2566 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy
2567 `darken_params' values.
2568
2569 * src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array.
2570
2571 * src/cff/cffobjs.c (cff_driver_init): Set default values for
2572 `darken_params'.
2573
2574 2013-06-25 Werner Lemberg <wl@gnu.org>
2575
2576 [docmaker] Code shuffling.
2577
2578 * src/tools/docmaker/tohtml.py (re_url): Move regexp...
2579 * src/tools/docmaker/sources.py: ... to this file.
2580
2581 2013-06-25 Werner Lemberg <wl@gnu.org>
2582
2583 [docmaker] Remove unused functions.
2584
2585 * src/tools/docmaker/content.py (DocMarkup.get_start,
2586 DocBlock.get_markup_name): Removed.
2587 * src/tools/docmaker/tohtml.py (html_quote0, dump_html_code,
2588 HtmlFormatter.make_html_words): Removed.
2589
2590 2013-06-25 Werner Lemberg <wl@gnu.org>
2591
2592 * builds/freetype.mk (dll): Remove target.
2593
2594 Problem reported by Jörg Günnewig <joerg.guennewig@googlemail.com>.
2595
2596 2013-06-25 Werner Lemberg <wl@gnu.org>
2597
2598 [docmaker] Recognise URLs.
2599
2600 * src/tools/docmaker/tohtml.py (re_url): New regular expression.
2601 (make_html_para): Use it.
2602
2603 2013-06-19 Werner Lemberg <wl@gnu.org>
2604
2605 * Version 2.5.0.1 released.
2606 ===========================
2607
2608
2609 Tag sources with `VER-2-5-0-1'.
2610
2611 * include/freetype/config/ftoption.h: Undefine
2612 CFF_CONFIG_OPTION_OLD_ENGINE.
2613 * devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE.
2614
2615 2013-06-19 Werner Lemberg <wl@gnu.org>
2616
2617 * builds/unix/install.mk (install): Don't create `cache' directory.
2618
2619 Found by Peter Breitenlohner <peb@mppmu.mpg.de>.
2620
2621 2013-06-19 Werner Lemberg <wl@gnu.org>
2622
2623 * Version 2.5.0 released.
2624 =========================
2625
2626
2627 Tag sources with `VER-2-5-0'.
2628
2629 * docs/VERSION.DLL: Update documentation and bump version number to
2630 2.5.0.
2631
2632 * README, Jamfile (RefDoc),
2633 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
2634 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
2635 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
2636 builds/win32/visualc/freetype.dsp,
2637 builds/win32/visualc/freetype.vcproj,
2638 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
2639 builds/win32/visualce/freetype.vcproj,
2640 builds/win32/visualce/index.html,
2641 builds/wince/vc2005-ce/freetype.vcproj,
2642 builds/wince/vc2005-ce/index.html,
2643 builds/wince/vc2008-ce/freetype.vcproj,
2644 builds/wince/vc2008-ce/index.html: s/2.4.12/2.5.0/, s/2412/250/.
2645
2646 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 5.
2647 (FREETYPE_PATCH): Set to 0.
2648
2649 * builds/unix/configure.raw (version_info): Set to 16:2:10.
2650
2651 * src/base/ftobjs.c (FT_Open_Face): Pacify compiler.
2652 * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto.
2653
2654 2013-06-18 Werner Lemberg <wl@gnu.org>
2655
2656 Fix Savannah bug #39269.
2657
2658 * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in
2659 case of reacollocation failures.
2660
2661 2013-06-18 Andrew Church <achurch+savannah@achurch.org>
2662
2663 Fix Savannah bug #39266.
2664
2665 If memory allocations fail at certain points while opening a font,
2666 FreeType can either crash due to a NULL dereference or leak memory.
2667
2668 * include/freetype/internal/ftobjs.c (FT_Face_InternalRec,
2669 FT_LibraryRec): Make `refcount' a signed integer. If, for example,
2670 FT_Open_Face() fails in a memory allocation before the face's
2671 reference count is set to 1, a subsequent `FT_Done_Library' call
2672 would otherwise loop over `FT_Done_Face' 2^32 times before freeing
2673 the face.
2674
2675 * src/base/ftobjs.c (open_face): Initialize `stream' and friends
2676 earlier.
2677 (FT_Open_Face) <Fail>: Behave correctly if `node' is NULL.
2678 (FT_Destroy_Module) <Fail>: Check that `renderer_clazz' is valid.
2679
2680 2013-06-14 Werner Lemberg <wl@gnu.org>
2681
2682 * src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC.
2683
2684 2013-06-06 Dave Arnold <darnold@adobe.com>
2685 Werner Lemberg <wl@gnu.org>
2686
2687 [cff] Add code to Adobe's engine to handle ppem > 2000.
2688
2689 * src/cff/cffgload.c (cff_slot_load): If we get
2690 FT_Err_Glyph_Too_Big, retry unhinted and scale up later on.
2691
2692 2013-06-12 Werner Lemberg <wl@gnu.org>
2693
2694 Another try on pragmas.
2695
2696 * include/freetype/internal/ftdebug.h: Move pragmas to...
2697 * include/freetype/internal/internal.h: ... this file since it gets
2698 included by all source files.
2699 * include/freetype/internal/ftserv.h: Remove pragma which has no
2700 effect.
2701
2702 2013-06-12 Werner Lemberg <wl@gnu.org>
2703
2704 * include/freetype/internal/ftdebug.h: Disable MSVC warning C4127.
2705
2706 This partially undoes commit 3f6e0e0c.
2707
2708 2013-06-12 Werner Lemberg <wl@gnu.org>
2709
2710 More compiler warning fixes.
2711
2712 */*: Use cast to `FT_Bool' (or `Bool') where appropriate.
2713
2714 2013-06-10 Werner Lemberg <wl@gnu.org>
2715
2716 [truetype] Improve handling of broken sbit advance widths.
2717
2718 * src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled)
2719 `linearHoriAdvance' if the sbit's `horiAdvance' value is zero.
2720
2721 Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem.
2722
2723 2013-06-10 Werner Lemberg <wl@gnu.org>
2724
2725 [sfnt] Improve embedded bitmap tracing.
2726
2727 * src/base/ftobjs.c (FT_Request_Size): Move trace message regarding
2728 bitmap strike match to...
2729 (FT_Match_Size): This function.
2730
2731 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics,
2732 tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
2733 tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
2734 tt_sbit_decoder_load_image): Decorate with tracing messages.
2735
2736 2013-06-10 Werner Lemberg <wl@gnu.org>
2737
2738 Fix Savannah bug #39160.
2739
2740 * src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too
2741 for the degenerate case.
2742
2743 2013-06-09 David Turner <digit@google.com>
2744
2745 * src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush.
2746
2747 This code, present since eight(!) years in the unused `CACHE'
2748 branch, has been forgotten to apply to the master branch. It's
2749 really amazing that noone has ever complained since
2750 `FTC_Manager_Reset' is pretty useless without flushing the cache.
2751
2752 2013-06-07 Werner Lemberg <wl@gnu.org>
2753
2754 Add and improve pragmas for MSVC compiler.
2755
2756 * include/freetype/internal/ftdebug.h: Remove pragmas.
2757 * include/freetype/internal/ftserv.h: Use push and pop for pragmas.
2758 * include/freetype/internal/ftvalid.h: Handle warning C4324.
2759 * src/base/ftobjs.c: Use push and pop for pragmas.
2760 * src/gzip/ftgzip.c: Handle warning C4244.
2761
2762 2013-06-07 Werner Lemberg <wl@gnu.org>
2763
2764 [cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/.
2765
2766 * src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it.
2767
2768 2013-06-06 Dave Arnold <darnold@adobe.com>
2769
2770 [cff] Add early exit feature for width-only calls.
2771
2772 This is for `FT_Get_Advance'.
2773
2774 There are 7 places where the spec says the width can be defined:
2775
2776 hstem/hstemhm
2777 vstem/vstemhm
2778 cntrmask/hintmask
2779 hmoveto
2780 vmoveto
2781 rmoveto
2782 endchar
2783
2784 * src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls,
2785 if possible.
2786
2787 (cf2_interpT2CharString) <cf2_cmdHSTEM>, <cf2_cmdVSTEM>,
2788 <cf2_cmdVMOVETO>, <cf2_cmdENDCHAR>, <cf2_cmdHINTMASK>,
2789 <cf2_cmdRMOVETO>, <cf2_cmdHMOVETO>: Exit early for width-only calls.
2790
2791 2013-06-06 Werner Lemberg <wl@gnu.org>
2792
2793 Next round of compiler fixes.
2794
2795 * builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init):
2796 Add proper cast.
2797
2798 * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix
2799 cast.
2800 * include/freetype/internal/ftstream.h: Decorate stream and frame
2801 macros with `FT_Long' and `FT_ULong' as appropriate.
2802
2803 * src/base/ftrfork.c (raccess_guess_darwin_hfsplus,
2804 raccess_guess_darwin_newvfs): Use cast.
2805
2806 * src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast.
2807
2808 * src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast.
2809 * src/cache/ftcmanag.h (FTC_ManagerRec): Ditto.
2810
2811 * src/cff/cf2arrst.c (cf2_arrstack_setNum_Elements): Use cast.
2812 * src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto.
2813 * src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto.
2814
2815 * src/cid/cidparse.c (cid_parser_new): Use cast.
2816
2817 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast.
2818
2819 * src/psaux/psobjs.c (reallocate_t1_table): Fix argument type.
2820
2821 * src/raster/ftraster.c (ft_black_reset): Use cast.
2822
2823 * src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast.
2824 (ALL_POINTS): Fix cast.
2825
2826 * src/type1/t1driver.c (t1_ps_get_font_value): Add casts.
2827 * src/type1/t1parse.c (T1_Get_Private_Dict): Add cast.
2828
2829 2013-06-05 Dave Arnold <darnold@adobe.com>
2830
2831 Fix more MSVC Win32 compiler warnings.
2832
2833 * src/base/ftobjs.c: Fix typo in MS pragma.
2834
2835 * src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
2836 `lineno' is only used in debug mode.
2837
2838 * src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in
2839 debug mode.
2840
2841 2013-06-05 Werner Lemberg <wl@gnu.org>
2842
2843 Fix compiler warnings.
2844
2845 * include/freetype/internal/ftmemory.h: Decorate memory allocation
2846 macros with `FT_Long' where appropriate.
2847 Remove duplicate of FT_MEM_QRENEW_ARRAY definition.
2848
2849 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
2850 cast.
2851
2852 * src/base/ftobjs.c: Add warning disabling pragma for MSVC while
2853 including `md5.c'.
2854
2855 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdESC>: Add
2856 cast.
2857
2858 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts.
2859 (tt_sbit_decoder_load_bitmap): Beautification.
2860
2861 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize
2862 variables (earlier).
2863
2864 * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler.
2865
2866 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants
2867 where appropriate.
2868
2869 * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
2870
2871 2013-06-04 Werner Lemberg <wl@gnu.org>
2872
2873 * src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'.
2874
2875 Problem reported by Ingmar Sittl <ingmar.sittl@elektrobit.com>.
2876
2877 2013-06-04 Werner Lemberg <wl@gnu.org>
2878
2879 Apply fixes for cppcheck nitpicks.
2880
2881 http://cppcheck.sourceforge.net/
2882
2883 The call was (from the top-level of the FreeType tree):
2884
2885 cppcheck --force \
2886 --enable=all \
2887 -I include \
2888 -I include/freetype/ \
2889 -I include/freetype/config/ \
2890 -I include/freetype/internal/ \
2891 . &> cppcheck.log
2892
2893 Note that the current version heavily chokes on FreeType, delivering
2894 many wrong results. I will report those issues to the cppcheck team
2895 so that a newer version gives improved results hopefully.
2896
2897 */* Improve variable scopes.
2898 */* Remove redundant initializations which get overwritten.
2899
2900 * src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable):
2901 Remove unused variable.
2902
2903 * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero.
2904
2905 * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate):
2906 Remove functionless code.
2907
2908 * src/tools/ftrandom.c (main): Fix memory leak.
2909
2910 2013-06-03 Werner Lemberg <wl@gnu.org>
2911
2912 Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option.
2913
2914 This controls whether the old FreeType CFF engine gets compiled into
2915 FreeType. It is now disabled by default.
2916
2917 * devel/ftoption.h, include/freetype/config/ftoption.h
2918 (CFF_CONFIG_OPTION_OLD_ENGINE): New macro.
2919
2920 * src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c
2921 (CFF_Operator, cff_argument_counts, cff_builder_add_point,
2922 cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load),
2923 src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use
2924 CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code.
2925
2926 * docs/CHANGES: Updated.
2927
2928 2013-06-02 Werner Lemberg <wl@gnu.org>
2929
2930 Fix PNG library handling.
2931
2932 * builds/unix/configure.raw: Don't use LIBPNG_LIBS but
2933 LIBPNG_LDFLAGS.
2934
2935 2013-05-23 Behdad Esfahbod <behdad@google.com>
2936
2937 Add support for color embedded bitmaps (eg. color emoji).
2938
2939 A new load flag, FT_LOAD_COLOR, makes FreeType load color
2940 embedded-bitmaps, following this draft specification
2941
2942 https://color-emoji.googlecode.com/git/specification/v1.html
2943
2944 which defines two new SFNT tables, `CBDT' and `CBLC' (named and
2945 modeled after `EBDT' and `EBLC', respectively). The color bitmaps
2946 are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA
2947 pre-multiplied sRGB images. If PNG support is available, PNG color
2948 images as defined in the same proposed specification are supported
2949 also.
2950
2951 Note that color bitmaps are converted to grayscale if client didn't
2952 ask for color.
2953
2954 * builds/unix/configure.raw: Search for libpng.
2955 Add `--without-png' option.
2956
2957 * devel/ftoption.h, include/freetype/config/ftoption.h
2958 (FT_CONFIG_OPTION_USE_PNG): New macro.
2959
2960 * include/freetype/freetype.h (FT_LOAD_COLOR): New load flag.
2961
2962 * include/freetype/ftimage.h (FT_Pixel_Mode): Add
2963 `FT_PIXEL_MODE_BGRA'.
2964
2965 * include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags.
2966
2967 * src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated.
2968 (ft_gray_for_premultiplied_srgb_bgra): New function.
2969 (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA.
2970
2971 * src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files.
2972
2973 * src/sfnt/sfnt.c: Include `pngshim.c'.
2974
2975 * src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h'
2976 (tt_face_load_eblc): Load `CBLC'.
2977 (tt_sbit_decoder_init): Load `CBDT'.
2978 (tt_sbit_decoder_alloc_bitmap): Pass load flags to select between
2979 color and grayscale bitmaps.
2980 Set `num_grays'. This is used by `ftview' to choose the blending
2981 algorithm.
2982 (tt_sbit_decoder_load_byte_aligned,
2983 tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound,
2984 tt_sbit_decoder_load_image): Pass load flag.
2985 s/write/pwrite/.
2986 Don't call `tt_sbit_decoder_alloc_bitmap'.
2987 Updated.
2988 (tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function.
2989 (tt_sbit_decoder_load_bitmap): Pass load flag.
2990 Handle new glyph formats 17, 18, and 19.
2991 Call `tt_sbit_decoder_alloc_bitmap'.
2992 Flatten color bitmaps if necessary.
2993 (tt_face_load_sbit_image): Updated.
2994
2995 * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'.
2996
2997 * docs/CHANGES: Updated.
2998
2999 2013-05-24 Guenter <info@gknw.net>
3000
3001 Apply Savannah patch #8055.
3002
3003 Make `apinames' create an import file for NetWare.
3004
3005 * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2.
3006 (OutputFormat): Add `OUTPUT_NETWARE_IMP'.
3007 (names_dump): Handle it.
3008 (usage): Updated.
3009 (main): Handle new command line flag `-wN'.
3010
3011 2013-05-23 Behdad Esfahbod <behdad@behdad.org>
3012
3013 Compilation fix.
3014
3015 * src/truetype/ttinterp.c (TT_RunIns)
3016 [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work.
3017
3018 2013-05-22 Infinality <infinality@infinality.net>
3019
3020 [truetype] Formatting and an additional subpixel tweak.
3021
3022 * src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix.
3023 * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules):
3024 Revert previous modification for Verdana clones.
3025
3026 2013-05-22 Infinality <infinality@infinality.net>
3027
3028 [truetype] Adjust subpixel zp2 moves and tweak rules.
3029
3030 These modifications fix thin diagonal stems in some legacy fonts.
3031
3032 * src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro.
3033 (Move_Zp2_Point): Don't always disable x moves for subpixel rendering.
3034 (Ins_SHP): Disable x moves here for subpixel rendering.
3035 (Ins_SHPIX): Only disable x moves in compatibility mode.
3036 Split out zp2 move reversals and reorder conditional respectively.
3037
3038 * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight.
3039 Only adjust Verdana clones for 17 ppem.
3040 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New.
3041 (ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'.
3042
3043 2013-05-20 Infinality <infinality@infinality.net>
3044
3045 [truetype] Simplify and improve subpixel function detection.
3046
3047 Some small enhancements have allowed the removal of many macros and
3048 the simplification of existing rules in `ttsubpix.c'.
3049
3050 * src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX,
3051 SPH_TWEAK_ALLOW_X_MOVE_ZP2,
3052 SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES,
3053 SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed.
3054 (SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro.
3055
3056 * src/truetype/ttsubpix.c: Updated affected rules.
3057
3058 * src/truetype/ttinterp.c (Direct_Move_X): Updated.
3059 (INS_FDEF): Add additional function detection.
3060 (INS_ENDF): Set runtime flag.
3061 (Ins_CALL): Skip the call under certain conditions.
3062 Remove bad code.
3063 (Ins_LOOPCALL): Skip the call under certain conditions.
3064 Remove bad code.
3065 (Move_Zp2_Point): Updated.
3066 (Ins_SHPIX): Updated.
3067 Skip the move under some situations.
3068 (Ins_MIAP): Improve conditions.
3069 (Ins_MIRP): Updated.
3070 (Ins_DELTAP): Skip move under certain conditions.
3071 Simplify conditions.
3072 (TT_RunIns): Updated.
3073 Add code to handle new function detection.
3074 Trace messages.
3075
3076 2013-05-17 Werner Lemberg <wl@gnu.org>
3077
3078 Update more FT_Err_XXX macros using FT_ERR and FT_THROW;
3079
3080 * builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c,
3081 builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it.
3082
3083 2013-05-15 Werner Lemberg <wl@gnu.org>
3084
3085 [truetype] Add `interpreter-version' property.
3086
3087 This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable
3088 at runtime.
3089
3090 * include/freetype/ftttdrv.h: New file.
3091
3092 * include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New
3093 macro.
3094
3095 * src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H.
3096 (tt_property_set, tt_property_get): Fill templates.
3097
3098 * src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version'
3099 member.
3100 Remove unused `extension_component' member.
3101
3102 * src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H.
3103 (tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph,
3104 compute_glyph_metrics, tt_loader_init): Use `interpreter_version'.
3105
3106 * src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H.
3107 (SUBPIXEL_HINTING): New macro to check `interpreter_version' flag.
3108 Update all affected functions to use it.
3109 Use TT_INTERPRETER_VERSION_XXX where appropriate.
3110
3111 * src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H.
3112 (tt_driver_init): Initialize `interpreter_version'.
3113
3114 * src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H.
3115 Use TT_INTERPRETER_VERSION_XXX where appropriate.
3116
3117 2013-05-13 Werner Lemberg <wl@gnu.org>
3118
3119 [truetype] Avoid empty source file.
3120
3121 * src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]:
3122 Provide dummy typedef.
3123
3124 2013-05-13 Werner Lemberg <wl@gnu.org>
3125
3126 * src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable.
3127
3128 Fix suggested by Vaibhav Nagarnaik <vnagarnaik@gmail.com>.
3129
3130 2013-05-13 Brian Nixon <bnixon@yahoo.com>
3131
3132 Fix Savannah bug #38970.
3133
3134 * src/base/ftdebug.c, builds/win32/ftdebug.c,
3135 builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c
3136 (ft_debug_init): Don't read past the environment variable FT2_DEBUG.
3137
3138 2013-05-12 Werner Lemberg <wl@gnu.org>
3139
3140 [truetype] Add framework for TrueType properties.
3141
3142 * src/truetype/ttdrivr.c: Include FT_SERVICE_PROPERTIES_H.
3143 (tt_property_set, tt_property_get): New functions, still empty.
3144 Define `tt_service_properties' service.
3145 Update `tt_services'.
3146
3147 * src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H.
3148 (TT_SERVICE_PROPERTIES_GET): New macro.
3149 (TTModulePIC): Add `tt_service_properties'.
3150
3151 2013-05-12 Werner Lemberg <wl@gnu.org>
3152
3153 Fix Savannah bug #38967.
3154
3155 * src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast.
3156
3157 2013-05-12 Werner Lemberg <wl@gnu.org>
3158
3159 Introduce unsigned 64bit type (if available).
3160
3161 * include/freetype/config/ftconfig.h: Define FT_UINT64 if available.
3162 [FT_LONG64]: Provide FT_UInt64.
3163
3164 * builds/unix/ftconfig.in: Synchronized.
3165
3166 2013-05-12 Werner Lemberg <wl@gnu.org>
3167
3168 Fix Savannah bug #38968.
3169
3170 * include/freetype/ftmodapi.h: Add `FT_EXPORT' to
3171 FT_Property_{Set,Get}.
3172 * src/base/ftobjs.c: Add `FT_EXPORT_DEF' to
3173 FT_Property_{Set,Get}.
3174
3175 2013-05-10 Werner Lemberg <wl@gnu.org>
3176
3177 [sfnt] Clean up bitmap code.
3178
3179 * src/sfnt/ttsbit.c: Deleted.
3180 * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'.
3181 * rules.mk (SFNT_DRV_H): Updated.
3182
3183 2013-05-10 Werner Lemberg <wl@gnu.org>
3184
3185 */* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code.
3186
3187 ----------------------------------------------------------------------------
3188
3189 Copyright 2013-2014 by
3190 David Turner, Robert Wilhelm, and Werner Lemberg.
3191
3192 This file is part of the FreeType project, and may only be used, modified,
3193 and distributed under the terms of the FreeType project license,
3194 LICENSE.TXT. By continuing to use, modify, or distribute this file you
3195 indicate that you have read the license and understand and accept it
3196 fully.
3197
3198
3199 Local Variables:
3200 version-control: never
3201 coding: utf-8
3202 End: