blob: ea0f612b0ba2e43e9e6dba4bf0443194f78f4378 [file] [log] [blame]
Werner Lembergab98c5e2014-02-08 11:34:33 +010012014-02-08 Werner Lemberg <wl@gnu.org>
2
3 Fix Windows build directories.
4
5 The build target is now `windows' instead of `win32'.
6
7 Problem reported by Nickolas George <darknova.clan@gmail.com>.
8
9 * builds/modules.mk: Don't use `win32' and `win16' (!) but
10 `windows'.
11
12 * builds/windows/detect.mk, builds/windows/win32-def.mk:
13 s/win32/windows/.
14
Eugen Sawina8ceae42014-02-08 06:30:06 +0100152014-02-08 Eugen Sawin <esawin@mozilla.com>
16
17 Fix Savannah bug #41507.
18
19 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap)
20 [!FT_CONFIG_OPTION_USE_PNG] <17, 17, 19>: Fix error handling.
21
Dave Arnold355b3592014-02-08 06:23:04 +0100222014-02-08 Dave Arnold <darnold@adobe.com>
23
24 [cff] Fix minor performance bug.
25
26 * src/cff/cf2font.c (cf2_font_setup): Darkening amount and blue zone
27 calculations are now cached and not recomputed on each glyph.
28
Werner Lemberg6dce1362014-02-05 15:40:47 +0100292014-02-05 Werner Lemberg <wl@gnu.org>
30
31 Fix problems with perl 5.8.8 as distributed with current MinGW.
32
33 * src/tools/afblue.pl: Work-around for Perl bug #63402.
34 (string_re): Avoid `possessive quantifiers', which have been
35 introduced in Perl version 5.10.
36
Werner Lemberga8772912014-02-04 11:36:08 +0100372014-02-04 Werner Lemberg <wl@gnu.org>
38
Werner Lembergd87f9a62014-02-04 16:14:09 +010039 Fix compilation with MinGW.
40
41 Right now, compilation out of the box with latest MinGW is broken
42 due to bugs in header files of mingwrt 4.0.3 in strict ANSI mode,
43 cf.
44
45 https://sourceforge.net/p/mingw/bugs/2024/
46 https://sourceforge.net/p/mingw/bugs/2046/
47
48 * builds/unix/configure.raw: Don't set `-ansi' flag for MinGW.
49
502014-02-04 Werner Lemberg <wl@gnu.org>
51
Werner Lemberga8772912014-02-04 11:36:08 +010052 [autofit] Minor fix.
53
54 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
55 src/autofit/aflatin.c (af_latin_metrics_init_widths): Fix handling
56 of alternative standard characters.
57 This also fixes a compilation warning in non-debug mode.
58
Werner Lembergee3778d2014-02-03 11:16:47 +0100592014-02-03 Werner Lemberg <wl@gnu.org>
60
61 [cff] Fix Savannah bug #41363.
62
63 * src/cff/cf2ft.c (cf2_checkTransform): Convert assertion into
64 parameter check.
65 (cf2_decoder_parse_charstrings): Call `cf2_checkTransform' only if
66 we are scaling the outline.
67 (cf2_getPpemY): Remove problematic assertion.
68
Werner Lemberga3364002014-01-26 09:45:23 +0100692014-01-26 Werner Lemberg <wl@gnu.org>
70
71 [autofit] Introduce two more slots for standard characters.
72
73 This is useful for OpenType features like `c2sc' (caps to small
74 caps) that don't have lowercase letters by definition, or other
75 features that mainly operate on numerals.
76
77 * src/autofit/afscript.h: Add more standard characters.
78
79 * src/autofit/aftypes.h: Update use of `SCRIPT' macro.
80 (AF_ScriptClassRec): Add members to hold two more standard
81 characters.
82 (AF_DEFINE_SCRIPT_CLASS): Updated.
83
84 * src/autofit/afglobal.c, src/autofit/afglobal.h,
85 * src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/hbshim.c:
86 Update use of `SCRIPT' macro.
87
88 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
89 src/autofit/aflatin.c (af_latin_metrics_init_widths): Scan two more
90 standard characters.
91
Werner Lembergeb7691c2014-01-24 19:04:22 +0100922014-01-24 Werner Lemberg <wl@gnu.org>
93
94 Fix Savannah bug #41320.
95
96 * src/autofit/aflatin.c (af_latin_metrics_init_blues)
97 <AF_LATIN_IS_LONG_BLUE>: Avoid negative index of `last'.
98
Werner Lemberg8b281f82014-01-23 08:14:53 +0100992014-01-23 Werner Lemberg <wl@gnu.org>
100
Werner Lemberg752f3912014-01-23 09:14:25 +0100101 Fix Savannah bug #41310.
102
103 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) <glyph_format==5>:
104 Don't check metrics, which this format doesn't have.
105 This is another correction to the commit from 2013-11-21.
106
1072014-01-23 Werner Lemberg <wl@gnu.org>
108
Werner Lemberg8b281f82014-01-23 08:14:53 +0100109 Fix Savannah bug #41309.
110
111 * src/type1/t1load.c (t1_parse_font_matrix): Properly handle result
112 of `T1_ToFixedArray'.
113
114 * src/cid/cidload.c (cid_parse_font_matrix): Synchronize with
115 `t1_parse_font_matrix'.
116
117 * src/type42/t42parse.c (t42_parse_font_matrix): Synchronize with
118 `t1_parse_font_matrix'.
119 (t42_parse_encoding): Synchronize with `t1_parse_encoding'.
120
121 * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_BBOX>,
122 <T1_FIELD_TYPE_MMOX>: Properly handle result of `ps_tofixedarray'.
123
Werner Lembergff8dc312014-01-22 09:19:57 +01001242014-01-22 Werner Lemberg <wl@gnu.org>
125
126 * src/autofit/hbshim.c (af_get_coverage): Fix memory leaks.
127
Werner Lemberg6a700782014-01-16 08:55:40 +01001282014-01-16 Werner Lemberg <wl@gnu.org>
129
130 [autofit] Improve tracing of style coverages.
131
132 * include/internal/fttrace.h: Add `afglobal' for tracing style
133 coverages.
134
135 * src/autofit/afglobal.c: Include FT_INTERNAL_DEBUG_H.
136 (FT_COMPONENT): Define.
137 (af_face_globals_compute_style_coverage): Trace `gstyles' array
138 data.
139
Werner Lemberg7cbfdff2014-01-09 07:26:06 +01001402014-01-09 Werner Lemberg <wl@gnu.org>
141
142 Fix Savannah bug #41158.
143
144 * builds/unix/install.mk (install): Create man page directory.
145
Chongyu Zhu94c66942014-01-08 08:52:59 +01001462014-01-08 Chongyu Zhu <lembacon@gmail.com>
147
148 [arm] Fix Savannah bug #41138, part 2.
149
150 * builds/unix/ftconfig.in (FT_MulFix_arm), include/config/ftconfig.h
151 (FT_MulFix_arm), src/truetype/ttinterp.c (TT_MulFix14_arm): Fix
152 preprocessor conditionals for `add.w'.
153
Werner Lembergc46fa862014-01-08 08:45:40 +01001542014-01-08 Werner Lemberg <wl@gnu.org>
155
156 [autofit] Fix Savannah bug #41138, part 1.
157
158 * src/tools/afblue.pl <Handling #endif>: Produce correct auxiliary
159 enumeration names for generated `#else'.
160
161 * src/autofit/afblue.h: Regenerated.
162
Werner Lemberg3e5a3742014-01-06 07:53:10 +01001632014-01-06 Werner Lemberg <wl@gnu.org>
164
165 Add manual page for `freetype-config'.
166 Contributed by Nis Martensen <nis.martensen@web.de>.
167
168 * docs/freetype-config.1: New file.
169
170 * builds/unix/unix-def.in (mandir): Define.
171 * builds/unix/install.mk (install, uninstall): Handle manpage.
172
Werner Lemberg991cbcc2014-01-05 13:24:56 +01001732014-01-05 Werner Lemberg <wl@gnu.org>
174
175 [autofit] Minor fixes for `afblue.pl'.
176
177 * src/tools/afblue.pl (aux_name): Don't use `reverse'.
178 <Handling #endif>: Use proper indentation for generated `#else'.
179
180 * src/autofit/afblue.h: Regenerated.
181
Werner Lemberg0d977442014-01-04 11:46:34 +01001822014-01-04 Werner Lemberg <wl@gnu.org>
183
184 [autofit] Fix Indic scripts.
185
186 Split the single, incorrect Indic entry into separate scripts so
187 that the covered ranges are the same: Bengali, Devanagari, Gujarati,
188 Gurmukhi, Kannada, Limbu, Malayalam, Oriya, Sinhala, Sundanese,
189 Syloti Nagri, Tamil, Telugu, and Tibetan. At the same time, remove
190 entries for Meetai Mayak and Sharada – the Unicode ranges were
191 incorrect (and nobody has complained about that), fonts are scarce
192 for those scripts, and the Indic auto-hinter support is rudimentary
193 anyways.
194
195 * src/autofit/afscript.h: Updated, using AF_CONFIG_OPTION_INDIC and
196 AF_CONFIG_OPTION_CJK.
197
198 * src/autofit/afstyles.h (STYLE_DEFAULT_INDIC): New auxiliary macro.
199 Use it, together with AF_CONFIG_OPTION_INDIC and
200 AF_CONFIG_OPTION_CJK, to update.
201
202 * src/autofit/afranges.c [AF_CONFIG_OPTION_INDIC]: Updated.
203 [!AF_CONFIG_OPTION_INDIC, !AF_CONFIG_OPTION_CJK]: Removed.
204 Sort entries by tags.
205
Werner Lemberg5c7f5502014-01-03 10:48:26 +01002062014-01-03 Werner Lemberg <wl@gnu.org>
207
Werner Lembergecdb0e32014-01-03 20:49:31 +0100208 [autofit] Thinko.
209
210 * src/autofit/hbshim.c (af_get_char_index): Similar to
211 `af_get_coverage', reject glyphs which are not substituted.
212
2132014-01-03 Werner Lemberg <wl@gnu.org>
214
Werner Lemberga42f9182014-01-03 18:29:41 +0100215 [autofit] Fix handling of default coverages.
216
Werner Lemberg1b5bc892014-01-03 18:33:24 +0100217 With this commit, the implementation of coverage handling is
218 completed.
219
220 * src/autofit/hbshim.c (af_get_coverage): Exit early if nothing to
221 do.
222 Reject coverages which don't contain appropriate glyphs for blue
223 zones.
224
2252014-01-03 Werner Lemberg <wl@gnu.org>
226
227 [autofit] Fix handling of default coverages.
228
Werner Lemberga42f9182014-01-03 18:29:41 +0100229 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
230 First handle non-default coverages, then the default coverage of the
231 default script, and finally the other default coverages.
232
2332014-01-03 Werner Lemberg <wl@gnu.org>
234
Werner Lembergf45749b2014-01-03 18:09:36 +0100235 [autofit] Fix scaling of HarfBuzz shaping.
236
237 * src/autofit/hbshim.c (af_get_char_index): Scale to units per EM.
238
2392014-01-03 Werner Lemberg <wl@gnu.org>
240
Werner Lemberg5c7f5502014-01-03 10:48:26 +0100241 [autofit] Better ftgrid support.
242
243 * src/autofit/afhints.c (af_glyph_hints_get_segment_offset): Add
244 parameters `is_blue' and `blue_offset'.
245
Werner Lemberg73cc8332014-01-01 07:10:36 +01002462014-01-01 Werner Lemberg <wl@gnu.org>
247
Werner Lemberg55cd7e02014-01-02 13:07:48 +0100248 [autofit] Remove some styles.
249
250 * src/autofit/afcover.h: Remove coverages for alternative fractions,
251 denominators, numerators, and fractions.
252
253 * src/autofit/afstyles.h (META_STYLE_LATIN): Updated.
254
2552014-01-01 Werner Lemberg <wl@gnu.org>
256
Werner Lembergc973e672014-01-01 16:34:42 +0100257 [autofit] Add more styles.
258
259 * src/autofit/afstyles.h (STYLE_LATIN, META_STYLE_LATIN): New
260 auxiliary macros; use them to define styles for Cyrillic, Greek, and
261 Latin.
262
263 * src/autofit/afcover.h: Remove coverage for oldstyle figures.
264 Since those digits are used in combination with ordinary letters, it
265 makes no sense to handle them separately.
266
267 * src/autofit/afglobal.c (af_face_globals_get_metrics): Don't limit
268 `options' parameter to 4 bits.
269
2702014-01-01 Werner Lemberg <wl@gnu.org>
271
Werner Lembergabb2f732014-01-01 08:00:16 +0100272 [autofit] Fix style assignments to glyphs.
273
274 * src/autofit/hbshim.c (af_get_coverage)
275 [FT_CONFIG_OPTION_USE_HARFBUZZ]: Scan GPOS coverage of features also
276 so that we can skip glyphs that have both GSUB and GPOS data.
277
2782014-01-01 Werner Lemberg <wl@gnu.org>
279
Werner Lemberg0950f3a2014-01-01 07:48:20 +0100280 * src/autofit/hbshim.c: s/{lookups,glyphs}/gsub_{lookups,glyphs}/.
281
2822014-01-01 Werner Lemberg <wl@gnu.org>
283
Werner Lemberg73cc8332014-01-01 07:10:36 +0100284 [autofit] Implement and use `af_get_char_index' with HarfBuzz.
285
286 * src/autofit/hbshim.c (COVERAGE) [FT_CONFIG_OPTION_USE_HARFBUZZ]:
287 Redefine to construct HarfBuzz features.
288 (af_get_char_index) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Rewritten.
289
290 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Use
291 `y_offset' to adjust `best_y'.
292
Werner Lembergc9d99472013-12-31 08:16:57 +01002932013-12-31 Werner Lemberg <wl@gnu.org>
294
Werner Lemberg785f3852013-12-31 09:45:10 +0100295 [autofit] s/AF_STYLE_...._DEFAULT/AF_STYLE_...._DFLT/i.
296
2972013-12-31 Werner Lemberg <wl@gnu.org>
298
Werner Lembergc9d99472013-12-31 08:16:57 +0100299 [autofit] Fix interface of `af_get_char_index'.
300
301 * src/autofit/hbshim.c (af_get_char_index): Return error value.
302 Add argument for y offset (to be used in a yet-to-come patch).
303
304 * src/autofit/hbshim.h, src/autofit/afcjk.c,
305 src/autofit/aflatin.c: Updated.
306
Werner Lemberg44aa7e02013-12-30 07:41:22 +01003072013-12-30 Werner Lemberg <wl@gnu.org>
308
309 [autofit] Don't combine multiple features into one set.
310
311 Combining them, as originally envisioned, would lead to much more
312 complicated code, as investigations have shown meanwhile. The major
313 drawback is that we run out of available style slots much earlier.
314 However, this is only a theoretical issue since we don't support a
315 large number of scripts currently.
316
317 * src/autofit/afcover.h: Replace `COVERAGE_{1,2,3}' macros with
318 a single-element `COVERAGE' macro, sort the elements by the feature
319 tags, and add entry for `ruby'.
320
321 * src/autofit/aftypes.h: Updated.
322 * src/autofit/hbshim.c: Updated.
323
Werner Lemberg6af01a02013-12-28 08:55:24 +01003242013-12-28 Werner Lemberg <wl@gnu.org>
325
Werner Lemberg072dc452013-12-28 12:26:21 +0100326 [autofit] Code shuffling to reduce use of cpp macros.
327
328 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
329 Call `af_get_coverage' unconditionally.
330
331 * src/autofit/autofit.c: Include `hbshim.c' unconditionally.
332
333 * src/autofit/hbshim.c (af_get_coverage)
334 [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Provide dummy function.
335
336 * src/autofit/hbshim.h: Provide function declarations
337 unconditionally.
338
3392013-12-28 Werner Lemberg <wl@gnu.org>
340
Werner Lemberg17af5862013-12-28 10:33:01 +0100341 [autofit] Add wrapper function for `FT_Get_Char_Index'.
342
343 Yet-to-come changes will provide HarfBuzz functionality for the new
344 function.
345
346 * src/autofit/hbshim.c (af_get_char_index): New function.
347 * src/autofit/hbshim.h: Updated.
348
349 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
350 af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
351
352 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
353 af_latin_metrics_init_blues, af_latin_metrics_check_digits):
354 Updated.
355
3562013-12-28 Werner Lemberg <wl@gnu.org>
357
Werner Lemberg6af01a02013-12-28 08:55:24 +0100358 [autofit] Use `global' HarfBuzz font object.
359
360 We now use `hb_font' instead of `hb_face' since yet-to-come changes
361 need this.
362
363 * src/autofit/afglobal.h: Include `hbshim.h'.
364 (AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member
365 `hb_font'.
366
367 * src/autofit/afglobal.c (af_face_globals_new)
368 [FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'.
369 (af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy
370 `hb_font'.
371
372 * src/autofit/hbshim.h: Include HarfBuzz headers.
373
374 * src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz
375 headers.
376 (af_get_coverage): Updated.
377
Werner Lembergd32a7d32013-12-27 19:26:04 +01003782013-12-27 Werner Lemberg <wl@gnu.org>
379
380 [autofit] Handle `DFLT' OpenType script for coverages.
381
382 * include/ftautoh.h: Document new `default-script' property.
383
384 * src/autofit/hbshim.c (af_get_coverage): Use `AF_FaceGlobals' for
385 type of first parameter.
386 (script_tags): Add one more element.
387 (af_get_coverage): Adjust `script_tags' to handle `DFLT' script tag.
388
389 * src/autofit/hbshim.h: Updated.
390
391 * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
392 Updated.
393
394 * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT): New macro.
395
396 * src/autofit/afmodule.h (AF_ModuleRec): New `default_script'
397 member.
398
399 * src/autofit/afmodule.c (af_property_set, af_property_get): Handle
400 `default-script' property.
401 (af_autofitter_init): Updated.
402
suzuki toshiyae2d2b152013-12-27 16:44:24 +09004032013-12-27 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
404
405 [ftrfork] Fix the face order difference between POSIX and Carbon.
406
407 The fragmented resources in Suitcase and .dfont should be reordered
Werner Lemberg00a7b512013-12-27 19:18:49 +0100408 when `POST' resource for Type1 is being restored, but reordering of
suzuki toshiyae2d2b152013-12-27 16:44:24 +0900409 sfnt resources induces the different face order. Now the ordering
Werner Lemberg00a7b512013-12-27 19:18:49 +0100410 is restricted to `POST' resource only, to prevent the different
411 order issue (e.g. the face index in the fontconfig cache generated
412 with Carbon framework is incompatible with that by FreeType 2
413 without Carbon framework.) Found by Khaled Hosny and Hin-Tak Leung.
414
suzuki toshiyae2d2b152013-12-27 16:44:24 +0900415 http://lists.gnu.org/archive/html/freetype-devel/2013-02/msg00035.html
416 http://lists.gnu.org/archive/html/freetype-devel/2013-12/msg00027.html
417
418 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Add a switch
Werner Lemberg44aa7e02013-12-30 07:41:22 +0100419 `sort_by_res_id' to control the fragmented resource ordering.
Werner Lemberg00a7b512013-12-27 19:18:49 +0100420 * include/internal/ftrfork.h: Declare new switch.
421 * src/base/ftobjs.c (IsMacResource): Enable the sorting for `POST'
422 resource, and disable the sorting for `sfnt' resource.
suzuki toshiyae2d2b152013-12-27 16:44:24 +0900423
Werner Lemberg5f577462013-12-25 08:50:50 +01004242013-12-25 Werner Lemberg <wl@gnu.org>
425
426 Fix Savannah bug #40997.
427
428 * src/bdf/bdfdrivr.c (BDF_Face_Init): Only use OR operator to
429 adjust face flags since FT_FACE_FLAG_EXTERNAL_STREAM might already
430 be set.
431 * src/cff/cffobjs.c (cff_face_init): Ditto.
432 * src/cid/cidobjs.c (cid_face_init): Ditto.
433 * src/pcf/pcfread.c (pcf_load_font): Ditto.
434 * src/pfr/pfrobjs.c (pfr_face_init): Ditto.
435 * src/type1/t1objs.c (T1_Face_Init): Ditto.
436 * src/type42/t42objs.c (T42_Face_Init): Ditto.
437 * src/winfonts/winfnt.c (FNT_Face_Init): Ditto.
438
Werner Lembergc4e968e2013-12-21 07:23:08 +01004392013-12-21 Werner Lemberg <wl@gnu.org>
440
Werner Lemberg19241342013-12-21 21:31:38 +0100441 [autofit] Introduce `coverages'.
442
443 Coverages are the interface to the HarfBuzz library to acces
444 OpenType features for handling glyphs not addressable by the cmap.
445
446 Right now, compilation of HarfBuzz is only added to the development
447 build. A solution for standard build mode will be delayed until
448 HarfBuzz gets split into two libraries to avoid mutual dependencies
449 between FreeType and HarfBuzz.
450
451 Note that this is only a first step in handling coverages, basically
452 providing the framework only. Code for handling selected OpenType
453 features (this is, actually using the data in `afcover.h') will
454 follow.
455
456 * devel/ftoption.h, include/config/ftoption.h
457 (FT_CONFIG_OPTION_USE_HARFBUZZ): New macro.
458
459 * src/autofit/hbshim.c, src/autofit/hbshim.h, src/autofit/afcover.h:
460 New files.
461
462 * src/autofit/afscript.h: Add HarfBuzz script name tags.
463
464 * src/autofit/afstyles.h: Add default coverage enumeration values.
465
466 * src/autofit/aftypes.h: Update use of `SCRIPT' and `STYLE' macros.
467 (AF_Coverage): New enumeration (generated by `afcover.h').
468 (AF_StyleClassRec): New member `coverage'.
469 (AF_DEFINE_STYLE_CLASS): Updated.
470
471 * include/internal/fttrace.h: Add `afharfbuzz' for tracing coverage
472 data.
473
474 * src/autofit/afglobal.h: Update use of `SCRIPT' and `STYLE' macros.
475 (AF_SCRIPT_FALLBACK): Renamed to ...
476 (AF_STYLE_FALLBACK): ... this.
477
478 * src/autofit/afglobal.c: Include `hbshim.c'.
479 Update use of `SCRIPT' and `STYLE' macros.
480 (af_face_globals_compute_style_coverage)
481 [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call `af_get_coverage'.
482 Update.
483
484 * src/autofit/afmodule.h (AF_ModuleRec):
485 s/fallback_script/fallback_style/.
486
487 * src/autofit/afmodule.c (af_property_set): Adapt handling of
488 `fallback-script' property to set a fallback style.
489 (af_property_get, af_autofitter_init): Updated.
490
491 * src/autofit/afpic.c: Update use of `SCRIPT' and `STYLE' macros.
492
493 * src/autofit/afranges.h: Update use of `SCRIPT' macro.
494
495 * src/autofit/autofit.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include
496 `hbshim.c'.
497
498 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `hbshim.c'.
499 (AUTOF_DRV_H): Add `afcover.h'.
500
501 * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Use pkg-config for
502 all libraries needed by FreeType.
503
5042013-12-21 Werner Lemberg <wl@gnu.org>
505
Werner Lembergb337fa22013-12-21 19:33:15 +0100506 Fix Savannah bug #40975 (sort of).
507
508 * src/truetype/ttinterp.c (Ins_IP): Fix sign typo to make FreeType
509 behave the same as the Windows TrueType engine for the invalid case.
510
5112013-12-21 Werner Lemberg <wl@gnu.org>
512
Werner Lemberg3bf60952013-12-21 08:49:11 +0100513 [autofit] Make PIC mode work actually.
514
515 * src/autofit/afpic.h (AFModulePIC): Fix array sizes to fit the
516 enumeration values automatically generated by including `afscript.h'
517 and friends.
518
519 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
520
5212013-12-21 Werner Lemberg <wl@gnu.org>
522
Werner Lembergbd413862013-12-21 08:14:25 +0100523 Fix PIC linking.
524
525 * include/internal/ftrfork.h (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Fix
526 generated function name.
527
528 * src/base/basepic.c (FT_Init_Table_raccess_guess_table): Rename
529 to ...
530 (FT_Init_Table_ft_raccess_guess_table): ... this so that the
531 function name correctly corresponds to what the macro framework
532 expects.
533
534 * src/psnames/rules.mk (PSNAMES_DRV_SRC_S): Use correct file name so
535 that PIC functions are compiled also.
536
5372013-12-21 Werner Lemberg <wl@gnu.org>
538
Werner Lembergc4e968e2013-12-21 07:23:08 +0100539 [base] Add missing dependencies to Makefile.
540
541 * src/base/rules.mk (BASE_SRC): Add `basepic.c' and `ftpic.c'.
542 (BASE_H): Add `basepic.h'.
543
Werner Lemberg974b1932013-12-20 17:26:26 +01005442013-12-20 Werner Lemberg <wl@gnu.org>
545
Werner Lemberg8a8f3752013-12-20 18:35:35 +0100546 [autofit] Fix PIC compilation.
547
548 * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
549 src/autofit/aflatin.c (af_latin_metrics_init_widths)
550 [FT_CONFIG_OPTION_PIC]: Declare `globals'.
551
552 * src/autofit/afglobal.c: Always call AF_DEFINE_SCRIPT_CLASS, and
553 AF_DEFINE_STYLE_CLASS.
554
555 * src/autofit/afpic.c: Include `afglobal.h'.
556 (autofit_module_class_pic_init): Typo.
557
558 * src/autofit/aftypes.h (AF_DEFINE_SCRIPT_CLASS,
559 AF_DEFINE_STYLE_CLASS): Don't use the same identifier for macro
560 parameter and structure member.
561
5622013-12-20 Werner Lemberg <wl@gnu.org>
563
Werner Lemberg974b1932013-12-20 17:26:26 +0100564 [autofit] Introduce `styles'.
565
566 This is the new top-level structure for handling glyph input data;
567 scripts are now defined separately.
568
569 * src/autofit/aftypes.h (SCRIPT): Updated.
570 (AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
571 members to ...
572 (AF_Style_ClassRec): ... this new structure.
573 (AF_Style): New enumeration.
574 (AF_StyleMetricsRec): Replace `script' enumeration with
575 `style_class' pointer.
576 (AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
577 (AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.
578
579 * src/autofit/afstyles.h: New file, using data from `afscript.h'.
580 * src/autofit/afscript.h: Updated.
581
582 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
583 af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.
584
585 * src/autofit/afglobal.c (SCRIPT): Updated.
586 (STYLE): Redefine macro to load `afstyles.h'.
587 (af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
588 (af_style_names): ... this array.
589 (af_face_globals_compute_script_coverage): Renamed to...
590 (af_face_globals_compute_style_coverage): ... this.
591 Updated.
592 (af_face_globals_new, af_face_globals_free,
593 af_face_globals_get_metrics): Updated.
594
595 * src/autofit/afglobal.h (SCRIPT): Updated.
596 (STYLE): Redefine macro to load `afstyles.h'.
597 (AF_SCRIPT_FALLBACK): Update definition. This will get more
598 refinements with later on.
599 (AF_SCRIPT_UNASSIGNED): Replace with...
600 (AF_STYLE_UNASSIGNED): ... this macro.
601 (AF_FaceGlobalsRec): Updated.
602
603 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
604 af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
605 af_latin_hint_edges): Updated.
606
607 * src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
608 (af_ltn2_uniranges): Removed.
609
610 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
611 Updated.
612
613 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
614 * src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
615 (AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
616 members.
617
618 * src/autofit/afranges.h: Updated.
619
620 * src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.
621
Werner Lembergd8324572013-12-19 15:45:24 +01006222013-12-19 Werner Lemberg <wl@gnu.org>
623
624 [autofit] Factor scripts and uniranges out of writing system files.
625
626 * src/autofit/afranges.c, src/autofit/afranges.h: New files.
627
628 * src/autofit/afscript.h: Extend `SCRIPT' macro with more
629 parameters, taking data from the writing system files.
630
631 * src/autofit/aftypes.h: Updated.
632
633 * src/autofit/afglobal.c: Include `afranges.h'.
634 Load `afscript.h' to call AF_DEFINE_SCRIPT_CLASS.
635 * src/autofit/afglobal.c: Include `afranges.h'.
636 Load `afscript.h' to call AF_DECLARE_SCRIPT_CLASS.
637
638 * src/autofit/afcjk.c, src/autofit/afcjk.h: Updated.
639 * src/autofit/afdummy.c, src/autofit/afdummy.h: Updated.
640 * src/autofit/afindic.c, src/autofit/afindic.h: Updated.
641 * src/autofit/aflatin.c, src/autofit/aflatin.h: Updated.
642 * src/autofit/aflatn2.c, src/autofit/aflatn2.h: Updated.
643
644 * src/autofit/afpic.c: Updated.
645
646 * src/autofir/autofit.c: Include `afranges.c'.
647 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afranges.c'.
648
Werner Lemberg9a354552013-12-18 10:36:06 +01006492013-12-18 Werner Lemberg <wl@gnu.org>
650
Werner Lemberg73f31982013-12-19 15:24:17 +0100651 [autofit] More code orthogonality.
652
653 * src/autofit/aftypes.h (AF_StyleMetrics): Replace `script_class'
654 pointer to an `AF_ScriptClass' structure with `script' index of type
655 `AF_Script'.
656 Move some code around.
657
658 * src/autofit/afcjk.c: Include `afpic.h'.
659 (af_cjk_metrics_init_widths, af_cjk_metrics_init_blues,
660 af_cjk_hint_edges): Updated.
661
662 * src/autofit/aflatin.c: Include `afpic.h'.
663 (af_latin_metrics_init_widths, af_latin_metrics_init_blues,
664 af_latin_metrics_scale_dim, af_latin_hint_edges): Updated.
665
666 * src/autofit/afglobal.c (af_face_globals_get_metrics): Updated.
667
668 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
669 Updated.
670
6712013-12-18 Werner Lemberg <wl@gnu.org>
672
Werner Lemberg3f91cb32013-12-18 12:59:35 +0100673 [autofit] s/ScriptMetrics/StyleMetrics/.
674
6752013-12-18 Werner Lemberg <wl@gnu.org>
676
Werner Lemberg4fccc212013-12-18 12:53:01 +0100677 [autofit] s/script_{metrics,hints}/style_{metrics,hints}/
678
6792013-12-18 Werner Lemberg <wl@gnu.org>
680
Werner Lembergf4df4072013-12-18 10:39:30 +0100681 [autofit] s/gscripts/gstyles/.
682
6832013-12-18 Werner Lemberg <wl@gnu.org>
684
Werner Lemberg9a354552013-12-18 10:36:06 +0100685 [autofit] s/glyph_scripts/glyph_styles/.
686
687 This is the first commit of a series to create a new top-level
688 structure (a `style') for handling scripts, writing_systems, and
689 soon-to-be-added coverages.
690
Werner Lemberg7a5fc2f2013-12-17 13:29:53 +01006912013-12-17 Werner Lemberg <wl@gnu.org>
692
693 [autofit] s/AF_Script_/AF_WritingSystem_/ where appropriate.
694
Infinality8bb09b02013-12-11 09:01:13 +01006952013-12-11 Infinality <infinality@infinality.net>
696
697 [truetype] Simplify logic of rendering modes.
698
699 This patch unifies the subpixel and non-subpixel cases.
700
701 * src/truetype/ttinterp.h (TT_ExecContextRec): Remove
702 `grayscale_hinting'; all code should refer to `grayscale' instead.
703 Remove unused `native_hinting' member.
704 Rename `subpixel_hinting' member to `subpixel.
705
706 * src/truetype/ttgload.c (TT_LOADER_SET_PP): Updated.
707 (tt_loader_init): Updated.
708
709 * src/truetype/ttinterp.c (Ins_GETINFO): Simplify.
710 Updated.
711
Werner Lemberge9d95aa2013-12-11 07:48:51 +01007122013-12-11 Werner Lemberg <wl@gnu.org>
713
714 [documentation] Add section how to include FreeType header files.
715 Problem reported by David Kastrup <dak@gnu.org>.
716
717 Surprisingly, a description how to do that was completely missing in
718 the API reference.
719
720 * include/freetype.h, include/ftchapters.h: New documentation
721 section `header_inclusion'.
722
Werner Lemberg05c786d2013-12-10 08:38:57 +01007232013-12-10 Werner Lemberg <wl@gnu.org>
724
Werner Lemberg91932592013-12-10 13:24:07 +0100725 [autofit] s/DFLT/NONE/, s/dflt/none/.
726
7272013-12-10 Werner Lemberg <wl@gnu.org>
728
Werner Lemberg45244f82013-12-10 13:18:11 +0100729 [autofit] s/AF_SCRIPT_NONE/AF_SCRIPT_UNASSIGNED/.
730
7312013-12-10 Werner Lemberg <wl@gnu.org>
732
Werner Lemberg69d1a362013-12-10 10:12:27 +0100733 [truetype] Fix scaling of vertical phantom points.
734
735 * src/truetype/ttgload.c (load_truetype_glyph): Scale pp3.x and
736 pp4.x also.
737
7382013-12-10 Werner Lemberg <wl@gnu.org>
739
Werner Lemberg05c786d2013-12-10 08:38:57 +0100740 [truetype] Fix positioning of composite glyphs.
741 Problem reported by Nigel Tao <nigeltao@golang.org>.
742
743 * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts
744 the glyph (component) by a fractional value computed from the LSB
745 phantom point. This is wrong, since the horizontal phantom points
746 get rounded horizontally later on.
747
Werner Lembergdd8050a2013-12-08 23:14:46 +01007482013-12-08 Werner Lemberg <wl@gnu.org>
749
750 * Version 2.5.2 released.
751 =========================
752
753
754 Tag sources with `VER-2-5-2'.
755
756 * docs/VERSION.DLL: Update documentation and bump version number to
757 2.5.2.
758
759 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
760 builds/windows/vc2005/index.html,
761 builds/windows/vc2008/freetype.vcproj,
762 builds/windows/vc2008/index.html,
763 builds/windows/vc2010/freetype.vcxproj,
764 builds/windows/vc2010/index.html,
765 builds/windows/visualc/freetype.dsp,
766 builds/windows/visualc/freetype.vcproj,
767 builds/windows/visualc/index.html,
768 builds/windows/visualce/freetype.dsp,
769 builds/windows/visualce/freetype.vcproj,
770 builds/windows/visualce/index.html,
771 builds/wince/vc2005-ce/freetype.vcproj,
772 builds/wince/vc2005-ce/index.html,
773 builds/wince/vc2008-ce/freetype.vcproj,
774 builds/wince/vc2008-ce/index.html: s/2.5.1/2.5.2/, s/251/252/.
775
776 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
777
778 * builds/unix/configure.raw (version_info): Set to 17:1:11.
779 * docs/CHANGES: Updated.
780
Werner Lemberg98d185c2013-12-07 09:26:55 +01007812013-12-07 Werner Lemberg <wl@gnu.org>
782
783 [truetype] Next round in phantom point handling.
784
785 Greg Hitchcock provided very interesting insights into the
786 complicated history of the horizontal positions of the TSB and BSB
787 phantom points.
788
789 * src/truetype/ttgload.c (TT_LOADER_SET_PP)
790 [TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Use `subpixel_hinting' and
791 `grayscale_hinting' flags as conditionals for the x position of TSB
792 and BSB.
793
Werner Lembergfcdb7842013-12-05 15:53:27 +01007942013-12-05 Werner Lemberg <wl@gnu.org>
795
796 * builds/freetype.mk (FT_CC): Removed. Unused.
797
Werner Lemberg64b395c2013-12-04 06:18:56 +01007982013-12-04 Werner Lemberg <wl@gnu.org>
799
800 [sfnt] Fix handling of embedded bitmap strikes.
801
802 This corrects the commit from 2013-11-21. Problem reported by
803 Andrey Panov <panov@canopus.iacp.dvo.ru>.
804
805 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to
806 detect excessive bytes for bit-aligned bitmaps.
807
Werner Lembergbdd5e752013-12-03 06:57:02 +01008082013-12-03 Werner Lemberg <wl@gnu.org>
809
Werner Lembergc2b47532013-12-03 07:01:57 +0100810 [truetype] Remove dead code.
811
812 Reported by Nigel Tao <nigeltao@golang.org>.
813
814 * include/internal/tttypes.h (TT_LoaderRec): Remove unused
815 `preserve_pps' field.
816 * src/truetype/ttgload.c (TT_Hint_Glyph): Updated.
817
8182013-12-03 Werner Lemberg <wl@gnu.org>
819
Werner Lembergbdd5e752013-12-03 06:57:02 +0100820 [truetype] Fix phantom point handling.
821
822 This is a further improvement to the changes from 2013-11-06.
823
824 * src/truetype/ttgload.c (TT_Hint_Glyph): Horizontal phantom points
825 are rounded horizontally, vertical ones are rounded vertically.
826 (TT_LOADER_SET_PP): The horizontal position of vertical phantom
827 points in pre-ClearType mode is zero, as shown in the OpenType
828 specification.
829
Werner Lemberg64872a52013-12-02 07:51:17 +01008302013-12-02 Werner Lemberg <wl@gnu.org>
831
832 [truetype] Fix change from 2013-11-20.
833
834 Problem reported by Akira Kakuto <kakuto@fuk.kindai.ac.jp>.
835
836 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Protect call to
837 `Update_Max' with both a TT_USE_BYTECODE_INTERPRETER guard and a
838 `IS_HINTED' clause.
839 Also remove redundant check using `maxSizeOfInstructions' – in
840 simple glyphs, the bytecode data comes before the outline data, and
841 a validity test for this is already present.
842
Werner Lemberg52166ab2013-11-27 10:10:16 +01008432013-11-27 Werner Lemberg <wl@gnu.org>
844
845 [autofit] Fix use of dumping functions in `ftgrid' demo program.
846
847 * src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro.
848 (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
849 af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to
850 handle output to stdout.
851 Use AF_DUMP.
852 (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
853 af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed.
854
Werner Lemberg3aee4292013-11-25 00:28:11 +01008552013-11-25 Werner Lemberg <wl@gnu.org>
856
857 * Version 2.5.1 released.
858 =========================
859
860
861 Tag sources with `VER-2-5-1'.
862
863 * docs/VERSION.DLL: Update documentation and bump version number to
864 2.5.1.
865
866 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
867 builds/windows/vc2005/index.html,
868 builds/windows/vc2008/freetype.vcproj,
869 builds/windows/vc2008/index.html,
870 builds/windows/vc2010/freetype.vcxproj,
871 builds/windows/vc2010/index.html,
872 builds/windows/visualc/freetype.dsp,
873 builds/windows/visualc/freetype.vcproj,
874 builds/windows/visualc/index.html,
875 builds/windows/visualce/freetype.dsp,
876 builds/windows/visualce/freetype.vcproj,
877 builds/windows/visualce/index.html,
878 builds/wince/vc2005-ce/freetype.vcproj,
879 builds/wince/vc2005-ce/index.html,
880 builds/wince/vc2008-ce/freetype.vcproj,
881 builds/wince/vc2008-ce/index.html: s/2.5.0/2.5.1/, s/250/251/.
882
883 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
884
885 * builds/unix/configure.raw (version_info): Set to 17:0:11.
Werner Lembergdd8050a2013-12-08 23:14:46 +0100886 * CMakeLists.txt (VERSION_PATCH): Set to 2.
Werner Lemberg3aee4292013-11-25 00:28:11 +0100887 * docs/CHANGES, docs/release: Updated.
888
Werner Lemberg9326caf2013-11-23 23:59:25 +01008892013-11-23 Werner Lemberg <wl@gnu.org>
890
Werner Lemberg063ee6b2013-11-24 00:19:17 +0100891 [truetype]: Add tricky font names `hkscsiic.ttf' and `iicore.ttf'.
892
893 * src/truetype/ttobjs.c (TRICK_NAMES_MAX_CHARACTERS,
894 TRICK_NAMES_COUNT): Updated.
895 (trick_names): Add family name for the two fonts.
896
8972013-11-23 Werner Lemberg <wl@gnu.org>
898
Werner Lemberg9326caf2013-11-23 23:59:25 +0100899 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo.
900
Werner Lemberg427b1762013-11-21 13:10:56 +01009012013-11-21 Werner Lemberg <wl@gnu.org>
902
Werner Lemberg9326caf2013-11-23 23:59:25 +0100903 [sfnt] Typo.
Werner Lemberg8af2a1c2013-11-21 13:13:12 +0100904
905 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
906
907 * src/sfnt/sfobjs.c (sfnt_load_face): Return correct `bsize->width'
908 value if the font lacks an `OS/2' table.
909
9102013-11-21 Werner Lemberg <wl@gnu.org>
911
Werner Lemberg64b395c2013-12-04 06:18:56 +0100912 [sfnt] Improve handling of buggy embedded bitmap strikes.
Werner Lemberg427b1762013-11-21 13:10:56 +0100913
914 We are now able to successfully load `AppleMyoungJo.ttf'.
915 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
916
917 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph
918 format.
919
Werner Lemberg28626862013-11-20 21:06:18 +01009202013-11-20 Werner Lemberg <wl@gnu.org>
921
922 [truetype] Don't trust `maxp's `maxSizeOfInstructions'.
923
924 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>; see
925
926 http://lists.nongnu.org/archive/html/freetype-devel/2013-08/msg00005.html
927
928 for details.
929
930 * src/base/ftobjs.c (FT_Load_Glyph): Check size of `fpgm' and `prep'
931 tables also for setting `autohint'.
932
933 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use code from
934 `TT_Process_Composite_Glyph' for handling unreliable values of
935 `maxSizeOfInstructions'.
936
Werner Lembergbc25de62013-11-16 07:52:20 +01009372013-11-16 Werner Lemberg <wl@gnu.org>
938
939 [sfnt] Fix `OS/2' table version 5 support.
940
941 We now follow the `official' announcement from Microsoft (on the
942 OpenType mailing list, which unfortunately hasn't a public archive).
943
944 * include/freetype/tttables.h (TT_OS2):
945 s/usLowerPointSize/usLowerOpticalPointSize/,
946 s/usUpperPointSize/usUpperOpticalPointSize/.
947
948 * src/sfnt/ttload.c (tt_face_load_os2): Update, and set correct
949 default values.
950
Werner Lembergfae38202013-11-13 08:55:46 +01009512013-11-13 Werner Lemberg <wl@gnu.org>
952
Werner Lembergc52b1292013-11-13 10:06:00 +0100953 * builds/unix/ft2unix.h: Remove. No longer necessary.
954
955 * builds/unix/install.mk (install): Updated.
956
9572013-11-13 Werner Lemberg <wl@gnu.org>
958
Werner Lembergfae38202013-11-13 08:55:46 +0100959 Simplify header file hierarchy.
960
961 This large patch changes the header file directory layout from
962 `include/freetype/...' to `include/...', effectively removing one
963 level. Since the file `ft2build.h' is also located in `include'
964 (and it stays there even after installation), all FreeType header
965 files are now in a single directory.
966
967 Applications that use (a) `freetype-config' or FreeType's
968 `pkg-config' file to get the include directory for the compiler, and
969 (b) the documented way for header inclusion like
970
971 #include <ft2build.h>
972 #include FT_FREETYPE_H
973 ...
974
975 don't need any change to the source code.
976
977 * include/freetype/*: Move up to...
978 * include/*: ... this directory.
979
980 * builds/amiga/include/freetype/*: Move up to...
981 * builds/amiga/include/*: ... this directory.
982
983 */*: Essentially do `s@/freetype/@/@' where appropriate.
984
985 * CMakeList.txt: Simplify.
986 * builds/unix/freetype-config.in, builds/unix/freetype2.in: For
987 `--cflags', return a single directory.
988 * builds/unix/install.mk (install): No longer try to remove `cache'
989 and `internal' subdirectories; instead, remove the `freetype'
990 subdirectory.
991
Werner Lembergea5c7812013-11-12 08:55:26 +01009922013-11-12 Werner Lemberg <wl@gnu.org>
993
994 [truetype] Fix last `truetype' commit.
995
996 * src/truetype/ttgload.c (tt_get_metrics): Preserve stream position.
997 Return error value.
998 (load_truetype_glyph): Updated.
999
Werner Lemberg78333282013-11-10 06:26:52 +010010002013-11-10 Werner Lemberg <wl@gnu.org>
1001
1002 * docs/CMAKE: New dummy file.
1003
Dave Arnolddd213012013-11-08 10:52:51 +010010042013-11-08 Dave Arnold <darnold@adobe.com>
1005
1006 [cff] Fix for hints that touch.
1007
1008 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Fix condition for
1009 finding index value of insertion point.
1010
Werner Lemberg7e4b0fb2013-11-06 07:14:49 +010010112013-11-06 Werner Lemberg <wl@gnu.org>
1012
Werner Lemberg5e225b72013-11-06 08:41:59 +01001013 [truetype] Fix handling of phantom points in composite glyphs.
1014 Problem reported by Nigel Tao <nigeltao@golang.org>.
1015
1016 This is a follow-up commit to the previous one.
1017
1018 * src/truetype/ttgload.c (load_truetype_glyph): Call
1019 `tt_get_metrics' after loading the glyph header.
1020
10212013-11-06 Werner Lemberg <wl@gnu.org>
1022
Werner Lemberg7e4b0fb2013-11-06 07:14:49 +01001023 [truetype] Improve emulation of vertical metrics.
1024
1025 This commit also improves the start values of vertical phantom
1026 points. Kudos to Greg Hitchcock for help.
1027
1028 * src/truetype/ttgload.c (TT_Get_VMetrics): Add parameter to pass
1029 `yMax' value. Replace code with fixed Microsoft definition.
1030 (tt_get_metrics): Updated.
1031 (TT_LOADER_SET_PP): Add explanation how to initialize phantom
1032 points, taken from both the OpenType specification and private
1033 communication with Greg (which will eventually be added to the
1034 standard).
1035 Fix horizontal position of `pp3' and `pp4'.
1036
1037 * src/truetype/ttgload.h: Updated.
1038
1039 * src/truetype/ttdriver.c (tt_get_advances): Updated.
1040
1041 * docs/CHANGES: Updated.
1042
Werner Lembergc6064282013-11-05 13:29:15 +010010432013-11-05 Werner Lemberg <wl@gnu.org>
1044
Werner Lemberg50740532013-11-05 23:19:18 +01001045 * builds/windows/vc2010/freetype.vcxproj: s/v110/v100/.
1046 PlatformToolSet version 110 is for VC2012.
1047
1048 Problem reported (with solution) by Dave Arnold <darnold@adobe.com>.
1049
10502013-11-05 Werner Lemberg <wl@gnu.org>
1051
Werner Lembergc6064282013-11-05 13:29:15 +01001052 [truetype] Correctly reset point tags for glyph components.
1053 Problem reported by Nigel Tao <nigeltao@golang.org>.
1054
1055 * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop.
1056
Werner Lemberg35b08182013-11-02 08:28:41 +010010572013-11-02 Werner Lemberg <wl@gnu.org>
1058
Werner Lemberg7d449432013-11-02 11:36:37 +01001059 [truetype] Fix GETINFO opcode handling of subpixel hinting bits.
1060
1061 * src/truetype/ttinterp.c (Ins_GETINFO): Don't request bit 6 set to
1062 get info on subpixel hinting.
1063
1064 * docs/CHANGES: Updated.
1065
10662013-11-02 Werner Lemberg <wl@gnu.org>
1067
Werner Lemberg35b08182013-11-02 08:28:41 +01001068 Fix Savannah bug #40451.
1069
1070 Simply apply the patch from the bug report.
1071
1072 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
1073 include/freetype/config/ftconfig.h: The used #pragma directives only
1074 work with gcc versions 4.6 and higher.
1075
Werner Lembergebf52d62013-11-01 13:26:28 +010010762013-11-01 Werner Lemberg <wl@gnu.org>
1077
Werner Lembergafa0d592013-11-01 22:27:27 +01001078 * docs/CHANGES: Updated.
1079
10802013-11-01 Werner Lemberg <wl@gnu.org>
1081
Werner Lembergebf52d62013-11-01 13:26:28 +01001082 [truetype] Minor code refactoring.
1083
1084 Two benefits: The allocated FDEF (and IDEF) array gets slightly
1085 smaller, and the `ttdebug' demo program has access to function
1086 numbers without additional costs.
1087
1088 Fortunately, no changes to FontForge are necessary – this is the
1089 only external TrueType debugger I know of, but others may exist and
1090 should check the code accordingly.
1091
1092 * src/truetype/ttinterp.h (TT_CallRec): Replace `Cur_Restart' and
1093 `Cur_End' with a pointer to the corresponding `TT_DefRecord'
1094 structure.
1095
1096 * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF, Ins_ENDF,
1097 Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns <Invalid_Opcode>):
1098 Updated.
1099
Werner Lembergee510512013-10-27 07:25:35 +010011002013-10-27 Werner Lemberg <wl@gnu.org>
1101
1102 [sfnt] Implement support for `OS/2' table version 5.
1103
1104 See
1105
1106 http://typedrawers.com/discussion/470/new-microsoft-size-specific-design-selection-mechanism
1107
1108 for the announcement.
1109
1110 * include/freetype/tttables.h (TT_OS2): Add fields
1111 `usLowerPointSize' and `usUpperPointSize'. Since FreeType returns
1112 this structure only as a pointer through `FT_Get_Sfnt_Table', there
1113 shouldn't be any ABI problems.
1114
1115 * src/sfnt/ttload.c (tt_face_load_os2): Implement it.
1116
1117 * docs/CHANGES: Updated.
1118
Werner Lemberg994a8592013-10-24 08:50:34 +020011192013-10-24 Werner Lemberg <wl@gnu.org>
1120
1121 * README.git, docs/CHANGES, docs/INSTALL: Updated.
1122
John Carya0e4a732013-10-24 08:49:08 +020011232013-10-24 John Cary <cary@txcorp.com>
1124
1125 Provide cmake support.
1126
1127 * CMakeLists.txt: New file.
1128
Kenneth Miller4d87ac82013-10-23 20:10:56 +020011292013-10-23 Kenneth Miller <kennethadammiller@yahoo.com>
1130 Werner Lemberg <wl@gnu.org>
1131
1132 Provide support for x64 builds in Visual C++ project files.
1133
1134 * src/builds/win32: Renamed to...
1135 * src/builds/windows: This.
1136
1137 * src/builds/windows/vc2010/*: Updated to handle x64 target.
1138
1139 * src/builds/windows/*.mk, docs/INSTALL.GNU: s/win32/windows/ where
1140 appropriate.
1141
Werner Lemberg604838d2013-10-22 01:10:10 +020011422013-10-22 Werner Lemberg <wl@gnu.org>
1143
1144 * src/base/md5.c, src/base/md5.h: Updated to recent version.
1145
1146 * src/base/ftobjs.c: Updated; `md5.c' no longer uses `free'.
1147
Werner Lembergdb9159c2013-10-22 10:27:50 +02001148 The canonical URL to get updates for this file is
1149
1150 http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/
1151
1152 as the author told me in private communication.
1153
Werner Lemberg34efe052013-10-19 21:14:40 +020011542013-10-19 Werner Lemberg <wl@gnu.org>
1155
Werner Lemberg75efc2d2013-10-19 21:46:03 +02001156 [autofit] s/SMALL_TOP/X_HEIGHT/.
1157
1158 * src/autofit/afblue.dat: Updated.
1159
1160 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1161
1162 * src/autofit/aflatin.c, src/autofit/aflatin.h,
1163 src/autofit/atlatin2.c: Updated.
1164
11652013-10-19 Werner Lemberg <wl@gnu.org>
1166
Werner Lemberg34efe052013-10-19 21:14:40 +02001167 * src/autofit/afblue.dat: s/MINOR/DESCENDER/.
1168
1169 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1170
Werner Lemberg955f6a82013-10-16 19:47:57 +020011712013-10-16 Werner Lemberg <wl@gnu.org>
1172
Werner Lemberga5f22a92013-10-17 11:08:25 +02001173 [autofit] Add description strings to script entries.
1174
1175 Currently, this is unused.
1176
1177 * src/autofit/afscript.h: Do it.
1178 * src/autofit/afglobal.c, src/autofit/afpic.c,
1179 src/autofit/aftypes.h: Updated.
1180
11812013-10-16 Werner Lemberg <wl@gnu.org>
1182
Werner Lemberg955f6a82013-10-16 19:47:57 +02001183 [autofit] Improve tracing message for extra light flag.
1184
1185 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it.
1186
Chongyu Zhu41632b52013-10-15 11:40:34 +020011872013-10-15 Chongyu Zhu <lembacon@gmail.com>
1188
1189 [arm] Fix thumb2 inline assembly under LLVM.
1190
1191 When using `ADD' with an immediate operand, the instruction is
1192 actually `ADD Rd, Rn, #<imm12>', that is, the maximum of the
1193 immediate operand cannot exceed 4095. It will fail to compile with
1194 LLVM.
1195
1196 However, in GCC, due to some legacy compatibility considerations,
1197 `ADD.W' will be automatically emitted when the immediate operand is
1198 larger than 4095.
1199
1200 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
1201 (FT_MulFix_arm) [__GNUC__]: Support clang compiler.
1202
1203 * src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto.
1204
Werner Lembergb6695242013-10-12 10:33:04 +020012052013-10-12 Werner Lemberg <wl@gnu.org>
1206
1207 [autofit] Improve tracing of `latin' hinter.
1208
1209 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue
1210 zone types.
1211 (af_latin_metrics_scale_dim): Report scaling changes due to x height
1212 alignment.
1213 Report scaled stroke width and blue zone values.
1214
Dave Arnolde845a852013-10-03 23:04:29 +020012152013-10-03 Dave Arnold <darnold@adobe.com>
1216
1217 * src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.
1218
Werner Lemberg2c56f2a2013-10-07 22:01:00 +02001219 Note that the old code avoided using a region of the piecewise
1220 linear function where the slope was zero. The recovery was to use a
1221 different section of the function, which produced a different,
1222 incorrect amount of darkening.
1223
Darrell Bellert01af71d2013-10-02 22:04:07 +020012242013-10-02 Darrell Bellert <darrell.bellert@hl.konicaminolta.us>
1225
1226 * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'.
1227
Dave Arnold0b330452013-10-02 11:04:06 +020012282013-10-02 Dave Arnold <darnold@adobe.com>
1229
1230 * src/cff/cf2font.c (cf2_computeDarkening): Initialize darkenAmount.
1231
1232 This line was lost in commit 89ca1fd6 (from 2013-06-25). The effect
1233 is to use a previous darkening amount when producing an unhinted,
1234 unscaled outline. This can cause autohint samples in ftgrid and
1235 ftview to be based on darkened CFF outlines instead of unhinted,
1236 undarkened ones.
1237
Dave Arnold3a2cb0f2013-09-29 16:17:02 +020012382013-09-29 Dave Arnold <darnold@adobe.com>
1239
1240 Fix Savannah bug #39295.
1241
1242 The bug was caused by switching to the initial hintmap (the one in
1243 effect when `moveto' executes) just before drawing the final element
1244 in the charstring. This ensured that the path was closed (in both
1245 Character Space and Device Space). But if the final element was a
1246 curve and if the final hintmap was different enough from the initial
1247 one, then the curve was visibly distorted.
1248
1249 The first part of the fix is to draw the final curve using the final
1250 hintmap as specified by the charstring. This corrects the
1251 distortion but does not ensure closing in Device Space. It may
1252 require the rasterizer to automatically generate an extra closing
1253 line. Depending on the hintmap differences, this line could be from
1254 zero to a couple pixels in length.
1255
1256 The second part of the fix covers the case where the charstring
1257 subpath is closed with an explicit line. We now modify that line's
1258 end point to avoid the distortion.
1259
1260 Some glyphs in the bug report font (TexGyreHeros-Regular) that show
1261 the change are:
1262
1263 25ppem S (98)
1264 24ppem eight (52)
1265 25.5ppem p (85)
1266
1267 Curves at the *end* of a subpath are no longer distorted. However,
1268 some of these glyphs have bad hint substitutions in the middle of a
1269 subpath, and these are not affected.
1270
1271 The patch has been tested with a set of 106 fonts that shipped with
1272 Adobe Creative Suite 4, together with 756 Open Source CFF fonts from
1273 Google Fonts. There are 1.5 million glyphs, of which some 20k are
1274 changed with the fix. A sampling of a few hundred of these changes
1275 have been examined more closely, and the changes look good (or at
1276 least acceptable).
1277
1278 * src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing'
1279 to indicate that we synthesize a closepath line.
1280
1281 * src/cff/cf2hints.c (cf2_glyphpath_init): Updated.
1282 (cf2_glyphpath_pushPrevElem): If closing, use first hint map (for
1283 `lineto' operator) and adjust hint zone.
1284 For synthesized closing lines, use end point in first hint zone.
1285 (cf2_glyphpath_lineTo): Take care of synthesized closing lines. In
1286 particular, shift the detection of zero-length lines from character
1287 space to device space.
1288 (cf2_glyphpath_closeOpenPath): Remove assertion.
1289 Updated.
1290
Werner Lembergb75a8b82013-09-25 09:46:36 +020012912013-09-25 Werner Lemberg <wl@gnu.org>
1292
1293 * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays.
1294
suzuki toshiyaac0f4452013-09-25 10:57:17 +090012952013-09-25 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
1296
1297 [bdf, pcf] Refuse non-zero face_index.
Werner Lemberg964317e2013-09-25 09:22:40 +02001298
suzuki toshiyaac0f4452013-09-25 10:57:17 +09001299 Suggested by Akira Tagoh, see
1300
1301 http://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html
1302
Werner Lemberg964317e2013-09-25 09:22:40 +02001303 * src/bdf/bdfdrivr.c (BDF_Face_Init): Return `Invalid_Argument'
1304 error if the font could be opened but non-zero `face_index' is
1305 given.
suzuki toshiyaac0f4452013-09-25 10:57:17 +09001306 * src/pcf/pcfdrivr.c (PCF_Face_Init): Ditto.
1307
1308 * src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED
Werner Lemberg964317e2013-09-25 09:22:40 +02001309 macro for `face_index' because it is validated later.
suzuki toshiyaac0f4452013-09-25 10:57:17 +09001310
Werner Lemberg4de77872013-09-23 22:10:08 +020013112013-09-23 Werner Lemberg <wl@gnu.org>
1312
1313 Fix Savannah bug #40090.
1314
1315 * src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit
1316 306f8c5d (from 2013-08-25) affecting this function.
1317
Werner Lemberg5a4c5a52013-09-22 22:37:26 +020013182013-09-22 Werner Lemberg <wl@gnu.org>
1319
1320 [autofit] Disunify Cyrillic and Greek handling from Latin.
1321
1322 * src/autofit/afscript.h: Add Cyrillic and Greek.
1323
1324 * src/autofit/afblue.dat (AF_BLUE_STRINGSET_GREK,
1325 AF_BLUE_STRINGSET_CYRL): Add blue zones for Greek and Cyrillic.
1326 (AF_BLUE_STRINGSET_LATN): Fix typo.
1327 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1328
1329 * src/autofit/aflatin.c (af_grek_uniranges, af_cyrl_uniranges): New
1330 arrays.
1331 (af_grek_script_class, af_cyrl_script_class): New scripts.
1332 * src/autofit/aflatin.h: Updated.
1333
Werner Lemberg2cca9662013-09-20 07:23:34 +020013342013-09-20 Werner Lemberg <wl@gnu.org>
1335
1336 * docs/CHANGES: Updated.
1337
Behdad Esfahbod31e726d2013-09-20 07:20:53 +020013382013-09-20 Behdad Esfahbod <behdad@behdad.org>
1339
1340 Fix vertical size of emboldened glyphs.
1341
1342 Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709
1343
1344 * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY'
1345 also.
1346
Alexei Podtelezhnikov52381c12013-09-11 23:25:56 -040013472013-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1348
1349 * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation
1350 algorithm description.
1351
Werner Lemberg3f542492013-09-11 23:08:31 +020013522013-09-11 Werner Lemberg <wl@gnu.org>
1353
1354 [autofit] Improve Hebrew rendering.
1355
1356 This change introduces a new blue zone property
1357 `AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short
1358 top segments.
1359
1360 * src/autofit/afblue.dat: Fix Hebrew blue strings.
1361 Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP.
1362
1363 * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro.
1364
1365 * src/autofit/afblue.c, src/autofit/afblue.h: Updated.
1366
1367 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle
1368 `AF_LATIN_IS_LONG_BLUE'.
1369
1370 * src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro.
1371
Werner Lemberg85a7fdf2013-08-29 21:03:05 +020013722013-08-28 Behdad Esfahbod <behdad@google.com>
1373
1374 [sfnt] Fix frame access while reading WOFF table directory.
1375
1376 * src/sfnt/sfobjs.c (woff_open_font): Using single memory frame
1377 while reading the directory entries for the whole loop.
1378
13792013-08-29 Werner Lemberg <wl@gnu.org>
Werner Lembergd689d1c2013-08-29 17:53:40 +02001380 Behdad Esfahbod <behdad@google.com>
1381
1382 Implement support for WOFF containers.
1383
1384 We simply synthesize a SFNT from the WOFF, create a memory stream
1385 for the new data, and load the SFNT as usual.
1386
1387 Does NOT add any API to access WOFF metadata or private blocks.
1388
1389 * include/freetype/internal/tttypes.h (WOFF_HeaderRec,
1390 WOFF_TableRec): New structures.
1391
1392 * include/freetype/tttags.h (TTAG_wOFF): New macro.
1393
1394 * src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling
1395 `open_face'.
1396
1397 * src/sfnt/sfobjs.c [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Include
1398 `FT_GZIP_H'.
1399 (WRITE_BYTE, WRITE_USHORT, WRITE_ULONG): New temporary macros for
1400 writing to a stream.
1401 (sfnt_stream_close, compare_offsets, woff_open_font): New functions.
1402 (sfnt_open_font): Handle `TTAG_wOFF'.
1403 (sfnt_init_face): Set `stream' after calling `sfnt_open_font'.
1404
1405 * src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling
1406 `sfnt->init_face'.
1407
1408 * src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an
1409 argument so that a changed stream survives.
1410 Update callers.
1411
14122013-08-28 Werner Lemberg <wl@gnu.org>
Werner Lemberge0f39ae2013-08-28 17:34:01 +02001413
Werner Lembergdc240522013-08-29 17:53:24 +02001414 [gzip] New function `FT_Gzip_Uncompress'.
1415
1416 This is modeled after zlib's `uncompress' function. We need this
1417 for WOFF support.
1418
1419 * include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress):
1420 New function.
1421
1422 * src/gzip/rules.mk: Rewrite to better reflect dependencies.
1423
14242013-08-28 Werner Lemberg <wl@gnu.org>
1425
Werner Lemberg5195ecd2013-08-28 17:41:21 +02001426 [autofit] Fix `make multi' compilation.
1427
1428 * src/autofit/afblue.cin, src/autofit/afblue.c: Don't include
1429 `afblue.h' but `aftypes.h'.
1430 * src/autofit/afcjk.c: Don't include `aftypes.h' but `afglobal.h'.
1431
14322013-08-28 Werner Lemberg <wl@gnu.org>
1433
Werner Lemberge0f39ae2013-08-28 17:34:01 +02001434 [autofit] Fix C++ compilation.
1435
1436 * src/autofit/afglobal.c (af_face_globals_get_metrics),
1437 src/autofit/afdummy.c (af_dflt_script_class), src/autofit/afindic.c
1438 (af_deva_script_class): Use proper casts.
1439
Behdad Esfahbodbd3849e2013-08-27 21:43:38 +020014402013-08-27 Behdad Esfahbod <behdad@google.com>
1441
Behdad Esfahbodc799dd62013-08-27 21:46:03 +02001442 * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos.
1443
14442013-08-27 Behdad Esfahbod <behdad@google.com>
1445
Behdad Esfahbodbd3849e2013-08-27 21:43:38 +02001446 FT_Open_Face: Improve external stream handling.
1447
1448 If the font's `clazz->init_face' function wants to swap to new
1449 stream, handling of whether original stream was external could
1450 result to either memory leak or double free. Mark externality into
1451 face flags before calling `init_face' such that the clazz can handle
1452 external streams properly.
1453
1454 * src/base/ftobjs.c (FT_Open_Face): Move code to set
1455 FT_FACE_FLAG_EXTERNAL_STREAM to...
1456 (open_face): This function.
1457
Werner Lemberg5e53db22013-08-27 18:37:39 +020014582013-08-27 Werner Lemberg <wl@gnu.org>
1459
Werner Lembergbcd8c0b2013-08-27 21:36:03 +02001460 Remove `FT_SqrtFixed' function.
1461
1462 It's no longer used.
1463
1464 * include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it.
1465
14662013-08-27 Werner Lemberg <wl@gnu.org>
1467
Werner Lemberg5e53db22013-08-27 18:37:39 +02001468 [autofit] While tracing, report script names instead of ID values.
1469
1470 * src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]:
1471 New array.
1472 * src/autofit/afglobal.h: Updated.
1473
1474 * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
1475 af_cjk_hint_edges): Use `af_script_names'.
1476 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
1477 af_latin_hint_edges): Ditto.
1478
Werner Lemberg92f5a042013-08-26 09:22:27 +020014792013-08-26 Werner Lemberg <wl@gnu.org>
1480
Werner Lemberg278f64b2013-08-26 20:20:03 +02001481 [autofit] Report used script while hinting a glyph.
1482
1483 * src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c
1484 (af_latin_hint_edges): Implement it.
1485
14862013-08-26 Werner Lemberg <wl@gnu.org>
1487
Werner Lemberg371f5c32013-08-26 20:11:24 +02001488 [autofit] Add support for Hebrew script.
1489
1490 * src/autofit/afblue.dat: Add blue strings for Hebrew.
1491 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1492
1493 * src/autofit/aflatin.c (af_hebr_uniranges): New array.
1494 (af_hebr_script_class): New script.
1495 * src/autofit/aflatin.h, src/autofit/afscript.h: Updated.
1496
14972013-08-26 Werner Lemberg <wl@gnu.org>
1498
Werner Lemberg098121d2013-08-26 18:54:05 +02001499 [autofit] Improve tracing messages.
1500
1501 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Mention script
1502 ID in tracing message.
1503 (af_cjk_metrics_init_blues): Initialize `axis' outside of the inner
1504 loop.
1505 Improve tracing messages.
1506 (af_cjk_hint_edges) [FT_DEBUG_LEVEL_TRACE]: New variable
1507 `num_actions' to count hinting actions.
1508 Improve tracing messages.
1509
1510 * src/autofit/aflatin.c (af_latin_metrics_init_widths): Mention
1511 script ID in tracing message.
1512 (af_latin_metrics_init_blues, af_latin_hint_edges): Improve tracing
1513 messages.
1514
15152013-08-26 Werner Lemberg <wl@gnu.org>
1516
Werner Lembergffee64a2013-08-26 12:55:48 +02001517 Better tracing of loaded glyphs.
1518
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02001519 Previously, the loading of a glyph was traced at level 4, if at all.
Werner Lembergffee64a2013-08-26 12:55:48 +02001520 With this change, all font loading routines emit a tracing message
1521 at level 1, making it easier to select tracing output (for example
1522 using F2_DEBUG="any:1 afhints:7 aflatin:7").
1523
1524 * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Add tracing message.
1525 * src/cff/cffdrivr.c (cff_glyph_load): Ditto.
1526 * src/cff/cffgload.c (cff_decoder_prepare): Improve tracing
1527 messages.
1528 * src/cid/cidgload.c (cid_load_glyph): Use level 1 for tracing
1529 message.
1530 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.
1531 * src/pfr/pfrobjs.c (pfr_slot_load): Add tracing message.
1532 * src/truetype/ttgload.c (TT_Load_Glyph): Ditto.
1533 * src/type1/t1gload.c (T1_Load_Glyph): Ditto.
1534 * src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto.
1535 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
1536
15372013-08-26 Werner Lemberg <wl@gnu.org>
1538
Werner Lemberg33655a92013-08-26 09:58:50 +02001539 [autofit] Fix script selection.
1540
1541 * src/autofit/afglobal.c (af_face_globals_get_metrics): Use
1542 `AF_SCRIPT_DFLT', not value 0.
1543 Simplify code.
1544
1545 * src/autofit/afscript.h: Sort by script name.
1546
15472013-08-26 Werner Lemberg <wl@gnu.org>
1548
Werner Lemberg92f5a042013-08-26 09:22:27 +02001549 [autofit] Make `dummy' hinter work as expected.
1550
1551 * src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling
1552 information.
1553 (af_dummy_hints_apply): Scale the glyphs.
1554
Werner Lemberg8b8be782013-08-25 08:01:41 +020015552013-08-25 Werner Lemberg <wl@gnu.org>
1556
Werner Lembergc1eb4452013-08-25 19:47:26 +02001557 [autofit] Make `cjk' module use blue stringsets.
1558
1559 * src/autofit/afcjk.c (AF_CJK_MAX_TEST_CHARACTERS): Removed.
1560 (af_cjk_hani_blue_chars): Removed.
1561 (AF_CJK_BLUE_TYPE_*): Removed.
1562 (af_cjk_metrics_init_blues): Replace AF_CJK_MAX_TEST_CHARACTERS with
1563 AF_BLUE_STRING_MAX_LEN.
1564 Change loops to use offsets (in file `afblue.h') into the new arrays
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02001565 `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
Werner Lembergc1eb4452013-08-25 19:47:26 +02001566 Instead of three dimensions (as used in the old blue string array)
1567 we now use properties to do the same, saving one loop nesting level.
1568
1569 * src/autofit/afcjk.h: Remove old enumeration values superseded by
1570 the new data in `afblue.h'.
1571 (AF_CJK_IS_TOP_BLUE, AF_CJK_IS_HORIZ_BLUE, AF_CJK_IS_FILLED_BLUE,
1572 AF_CJK_IS_RIGHT_BLUE): New macros, to be used in
1573 `af_cjk_metrics_init_blues'.
1574 (AF_CJK_BLUE_IS_RIGHT): Remove this now redundant enum value.
1575 (AF_CJK_BLUE_IS_TOP): Renamed to...
1576 (AF_CJK_BLUE_TOP): This.
1577 (AF_CJK_MAX_BLUES): Remove.
1578 (AF_CJKAxisRec): Updated.
1579
15802013-08-25 Werner Lemberg <wl@gnu.org>
1581
Werner Lemberg5c4a23a2013-08-25 19:29:07 +02001582 [autofit] Typo.
1583
1584 * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use
1585 cast.
1586
15872013-08-25 Werner Lemberg <wl@gnu.org>
1588
Werner Lemberg306f8c52013-08-25 13:07:08 +02001589 [autofit] Synchronize `cjk' with `latin' module (and vice versa).
1590
1591 * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Add tracing
1592 messages.
1593 (af_cjk_metrics_init_blues): Don't pass blue string array as
1594 argument but use the global array directly.
1595 Use `outline' directly.
1596 Update and add tracing messages.
1597 (af_cjk_metrics_init): Simplify code.
1598 (af_cjk_metrics_scale_dim): Improve tracing message.
1599 (af_cjk_metrics_scale): Synchronize.
1600
1601 * src/autofit/aflatin.c (af_latin_metrics_init_widths,
1602 af_latin_metrics_init_blues): Improve and add tracing messages.
1603
16042013-08-25 Werner Lemberg <wl@gnu.org>
1605
Werner Lemberg0975d682013-08-25 08:37:47 +02001606 [autofit] Make `latin' module use blue stringsets.
1607
1608 * src/autofit/aflatin.c (AF_LATIN_MAX_TEST_CHARACTERS): Removed.
1609 (af_latin_blue_chars): Removed.
1610 (af_latin_metrics_init_blues): Replace AF_LATIN_MAX_TEST_CHARACTERS
1611 with AF_BLUE_STRING_MAX_LEN.
1612 Change loops to use offsets (in file `afblue.h') into the new arrays
1613 `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
1614 Use `AF_LATIN_IS_SMALL_TOP_BLUE' macro.
1615
1616 * src/autofit/aflatin.h: Remove old enumeration values superseded by
1617 the new data in `afblue.h'.
1618 (AF_LATIN_IS_TOP_BLUE): Updated definition.
1619 (AF_LATIN_IS_SMALL_TOP_BLUE): New macro.
1620 (AF_LATIN_MAX_BLUES): Remove.
1621 (AF_LatinAxisRec): Updated.
1622
16232013-08-25 Werner Lemberg <wl@gnu.org>
1624
Werner Lembergdb3e5b92013-08-25 08:23:22 +02001625 [autofit] Add blue stringsets.
1626
1627 * src/autofit/aftypes.h: Include `afblue.h'.
1628 (AF_ScriptClassRec): Add `blue_stringset' field.
1629 (AF_DEFINE_SCRIPT_CLASS): Updated.
1630
1631 * src/autofit/autofit.c: Include `afblue.c'.
1632
1633 * src/autofit/afcjk.c (af_hani_script_class), src/autofit/afdummy.c
1634 (af_dflt_script_class), src/autofit/afindic.c
1635 (af_deva_script_class), src/autofit/aflatin.c
1636 (af_latn_script_class), src/autofit/aflatin2.c
1637 (af_ltn2_script_class): Updated.
1638
1639 * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'.
1640
16412013-08-25 Werner Lemberg <wl@gnu.org>
1642
Werner Lemberg8b8be782013-08-25 08:01:41 +02001643 [autofit] Introduce data file for blue strings.
1644
1645 The idea is to have a central file which gets processed by a Perl
1646 script to create proper `.c' and `.h' files using templates. There
1647 are two other reasons to do that:
1648
1649 . The data file should be easily readable. We use UTF-8 encoding
1650 which then gets converted to single bytes.
1651
1652 . Since the number of supported scripts will increase soon, the
1653 current usage of blue string arrays is a waste of space. Using
1654 the Perl script it is possible to imitate jagged arrays,
1655 defining enumeration constants as offsets into the arrays.
1656
1657 This commit only adds files without changing any functionality.
1658
1659 * src/autofit/afblue.dat: New data file.
1660 * src/tools/afblue.pl: New Perl script for processing `afblue.dat'.
1661
1662 * src/autofit/afblue.cin, src/autofit/afblue.hin: New template files
1663 for...
1664 * src/autofit/afblue.c, src/autofit/afblue.c: New source files.
1665 To avoid a dependency on Perl, we add them too.
1666
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -040016672013-08-19 Alexei Podtelezhnikov <apodtele@gmail.com>
1668
Werner Lemberg71c0ad62013-08-27 21:30:09 +02001669 [base] Enable new algorithm for `BBox_Cubic_Check'.
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -04001670
Werner Lemberg71c0ad62013-08-27 21:30:09 +02001671 * src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove
1672 the old one.
1673 Improve comments.
Alexei Podtelezhnikovfc32e1c2013-08-19 22:57:05 -04001674
Werner Lemberg6bfa2632013-08-18 18:34:05 +020016752013-08-18 Werner Lemberg <wl@gnu.org>
1676
Werner Lemberg4af44442013-08-18 18:46:30 +02001677 * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit.
1678
16792013-08-18 Werner Lemberg <wl@gnu.org>
1680
Werner Lemberg6bfa2632013-08-18 18:34:05 +02001681 Fix Savannah bug #39804.
1682
1683 * builds/unix/configure.raw (LIBPNG): Define and export.
1684 * builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle
1685 libpng.
1686
Alexei Podtelezhnikov32a7d872013-08-17 22:19:21 -040016872013-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
1688
1689 [base] Clean up BBox_Conic_Check.
1690
1691 * src/base/ftbbox.c (BBox_Conic_Check): Remove redundant checks for
1692 extremum at the segment ends, which are already within the bbox.
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02001693 Slightly modify calculations.
Alexei Podtelezhnikov32a7d872013-08-17 22:19:21 -04001694
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -040016952013-08-15 Alexei Podtelezhnikov <apodtele@gmail.com>
1696
1697 [base] Finish experimental (disabled) BBox_Cubic_Check implementation.
1698
1699 * src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02001700 accuracy and avoid overflows.
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -04001701
Alexei Podtelezhnikov61a65512013-08-13 22:28:57 -040017022013-08-13 Alexei Podtelezhnikov <apodtele@gmail.com>
1703
1704 [base] Refactor experimental (disabled) BBox_Cubic_Check.
1705
1706 * src/base/ftbbox.c (BBox_Cubic_Check): Implement the minimum search
Alexei Podtelezhnikov1a9c3d12013-08-15 22:51:42 -04001707 as the mirror image of the maximum search implemented here...
1708 (update_max): New function.
Alexei Podtelezhnikov61a65512013-08-13 22:28:57 -04001709
John Tytgat9bcfab82013-08-06 08:55:19 +020017102013-08-06 John Tytgat <John.Tytgat@esko.com>
1711
1712 Fix Savannah bug #39702.
1713
1714 * src/cff/cffload.c (cff_index_get_pointers): Check for `cur_offset
1715 != 0'; this stronger test is mandated by the CFF specification.
1716 Fix test for INDEX structures which have one or more empty entries
1717 at the end.
1718
Werner Lembergcc25e3a2013-08-05 08:46:15 +020017192013-08-05 Werner Lemberg <wl@gnu.org>
1720
Werner Lemberga32682f2013-08-06 00:21:46 +02001721 Fix gcc pragmas, part 2.
1722
1723 * src/truetype/ttinterp.c (TT_MulFix14_long_long,
1724 TT_DotFix14_long_long): `#pragma gcc diagnostic {push,pop}' has been
1725 introduced with gcc version 4.6.
1726
17272013-08-05 Werner Lemberg <wl@gnu.org>
1728
Werner Lemberg69e524d2013-08-05 23:38:32 +02001729 Fix gcc pragmas.
1730
1731 * src/truetype/ttinterp.c (TT_MulFix14_long_long,
1732 TT_DotFix14_long_long): Older gcc versions don't accept diagnostic
1733 pragmas within a function body.
1734
17352013-08-05 Werner Lemberg <wl@gnu.org>
1736
Werner Lemberg9e6de362013-08-05 16:37:21 +02001737 Fix Savannah bug #39700.
1738
1739 * builds/unix/ftconfig.h: Synchronize with
1740 `include/freetype/config/ftconfig.h'.
1741
1742 * builds/vms/ftconfig.h: Ditto.
1743 Make the differences to the master `ftconfig.h' file as small as
1744 possible for easier maintainance.
1745
17462013-08-05 Werner Lemberg <wl@gnu.org>
1747
Werner Lembergcc25e3a2013-08-05 08:46:15 +02001748 [autofit] Improve handling of `near' points.
1749
1750 Points which are very near to each other are now marked as such.
1751 The `weak' flag is then computed by using the `in' vector of the
1752 first and the `out' vector of the last point of a group of near
1753 points.
1754
1755 For example, this fixes the rendering of glyph `Oslash' in
1756 `Roboto-Thin.ttf'.
1757
1758 * src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'.
1759
1760 * src/autofit/afhints.c (af_glyph_hints_reload): Introduce
1761 the heuristic value `near_limit' to decide whether the current point
1762 is near to the previous one, then set `AF_FLAG_NEAR' accordingly.
1763 Store good `in' vector (of last non-near point) in
1764 `last_good_in_{x,y}' and use it as an argument to
1765 `ft_corner_is_flat' if necessary.
1766
Werner Lemberg74a9b672013-08-02 14:53:32 +020017672013-08-02 Werner Lemberg <wl@gnu.org>
1768
Werner Lemberg0d28a7d2013-08-02 22:59:43 +02001769 * include/freetype/ftcffdrv.h: Improve documentation.
1770 This is based on blog entries from David Lemon and Dave Arnold (both
1771 from Adobe) with kind permission. Dave also helped in
1772 proof-reading.
1773
17742013-08-02 Werner Lemberg <wl@gnu.org>
1775
Werner Lemberg456cc442013-08-02 20:25:21 +02001776 [autofit] Move declaration of scripts into separate file.
1777
1778 This has the benefit that we don't need to duplicate the data at
1779 different places.
1780
1781 * src/autofit/afscript.h: New file.
1782
1783 * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define
1784 the enumeration values.
1785
1786 * src/autofit/afglobal.c: Include `afscript.h' to get the script
1787 specific header files.
1788 (af_script_classes): Include `afscript.h' to fill this array.
1789
1790 * src/autofit/afpic.c: Include `afscript.h' to get the script
1791 specific header files.
1792 (autofit_module_class_pic_init): Include `afscript.h' for
1793 initialization.
1794 * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT,
1795 AF_SCRIPT_CLASSES_REC_COUNT): Removed. Use `AF_SCRIPT_MAX' instead.
1796
1797 * src/autofit/rules.mk (AUTOF_DRV_H): Updated.
1798
17992013-08-02 Werner Lemberg <wl@gnu.org>
1800
Werner Lemberg773601d2013-08-02 19:51:17 +02001801 [autofit] Move declaration of writing systems into separate file.
1802
1803 This has the benefit that we don't need to duplicate the data at
1804 different places.
1805
1806 * src/autofit/afwrtsys.h: New file.
1807
1808 * src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to
1809 define the enumeration values.
1810
1811 * src/autofit/afglobal.c: Include `afwrtsys.h' to get the writing
1812 system specific header files.
1813 Include `afpic.h'.
1814 (af_writing_system_classes): Include `afwrtsys.h' to fill this
1815 array.
1816
1817 * src/autofit/afpic.c: Include `afwrtsys.h' to get the writing
1818 system specific header files.
1819 (autofit_module_class_pic_init): Include `afwrtsys.h' for
1820 initialization.
1821 * src/autofit/afpic.h (AF_WRITING_SYSTEM_CLASSES_COUNT,
1822 AF_WRITING_SYSTEM_CLASSES_REC_COUNT): Removed. Use
1823 `AF_WRITING_SYSTEM_MAX' instead.
1824
18252013-08-02 Werner Lemberg <wl@gnu.org>
1826
Werner Lemberg74a9b672013-08-02 14:53:32 +02001827 [sfnt] Fix compilation with g++.
1828
1829 * src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use
1830 cast.
1831 (Load_SBit_Png): Pacify compiler.
1832
Werner Lemberg89a529f2013-08-02 14:50:23 +020018332013-08-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
1834 Werner Lemberg <wl@gnu.org>
1835
1836 [autofit] Fix `make multi'.
1837
1838 * include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY,
1839 FT_LOCAL_ARRAY_DEF): New macros.
1840
1841 * src/autofit/afglobal.c (af_writing_system_classes,
1842 af_script_classes): Use FT_LOCAL_ARRAY_DEF.
1843 * src/autofit/afglobal.h: Declare `af_writing_system_classes' and
1844 `af_script_classes'.
1845 * src/autofit/afloader.c: Include `afpic.h'.
1846
Werner Lemberge8ed2d62013-08-01 12:20:20 +020018472013-08-01 Werner Lemberg <wl@gnu.org>
1848
1849 Another round of cppcheck nitpicks.
1850
1851 The call was (from the top-level of the FreeType tree):
1852
1853 cppcheck --force \
1854 --enable=all \
1855 -I /usr/include \
1856 -I /usr/local/include \
1857 -I /usr/lib/gcc/i586-suse-linux/4.7/include \
1858 -I include \
1859 -I include/freetype \
1860 -I include/freetype/config \
1861 -I include/freetype/internal \
1862 -DFT2_BUILD_LIBRARY \
1863 . &> cppcheck.log
1864
1865 using cppcheck git commit f7e93f99.
1866
1867 Note that cppcheck still can't handle `#include FOO' (with `FOO' a
1868 macro).
1869
1870 */* Improve variable scopes.
1871 */* Remove redundant initializations which get overwritten.
1872
1873 * src/gxvalid/*: Comment out redundant code or guard it with
1874 FT_DEBUG_LEVEL_TRACE.
1875
Werner Lemberg5d6a3602013-07-30 23:17:04 +020018762013-07-30 Werner Lemberg <wl@gnu.org>
1877
Werner Lemberg72f5ff52013-07-31 22:49:29 +02001878 [autofit] Introduce `writing systems'.
1879
1880 This patch adds a new top level to the auto-hinter's script class
1881 hierarchy. It defines `writing systems' which can contain multiple
1882 scripts.
1883
1884 For example, the `latin' writing system (in file `aflatin.c') is
1885 able to support scripts like Latin, Cyrillic, Armenian, etc., which
1886 can be handled similarly.
1887
1888 Scripts are now named using four-letter OpenType tags.
1889
1890 * src/autofit/aftypes.h (AF_ScriptClassRec): Move relevant members
1891 to...
1892 (AF_WritingSystemClassRec): This new structure. It holds pointers
1893 to functions which can be shared among related scripts.
1894 (AF_WritingSystem): New enumeration.
1895 (AF_Script): Revised values using four-letter tags.
1896 (AF_DEFINE_WRITING_SYSTEM_CLASS): New macro.
1897 (AF_DEFINE_SCRIPT_CLASS): Updated.
1898
1899 * src/autofit/afglobal.c (af_writing_system_classes): New global,
1900 constant array.
1901 (af_script_classes): Updated.
1902 (af_face_globals_free): Updated.
1903 Remove assertion.
1904 (af_face_globals_get_metrics): Updated.
1905
1906 * src/autofit/afglobal.h (AF_SCRIPT_FALLBACK)
1907 [!AF_CONFIG_OPTION_CJK]: Handle this case.
1908
1909 * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
1910 Updated.
1911
1912 * src/autofit/afpic.c (autofit_module_class_pic_init): Updated;
1913 initialize structures for both writing systems and scripts.
1914 * src/autofit/afpic.h: Updated.
1915 (AF_WRITING_SYSTEM_CLASSES_GET): New macro.
1916
1917 * src/autofit/afcjk.c (af_cjk_writing_system_class): New writing
1918 system.
1919 (af_cjk_uniranges): Renamed to...
1920 (af_hani_uniranges): This.
1921 (af_cjk_script_class): Reduced and renamed to...
1922 (af_hani_script_class): This.
1923 * src/autofit/afcjk.h: Updated.
1924
1925 * src/autofit/afdummy.c (af_dummy_writing_system_class): New writing
1926 system.
1927 (af_dummy_script_class): Reduced and renamed to...
1928 (af_dflt_script_class): This.
1929 * src/autofit/afdummy.h: Updated.
1930
1931 * src/autofit/afindic.c (af_indic_writing_system_class): New writing
1932 system.
1933 (af_indic_uniranges): Renamed to...
1934 (af_deva_uniranges): This.
1935 (af_indic_script_class): Reduced and renamed to...
1936 (af_deva_script_class): This.
1937 * src/autofit/afcjk.h: Updated.
1938
1939 * src/autofit/aflatin.c (af_latin_writing_system_class): New writing
1940 system.
1941 (af_latin_uniranges): Renamed to...
1942 (af_latn_uniranges): This.
1943 (af_latin_script_class): Reduced and renamed to...
1944 (af_latn_script_class): This.
1945 * src/autofit/aflatin.h: Updated.
1946
1947 * src/autofit/aflatin2.c (af_latin2_writing_system_class): New
1948 writing system.
1949 (af_latin2_uniranges): Renamed to...
1950 (af_ltn2_uniranges): This.
1951 Synchronize ranges with `latin'.
1952 (af_latin2_script_class): Reduced and renamed to...
1953 (af_ltn2_script_class): This.
1954 * src/autofit/aflatin2.h: Updated.
1955
19562013-07-30 Werner Lemberg <wl@gnu.org>
1957
Werner Lemberg5d6a3602013-07-30 23:17:04 +02001958 [autofit] Variable renaming.
1959
1960 * src/autofit/aftypes.h (AF_ScriptMetricsRec):
1961 s/clazz/script_class/.
1962 Update all users.
1963
suzuki toshiya2b29ed62013-07-30 13:55:29 +090019642013-07-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
1965
1966 Ignore libpng-config under cross-building configuration,
1967 because it will return the flags for the hosting environment.
1968
1969 * builds/unix/configure.raw: Ignore libpng-config when
1970 `cross_compiling' == yes.
1971
suzuki toshiyaf2e7f1e2013-07-30 13:32:57 +090019722013-07-30 Behdad Esfahbod <behdad@google.com>
1973
1974 Prevent division by zero by a transparent color.
1975
1976 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra):
1977 Return 0 immediately, when alpha channel is zero.
1978
Behdad Esfahbod21c32b02013-07-25 21:53:18 +020019792013-07-25 Behdad Esfahbod <behdad@google.com>
1980
1981 Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR.
1982
1983 Also disambiguate Google's color bitmap tables.
1984
1985 * include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR):
1986 New macros.
1987
1988 * include/freetype/internal/tttypes.h (TT_SbitTableType): Add
1989 TT_SBIT_TABLE_TYPE_CBLC.
1990
1991 * src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR.
1992
1993 * src/sfnt/ttsbit.c (tt_face_load_sbit,
1994 tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle
1995 TT_SBIT_TABLE_TYPE_CBLC.
1996
suzuki toshiyab4725cb2013-07-24 14:25:39 +090019972013-07-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
1998
1999 [sfnt] Fix for `make multi' target.
2000
2001 * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF().
2002
Werner Lemberg6a7df622013-07-20 10:48:37 +020020032013-07-20 Werner Lemberg <wl@gnu.org>
2004
2005 * docs/INSTALL.GNU: Updated.
2006
Behdad Esfahbodff269522013-07-20 08:02:39 +020020072013-07-20 Behdad Esfahbod <behdad@google.com>
2008
2009 [sfnt] Fix `sbix' table version handling.
2010
2011 * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
2012 USHORT version numbers are to be considered as `minor'.
2013
Werner Lemberg05c14212013-07-19 23:11:23 +020020142013-07-19 Werner Lemberg <wl@gnu.org>
2015
2016 [autofit] Fix segment classification for blue zones.
2017
2018 The old code (essentially unchanged since the very beginning)
2019 incorrectly handled this configuration
2020
2021 x -o- x
2022 / \
2023 / \
2024 / \
2025 o o
2026
2027 as flat and this
2028
2029 o o
2030 / /
2031 x| x|
2032 | |
2033 o---------------o
2034
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02002035 as round. (`o' and `x' are on and off points, respectively).
Werner Lemberg05c14212013-07-19 23:11:23 +02002036
2037 This is a major change which should improve the rendering results
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02002038 enormously for many TrueType fonts, especially in the range approx.
Werner Lemberg05c14212013-07-19 23:11:23 +02002039 20-40ppem, fixing the appearance of many overshoots.
2040
2041 * src/autofit/aflatin.c (af_latin_metrics_init_blues): Look at the
2042 first and last points of the segment, not the points right before
2043 and after.
2044
20452013-07-19 Behdad Esfahbod <behdad@google.com>
Werner Lemberg01705392013-07-18 13:13:12 +02002046
Behdad Esfahbod778a7e62013-07-19 14:28:28 +02002047 [sfnt] `sbix' fix-ups.
2048
2049 * src/sfnt/sfobjs.c (sfnt_load_face): Apple's `sbix' color bitmaps
2050 are rendered scaled and then the `glyf' outline rendered on top. We
2051 don't support that yet, so just ignore the `glyf' outline and
2052 advertise it as a bitmap-only font.
2053
2054 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2055 [TT_SBIT_TABLE_TYPE_SBIX]: Return metrics in 26.6 units.
2056 (tt_face_load_sbix_image): Typo.
2057
20582013-07-18 Behdad Esfahbod <behdad@google.com>
2059
Werner Lemberg01705392013-07-18 13:13:12 +02002060 [sfnt] Add support for Apple's `sbix' color bitmap table.
2061
2062 * include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen
2063 fields to FT_Short and FT_UShort, respectively.
2064 (TT_SBitTableType): New enumeration.
2065 (TT_FaceRec): Add `sbit_table_type' field.
2066
2067 * include/freetype/tttags.h (TTAG_sbix): New macro.
2068
2069 * src/sfnt/pngshim.c (Load_SBit_Png): Pass a more generic
2070 FT_GlyphSlot argument instead FT_Bitmap.
2071 Add flag to control map and metrics handling.
2072 Update all users.
2073
2074 * src/sfnt/ttsbit.c: Include `ttmtx.h'.
2075 (tt_face_load_eblc): Renamed to...
2076 (tt_face_load_sbit): This.
2077 Handlic `sbix' bitmaps.
2078 (tt_face_free_eblc): Renamed to...
2079 (tt_face_load_sbit): This.
2080 Updated.
2081 (tt_face_load_strike_metrics): Handle `sbix' bitmaps.
2082 (tt_face_load_sbix_image): New function.
2083 (tt_sbit_decoder_alloc_bitmap, tt_sbit_decoder_load_image,
2084 tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
2085 tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
2086 tt_sbit_decoder_load_image, tt_sbit_decoder_load_bitmap): Don't pass
2087 and handle load flags.
2088 (tt_sbit_decoder_load_bitmap) [!FT_CONFIG_OPTION_USE_PNG]: Better
2089 handle formats 17-19.
2090 Move color to grayscale conversion to...
2091 (tt_face_load_sbit_image): Here.
2092 Handle `sbix' bitmaps.
2093
2094 * src/sfnt/pngshim.h: Updated.
2095 * src/sfnt/ttsbit.h: Updated.
2096 * src/sfnt/sfdriver.c: Updated.
2097
Werner Lemberg274207e2013-07-18 12:38:57 +020020982013-07-18 Werner Lemberg <wl@gnu.org>
2099
2100 [sfnt] Ignore invalid magic number in `head' or `bhed'.
2101
2102 Other font engines seem to ignore it also. Problem reported by
2103 Hin-Tak Leung <htl10@users.sourceforge.net>.
2104
2105 * src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if
2106 we have an invalid magic number.
2107
Werner Lemberg9a7951d2013-07-16 15:25:24 +020021082013-07-16 Werner Lemberg <wl@gnu.org>
2109
2110 [smooth] Fix segfault caused by previous commit.
2111
2112 * src/smooth/ftgrays.c (gray_set_cell): Always compute
2113 `ras.invalid'.
2114
David Turnera5f33ee2013-07-16 12:40:03 +020021152013-07-16 David Turner <digit@google.com>
2116
David Turner89929ec2013-07-16 13:36:07 +02002117 [smooth] Improve performance.
2118
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02002119 Provide a work-around for an ARM-specific performance bug in GCC.
David Turner89929ec2013-07-16 13:36:07 +02002120 This speeds up the rasterizer by more than 5%.
2121
2122 Also slightly optimize `set_gray_cell' and `gray_record_cell' (which
2123 also improves performance on other platforms by a tiny bit (<1%).
2124
2125 * src/smooth/ftgrays.c (FT_DIV_MOD): New macro.
2126 Use it where appropriate.
2127
2128 (gray_record_cell, gray_set_cell, gray_move_to,
2129 gray_convert_glyph_inner): Streamline condition handling.
2130
21312013-07-16 David Turner <digit@google.com>
2132
David Turnerf66d48e2013-07-16 13:18:00 +02002133 [truetype] Add assembler code for TT_MulFix14 and TT_DotFix14.
2134
2135 This patch provides slightly optimized versions for ARM, x86, and
2136 x86_64 CPUs if built with GCC.
2137
2138 Also remove some dead code.
2139
2140 * src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long,
2141 TT_DotFix14_long_long): New functions.
2142
21432013-07-16 David Turner <digit@google.com>
2144
David Turnerb2890882013-07-16 12:52:18 +02002145 Optimize FT_MulFix for x86_64 GCC builds.
2146
2147 This patch provides an optimized `FT_MulFix' implementation for
2148 x86_64 machines when FreeType is built with GCC, or compatible
2149 compilers like Clang.
2150
2151 Example:
2152 bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf
2153
2154 Before:
2155
2156 Load 4.863 us/op
2157 Load_Advances (Normal) 4.816 us/op
2158 Load_Advances (Fast) 0.028 us/op
2159 Render 2.753 us/op
2160 Get_Glyph 0.463 us/op
2161 Get_CBox 0.077 us/op
2162 Get_Char_Index 0.023 us/op
2163 Iterate CMap 13.898 us/op
2164 New_Face 12.368 us/op
2165 Embolden 0.028 us/op
2166 Get_BBox 0.302 us/op
2167
2168 After:
2169
2170 Load 4.617 us/op
2171 Load_Advances (Normal) 4.645 us/op
2172 Load_Advances (Fast) 0.027 us/op
2173 Render 2.789 us/op
2174 Get_Glyph 0.460 us/op
2175 Get_CBox 0.077 us/op
2176 Get_Char_Index 0.024 us/op
2177 Iterate CMap 13.403 us/op
2178 New_Face 12.278 us/op
2179 Embolden 0.028 us/op
2180 Get_BBox 0.301 us/op
2181
2182 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
2183 (FT_MulFix_x86_64): New function.
2184
21852013-07-16 David Turner <digit@google.com>
2186
David Turnera5f33ee2013-07-16 12:40:03 +02002187 Speed up ARMv7 support.
2188
2189 When building for ARMv7 with thumb2 instructions, the optimized
2190 `FT_MulFix_arm' assembly routine was not being used.
2191
2192 The reason for this is in the `ftconfig.h' header, namely:
2193
2194 - The assembly routine uses the `smull' instruction which is not
2195 available when generating Thumb-1 machine code. It is available
2196 in Thumb-2 mode, though.
2197
2198 - The header was written a long time ago before Thumb-2 became
2199 widely popular (e.g. with Android). So it simply doesn't use the
2200 assembly routine if the `__thumb__' built-in macro is defined.
2201
2202 - When compiling in Thumb-2 mode, the compiler will define both
2203 `__thumb__' and `__thumb2__'.
2204
2205 By checking for `(__thumb2__ || !__thumb__)', we ensure that the
2206 assembly routine is only avoided when generating Thumb-1 code.
2207
2208 Given that this is performance-sensitive function, this improves
2209 `ftbench' as follows on a Galaxy Nexus:
2210
2211 Before (us/op) After (us/op)
2212
2213 - loading Arial.ttf glyphs at 14 ppem [1]
2214
2215 Load 34.285 33.098
2216
2217 - same operation with the light auto-hinter [2]
2218
2219 Load 31.317 29.590
2220
2221 - same operation without hinting [3]
2222
2223 Load 6.143 5.376
2224
2225 - loading Arial.ttf advances at 14 ppem [4]
2226
2227 Load_Advances (normal) 34.216 33.016
2228 Load_Advances (fast) 0.176 0.176
2229
2230 [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
2231 [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
2232 [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
2233 [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf
2234
2235 * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
2236 (FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.
2237
Werner Lemberge12fc772013-06-28 07:57:32 +020022382013-06-28 Werner Lemberg <wl@gnu.org>
2239
2240 * docs/CHANGES: Updated.
2241
Werner Lemberg680c1d42013-06-27 17:21:59 +020022422013-06-27 Werner Lemberg <wl@gnu.org>
2243
2244 * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard.
2245
Werner Lembergc7cc9eb2013-06-25 07:24:02 +020022462013-06-25 Werner Lemberg <wl@gnu.org>
2247
Werner Lembergb8850fc2013-06-26 12:22:10 +02002248 [cff] Add darkening limit to `darkening-parameters'.
2249
2250 * src/cff/cffdrivr.c (cff_property_set): Add check.
2251
22522013-06-25 Werner Lemberg <wl@gnu.org>
2253
Werner Lemberg89ca1fd2013-06-25 23:28:02 +02002254 [cff] Add `darkening-parameters' property.
2255
2256 * include/freetype/ftcffdrv.h: Document it.
2257
2258 * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
2259 `darkening-parameters' property.
2260
2261 * src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array.
2262
2263 * src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams'
2264 argument and use it.
2265 Update all callers.
2266
2267 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy
2268 `darken_params' values.
2269
2270 * src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array.
2271
2272 * src/cff/cffobjs.c (cff_driver_init): Set default values for
2273 `darken_params'.
2274
22752013-06-25 Werner Lemberg <wl@gnu.org>
2276
Werner Lembergfad93262013-06-25 10:41:37 +02002277 [docmaker] Code shuffling.
2278
2279 * src/tools/docmaker/tohtml.py (re_url): Move regexp...
2280 * src/tools/docmaker/sources.py: ... to this file.
2281
22822013-06-25 Werner Lemberg <wl@gnu.org>
2283
Werner Lemberg8bdc4072013-06-25 10:20:53 +02002284 [docmaker] Remove unused functions.
2285
2286 * src/tools/docmaker/content.py (DocMarkup.get_start,
2287 DocBlock.get_markup_name): Removed.
2288 * src/tools/docmaker/tohtml.py (html_quote0, dump_html_code,
2289 HtmlFormatter.make_html_words): Removed.
2290
22912013-06-25 Werner Lemberg <wl@gnu.org>
2292
Werner Lembergffb8b472013-06-25 09:09:30 +02002293 * builds/freetype.mk (dll): Remove target.
2294
2295 Problem reported by Jörg Günnewig <joerg.guennewig@googlemail.com>.
2296
22972013-06-25 Werner Lemberg <wl@gnu.org>
2298
Werner Lembergc7cc9eb2013-06-25 07:24:02 +02002299 [docmaker] Recognise URLs.
2300
2301 * src/tools/docmaker/tohtml.py (re_url): New regular expression.
2302 (make_html_para): Use it.
2303
Werner Lemberg25b7da52013-06-19 10:23:36 +020023042013-06-19 Werner Lemberg <wl@gnu.org>
2305
Werner Lembergfe4f5712013-06-19 23:27:47 +02002306 * Version 2.5.0.1 released.
2307 ===========================
2308
2309
2310 Tag sources with `VER-2-5-0-1'.
2311
2312 * include/freetype/config/ftoption.h: Undefine
2313 CFF_CONFIG_OPTION_OLD_ENGINE.
2314 * devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE.
2315
23162013-06-19 Werner Lemberg <wl@gnu.org>
2317
Werner Lemberg609f0ca2013-06-19 14:41:47 +02002318 * builds/unix/install.mk (install): Don't create `cache' directory.
2319
2320 Found by Peter Breitenlohner <peb@mppmu.mpg.de>.
2321
23222013-06-19 Werner Lemberg <wl@gnu.org>
2323
Werner Lemberg25b7da52013-06-19 10:23:36 +02002324 * Version 2.5.0 released.
2325 =========================
2326
2327
2328 Tag sources with `VER-2-5-0'.
2329
2330 * docs/VERSION.DLL: Update documentation and bump version number to
2331 2.5.0.
2332
2333 * README, Jamfile (RefDoc),
2334 builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
2335 builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
2336 builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
2337 builds/win32/visualc/freetype.dsp,
2338 builds/win32/visualc/freetype.vcproj,
2339 builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
2340 builds/win32/visualce/freetype.vcproj,
2341 builds/win32/visualce/index.html,
2342 builds/wince/vc2005-ce/freetype.vcproj,
2343 builds/wince/vc2005-ce/index.html,
2344 builds/wince/vc2008-ce/freetype.vcproj,
2345 builds/wince/vc2008-ce/index.html: s/2.4.12/2.5.0/, s/2412/250/.
2346
2347 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 5.
2348 (FREETYPE_PATCH): Set to 0.
2349
2350 * builds/unix/configure.raw (version_info): Set to 16:2:10.
2351
2352 * src/base/ftobjs.c (FT_Open_Face): Pacify compiler.
2353 * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto.
2354
Werner Lembergf56691a2013-06-18 10:17:48 +020023552013-06-18 Werner Lemberg <wl@gnu.org>
2356
2357 Fix Savannah bug #39269.
2358
2359 * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in
2360 case of reacollocation failures.
2361
Andrew Church67cf7a82013-06-18 09:35:34 +020023622013-06-18 Andrew Church <achurch+savannah@achurch.org>
2363
2364 Fix Savannah bug #39266.
2365
2366 If memory allocations fail at certain points while opening a font,
2367 FreeType can either crash due to a NULL dereference or leak memory.
2368
2369 * include/freetype/internal/ftobjs.c (FT_Face_InternalRec,
2370 FT_LibraryRec): Make `refcount' a signed integer. If, for example,
2371 FT_Open_Face() fails in a memory allocation before the face's
2372 reference count is set to 1, a subsequent `FT_Done_Library' call
2373 would otherwise loop over `FT_Done_Face' 2^32 times before freeing
2374 the face.
2375
2376 * src/base/ftobjs.c (open_face): Initialize `stream' and friends
2377 earlier.
2378 (FT_Open_Face) <Fail>: Behave correctly if `node' is NULL.
2379 (FT_Destroy_Module) <Fail>: Check that `renderer_clazz' is valid.
2380
23812013-06-14 Werner Lemberg <wl@gnu.org>
Werner Lembergd7e34442013-06-14 18:33:39 +02002382
2383 * src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC.
2384
Dave Arnoldcb23a622013-06-13 07:46:32 +020023852013-06-06 Dave Arnold <darnold@adobe.com>
2386 Werner Lemberg <wl@gnu.org>
2387
2388 [cff] Add code to Adobe's engine to handle ppem > 2000.
2389
2390 * src/cff/cffgload.c (cff_slot_load): If we get
2391 FT_Err_Glyph_Too_Big, retry unhinted and scale up later on.
2392
Andrew Church67cf7a82013-06-18 09:35:34 +020023932013-06-12 Werner Lemberg <wl@gnu.org>
Werner Lemberg25b6e602013-06-12 11:06:34 +02002394
Werner Lemberg294ce112013-06-12 23:33:11 +02002395 Another try on pragmas.
2396
2397 * include/freetype/internal/ftdebug.h: Move pragmas to...
2398 * include/freetype/internal/internal.h: ... this file since it gets
2399 included by all source files.
2400 * include/freetype/internal/ftserv.h: Remove pragma which has no
2401 effect.
2402
Dave Arnoldcb23a622013-06-13 07:46:32 +020024032013-06-12 Werner Lemberg <wl@gnu.org>
Werner Lemberg294ce112013-06-12 23:33:11 +02002404
Werner Lemberg25b6e602013-06-12 11:06:34 +02002405 * include/freetype/internal/ftdebug.h: Disable MSVC warning C4127.
2406
2407 This partially undoes commit 3f6e0e0c.
2408
Werner Lembergc06889e2013-06-12 10:58:06 +020024092013-06-12 Werner Lemberg <wl@gnu.org>
2410
2411 More compiler warning fixes.
2412
2413 */*: Use cast to `FT_Bool' (or `Bool') where appropriate.
2414
Werner Lemberg99e60d82013-06-10 01:44:37 +020024152013-06-10 Werner Lemberg <wl@gnu.org>
2416
Werner Lemberg5e094c62013-06-10 14:59:21 +02002417 [truetype] Improve handling of broken sbit advance widths.
2418
2419 * src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled)
2420 `linearHoriAdvance' if the sbit's `horiAdvance' value is zero.
2421
2422 Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem.
2423
24242013-06-10 Werner Lemberg <wl@gnu.org>
2425
Werner Lemberga25ecfd2013-06-10 12:57:16 +02002426 [sfnt] Improve embedded bitmap tracing.
2427
2428 * src/base/ftobjs.c (FT_Request_Size): Move trace message regarding
2429 bitmap strike match to...
2430 (FT_Match_Size): This function.
2431
2432 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics,
2433 tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
2434 tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
2435 tt_sbit_decoder_load_image): Decorate with tracing messages.
2436
24372013-06-10 Werner Lemberg <wl@gnu.org>
2438
Werner Lemberg99e60d82013-06-10 01:44:37 +02002439 Fix Savannah bug #39160.
2440
2441 * src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too
2442 for the degenerate case.
2443
Werner Lemberg2ba871b2013-06-09 08:20:54 +020024442013-06-09 David Turner <digit@google.com>
2445
2446 * src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush.
2447
2448 This code, present since eight(!) years in the unused `CACHE'
2449 branch, has been forgotten to apply to the master branch. It's
2450 really amazing that noone has ever complained since
2451 `FTC_Manager_Reset' is pretty useless without flushing the cache.
2452
Werner Lemberg85fd84b2013-06-07 17:10:21 +020024532013-06-07 Werner Lemberg <wl@gnu.org>
2454
Werner Lemberg3f6e0e02013-06-07 18:10:40 +02002455 Add and improve pragmas for MSVC compiler.
2456
2457 * include/freetype/internal/ftdebug.h: Remove pragmas.
2458 * include/freetype/internal/ftserv.h: Use push and pop for pragmas.
2459 * include/freetype/internal/ftvalid.h: Handle warning C4324.
2460 * src/base/ftobjs.c: Use push and pop for pragmas.
2461 * src/gzip/ftgzip.c: Handle warning C4244.
2462
24632013-06-07 Werner Lemberg <wl@gnu.org>
2464
Werner Lemberg85fd84b2013-06-07 17:10:21 +02002465 [cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/.
2466
2467 * src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it.
2468
Werner Lemberg4447b2c2013-06-06 21:28:36 +020024692013-06-06 Dave Arnold <darnold@adobe.com>
2470
2471 [cff] Add early exit feature for width-only calls.
2472
2473 This is for `FT_Get_Advance'.
2474
2475 There are 7 places where the spec says the width can be defined:
2476
2477 hstem/hstemhm
2478 vstem/vstemhm
2479 cntrmask/hintmask
2480 hmoveto
2481 vmoveto
2482 rmoveto
2483 endchar
2484
2485 * src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls,
2486 if possible.
2487
2488 (cf2_interpT2CharString) <cf2_cmdHSTEM>, <cf2_cmdVSTEM>,
2489 <cf2_cmdVMOVETO>, <cf2_cmdENDCHAR>, <cf2_cmdHINTMASK>,
2490 <cf2_cmdRMOVETO>, <cf2_cmdHMOVETO>: Exit early for width-only calls.
2491
Werner Lembergbadf3172013-06-06 09:16:38 +020024922013-06-06 Werner Lemberg <wl@gnu.org>
2493
2494 Next round of compiler fixes.
2495
2496 * builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init):
2497 Add proper cast.
2498
2499 * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix
2500 cast.
2501 * include/freetype/internal/ftstream.h: Decorate stream and frame
2502 macros with `FT_Long' and `FT_ULong' as appropriate.
2503
2504 * src/base/ftrfork.c (raccess_guess_darwin_hfsplus,
2505 raccess_guess_darwin_newvfs): Use cast.
2506
2507 * src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast.
2508
2509 * src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast.
2510 * src/cache/ftcmanag.h (FTC_ManagerRec): Ditto.
2511
2512 * src/cff/cf2arrst.c (cf2_arrstack_setNum_Elements): Use cast.
2513 * src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto.
2514 * src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto.
2515
2516 * src/cid/cidparse.c (cid_parser_new): Use cast.
2517
2518 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast.
2519
2520 * src/psaux/psobjs.c (reallocate_t1_table): Fix argument type.
2521
2522 * src/raster/ftraster.c (ft_black_reset): Use cast.
2523
2524 * src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast.
2525 (ALL_POINTS): Fix cast.
2526
2527 * src/type1/t1driver.c (t1_ps_get_font_value): Add casts.
2528 * src/type1/t1parse.c (T1_Get_Private_Dict): Add cast.
2529
Dave Arnoldc3782492013-06-05 19:57:55 +020025302013-06-05 Dave Arnold <darnold@adobe.com>
2531
2532 Fix more MSVC Win32 compiler warnings.
2533
2534 * src/base/ftobjs.c: Fix typo in MS pragma.
2535
2536 * src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
2537 `lineno' is only used in debug mode.
2538
2539 * src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in
2540 debug mode.
2541
Werner Lemberg45392b72013-06-05 13:43:20 +020025422013-06-05 Werner Lemberg <wl@gnu.org>
2543
2544 Fix compiler warnings.
2545
2546 * include/freetype/internal/ftmemory.h: Decorate memory allocation
2547 macros with `FT_Long' where appropriate.
2548 Remove duplicate of FT_MEM_QRENEW_ARRAY definition.
2549
2550 * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
2551 cast.
2552
2553 * src/base/ftobjs.c: Add warning disabling pragma for MSVC while
2554 including `md5.c'.
2555
2556 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdESC>: Add
2557 cast.
2558
2559 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts.
2560 (tt_sbit_decoder_load_bitmap): Beautification.
2561
2562 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize
2563 variables (earlier).
2564
2565 * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler.
2566
2567 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants
2568 where appropriate.
2569
2570 * src/type1/t1load.c (T1_Get_MM_Var): Ditto.
2571
Werner Lembergdc624ca2013-06-04 10:30:48 +020025722013-06-04 Werner Lemberg <wl@gnu.org>
2573
Werner Lembergd9634982013-06-04 20:18:57 +02002574 * src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'.
2575
2576 Problem reported by Ingmar Sittl <ingmar.sittl@elektrobit.com>.
2577
25782013-06-04 Werner Lemberg <wl@gnu.org>
2579
Werner Lembergdc624ca2013-06-04 10:30:48 +02002580 Apply fixes for cppcheck nitpicks.
2581
2582 http://cppcheck.sourceforge.net/
2583
Werner Lemberg8d8508e2013-06-04 13:09:01 +02002584 The call was (from the top-level of the FreeType tree):
2585
2586 cppcheck --force \
2587 --enable=all \
2588 -I include \
2589 -I include/freetype/ \
2590 -I include/freetype/config/ \
2591 -I include/freetype/internal/ \
2592 . &> cppcheck.log
2593
Werner Lembergdc624ca2013-06-04 10:30:48 +02002594 Note that the current version heavily chokes on FreeType, delivering
Werner Lemberg8d8508e2013-06-04 13:09:01 +02002595 many wrong results. I will report those issues to the cppcheck team
Werner Lembergdc624ca2013-06-04 10:30:48 +02002596 so that a newer version gives improved results hopefully.
2597
2598 */* Improve variable scopes.
2599 */* Remove redundant initializations which get overwritten.
2600
Werner Lemberge8ed2d62013-08-01 12:20:20 +02002601 * src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable):
Werner Lembergdc624ca2013-06-04 10:30:48 +02002602 Remove unused variable.
2603
2604 * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero.
2605
2606 * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate):
2607 Remove functionless code.
2608
2609 * src/tools/ftrandom.c (main): Fix memory leak.
2610
Werner Lemberg2429dc32013-06-03 12:41:58 +020026112013-06-03 Werner Lemberg <wl@gnu.org>
2612
2613 Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option.
2614
2615 This controls whether the old FreeType CFF engine gets compiled into
2616 FreeType. It is now disabled by default.
2617
2618 * devel/ftoption.h, include/freetype/config/ftoption.h
2619 (CFF_CONFIG_OPTION_OLD_ENGINE): New macro.
2620
2621 * src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c
2622 (CFF_Operator, cff_argument_counts, cff_builder_add_point,
2623 cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load),
2624 src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use
2625 CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code.
2626
2627 * docs/CHANGES: Updated.
2628
Werner Lembergf9cceeb2013-06-02 23:38:13 +020026292013-06-02 Werner Lemberg <wl@gnu.org>
2630
2631 Fix PNG library handling.
2632
2633 * builds/unix/configure.raw: Don't use LIBPNG_LIBS but
2634 LIBPNG_LDFLAGS.
2635
Behdad Esfahbod760d3422013-05-29 11:36:18 +020026362013-05-23 Behdad Esfahbod <behdad@google.com>
2637
2638 Add support for color embedded bitmaps (eg. color emoji).
2639
2640 A new load flag, FT_LOAD_COLOR, makes FreeType load color
2641 embedded-bitmaps, following this draft specification
2642
2643 https://color-emoji.googlecode.com/git/specification/v1.html
2644
2645 which defines two new SFNT tables, `CBDT' and `CBLC' (named and
2646 modeled after `EBDT' and `EBLC', respectively). The color bitmaps
2647 are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA
2648 pre-multiplied sRGB images. If PNG support is available, PNG color
2649 images as defined in the same proposed specification are supported
2650 also.
2651
2652 Note that color bitmaps are converted to grayscale if client didn't
2653 ask for color.
2654
2655 * builds/unix/configure.raw: Search for libpng.
2656 Add `--without-png' option.
2657
2658 * devel/ftoption.h, include/freetype/config/ftoption.h
2659 (FT_CONFIG_OPTION_USE_PNG): New macro.
2660
2661 * include/freetype/freetype.h (FT_LOAD_COLOR): New load flag.
2662
2663 * include/freetype/ftimage.h (FT_Pixel_Mode): Add
2664 `FT_PIXEL_MODE_BGRA'.
2665
2666 * include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags.
2667
2668 * src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated.
2669 (ft_gray_for_premultiplied_srgb_bgra): New function.
2670 (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA.
2671
2672 * src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files.
2673
2674 * src/sfnt/sfnt.c: Include `pngshim.c'.
2675
2676 * src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h'
2677 (tt_face_load_eblc): Load `CBLC'.
2678 (tt_sbit_decoder_init): Load `CBDT'.
2679 (tt_sbit_decoder_alloc_bitmap): Pass load flags to select between
2680 color and grayscale bitmaps.
2681 Set `num_grays'. This is used by `ftview' to choose the blending
2682 algorithm.
2683 (tt_sbit_decoder_load_byte_aligned,
2684 tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound,
2685 tt_sbit_decoder_load_image): Pass load flag.
2686 s/write/pwrite/.
2687 Don't call `tt_sbit_decoder_alloc_bitmap'.
2688 Updated.
2689 (tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function.
2690 (tt_sbit_decoder_load_bitmap): Pass load flag.
2691 Handle new glyph formats 17, 18, and 19.
2692 Call `tt_sbit_decoder_alloc_bitmap'.
2693 Flatten color bitmaps if necessary.
2694 (tt_face_load_sbit_image): Updated.
2695
2696 * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'.
2697
2698 * docs/CHANGES: Updated.
2699
Guenter41e44802013-05-24 11:38:09 +020027002013-05-24 Guenter <info@gknw.net>
2701
2702 Apply Savannah patch #8055.
2703
2704 Make `apinames' create an import file for NetWare.
2705
2706 * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2.
2707 (OutputFormat): Add `OUTPUT_NETWARE_IMP'.
2708 (names_dump): Handle it.
2709 (usage): Updated.
2710 (main): Handle new command line flag `-wN'.
2711
Behdad Esfahbod2d6e1fb2013-05-23 08:01:20 +020027122013-05-23 Behdad Esfahbod <behdad@behdad.org>
2713
2714 Compilation fix.
2715
2716 * src/truetype/ttinterp.c (TT_RunIns)
2717 [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work.
2718
Infinality18f35ed2013-05-21 20:51:15 -050027192013-05-22 Infinality <infinality@infinality.net>
2720
Infinality3c783c12013-05-21 21:03:00 -05002721 [truetype] Formatting and an additional subpixel tweak.
2722
2723 * src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix.
2724 * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules):
2725 Revert previous modification for Verdana clones.
2726
27272013-05-22 Infinality <infinality@infinality.net>
2728
Infinality18f35ed2013-05-21 20:51:15 -05002729 [truetype] Adjust subpixel zp2 moves and tweak rules.
2730
2731 These modifications fix thin diagonal stems in some legacy fonts.
2732
2733 * src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro.
2734 (Move_Zp2_Point): Don't always disable x moves for subpixel rendering.
2735 (Ins_SHP): Disable x moves here for subpixel rendering.
2736 (Ins_SHPIX): Only disable x moves in compatibility mode.
2737 Split out zp2 move reversals and reorder conditional respectively.
2738
2739 * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight.
2740 Only adjust Verdana clones for 17 ppem.
2741 (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New.
2742 (ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'.
2743
Infinality63bfa832013-05-20 07:38:21 +020027442013-05-20 Infinality <infinality@infinality.net>
2745
2746 [truetype] Simplify and improve subpixel function detection.
2747
2748 Some small enhancements have allowed the removal of many macros and
2749 the simplification of existing rules in `ttsubpix.c'.
2750
2751 * src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX,
2752 SPH_TWEAK_ALLOW_X_MOVE_ZP2,
2753 SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES,
2754 SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed.
2755 (SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro.
2756
2757 * src/truetype/ttsubpix.c: Updated affected rules.
2758
2759 * src/truetype/ttinterp.c (Direct_Move_X): Updated.
2760 (INS_FDEF): Add additional function detection.
2761 (INS_ENDF): Set runtime flag.
2762 (Ins_CALL): Skip the call under certain conditions.
2763 Remove bad code.
2764 (Ins_LOOPCALL): Skip the call under certain conditions.
2765 Remove bad code.
2766 (Move_Zp2_Point): Updated.
2767 (Ins_SHPIX): Updated.
2768 Skip the move under some situations.
2769 (Ins_MIAP): Improve conditions.
2770 (Ins_MIRP): Updated.
2771 (Ins_DELTAP): Skip move under certain conditions.
2772 Simplify conditions.
2773 (TT_RunIns): Updated.
2774 Add code to handle new function detection.
2775 Trace messages.
2776
Werner Lembergfd664692013-05-17 17:40:27 +020027772013-05-17 Werner Lemberg <wl@gnu.org>
2778
2779 Update more FT_Err_XXX macros using FT_ERR and FT_THROW;
2780
2781 * builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c,
2782 builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it.
2783
Werner Lembergf04951a2013-05-17 13:51:07 +020027842013-05-15 Werner Lemberg <wl@gnu.org>
2785
2786 [truetype] Add `interpreter-version' property.
2787
2788 This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable
2789 at runtime.
2790
Werner Lemberg27991332013-05-17 14:00:26 +02002791 * include/freetype/ftttdrv.h: New file.
2792
2793 * include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New
2794 macro.
2795
Werner Lembergf04951a2013-05-17 13:51:07 +02002796 * src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H.
2797 (tt_property_set, tt_property_get): Fill templates.
2798
2799 * src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version'
2800 member.
2801 Remove unused `extension_component' member.
2802
2803 * src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H.
2804 (tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph,
2805 compute_glyph_metrics, tt_loader_init): Use `interpreter_version'.
2806
2807 * src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H.
2808 (SUBPIXEL_HINTING): New macro to check `interpreter_version' flag.
2809 Update all affected functions to use it.
2810 Use TT_INTERPRETER_VERSION_XXX where appropriate.
2811
2812 * src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H.
2813 (tt_driver_init): Initialize `interpreter_version'.
2814
2815 * src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H.
2816 Use TT_INTERPRETER_VERSION_XXX where appropriate.
2817
Werner Lemberg7441dd82013-05-13 09:12:46 +020028182013-05-13 Werner Lemberg <wl@gnu.org>
2819
Werner Lemberg6650be72013-05-13 10:05:29 +02002820 [truetype] Avoid empty source file.
2821
2822 * src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]:
2823 Provide dummy typedef.
2824
28252013-05-13 Werner Lemberg <wl@gnu.org>
2826
Werner Lemberg7441dd82013-05-13 09:12:46 +02002827 * src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable.
2828
2829 Fix suggested by Vaibhav Nagarnaik <vnagarnaik@gmail.com>.
2830
Brian Nixon8d6025c2013-05-13 09:06:42 +020028312013-05-13 Brian Nixon <bnixon@yahoo.com>
2832
2833 Fix Savannah bug #38970.
2834
2835 * src/base/ftdebug.c, builds/win32/ftdebug.c,
2836 builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c
2837 (ft_debug_init): Don't read past the environment variable FT2_DEBUG.
2838
Werner Lembergd51ac9c2013-05-12 06:00:27 +020028392013-05-12 Werner Lemberg <wl@gnu.org>
2840
Werner Lembergcd888752013-05-12 15:08:57 +02002841 [truetype] Add framework for TrueType properties.
2842
2843 * src/truetype/ttdrivr.c: Include FT_SERVICE_PROPERTIES_H.
2844 (tt_property_set, tt_property_get): New functions, still empty.
2845 Define `tt_service_properties' service.
2846 Update `tt_services'.
2847
2848 * src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H.
2849 (TT_SERVICE_PROPERTIES_GET): New macro.
2850 (TTModulePIC): Add `tt_service_properties'.
2851
28522013-05-12 Werner Lemberg <wl@gnu.org>
2853
Werner Lembergb112fa42013-05-12 07:29:04 +02002854 Fix Savannah bug #38967.
2855
2856 * src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast.
2857
28582013-05-12 Werner Lemberg <wl@gnu.org>
2859
Werner Lembergcbcf33d2013-05-12 07:27:48 +02002860 Introduce unsigned 64bit type (if available).
2861
2862 * include/freetype/config/ftconfig.h: Define FT_UINT64 if available.
2863 [FT_LONG64]: Provide FT_UInt64.
2864
2865 * builds/unix/ftconfig.in: Synchronized.
2866
28672013-05-12 Werner Lemberg <wl@gnu.org>
2868
Werner Lembergd51ac9c2013-05-12 06:00:27 +02002869 Fix Savannah bug #38968.
2870
2871 * include/freetype/ftmodapi.h: Add `FT_EXPORT' to
2872 FT_Property_{Set,Get}.
2873 * src/base/ftobjs.c: Add `FT_EXPORT_DEF' to
2874 FT_Property_{Set,Get}.
2875
Werner Lembergf6aa0892013-05-10 07:58:47 +020028762013-05-10 Werner Lemberg <wl@gnu.org>
2877
Werner Lembergea2b4752013-05-10 08:04:33 +02002878 [sfnt] Clean up bitmap code.
2879
2880 * src/sfnt/ttsbit.c: Deleted.
Dave Arnold3a2cb0f2013-09-29 16:17:02 +02002881 * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'.
Werner Lembergea2b4752013-05-10 08:04:33 +02002882 * rules.mk (SFNT_DRV_H): Updated.
2883
28842013-05-10 Werner Lemberg <wl@gnu.org>
2885
Werner Lembergf6aa0892013-05-10 07:58:47 +02002886 */* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code.
2887
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002888----------------------------------------------------------------------------
2889
Werner Lemberg73cc8332014-01-01 07:10:36 +01002890Copyright 2013-2014 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002891David Turner, Robert Wilhelm, and Werner Lemberg.
2892
2893This file is part of the FreeType project, and may only be used, modified,
2894and distributed under the terms of the FreeType project license,
2895LICENSE.TXT. By continuing to use, modify, or distribute this file you
2896indicate that you have read the license and understand and accept it
2897fully.
2898
2899
2900Local Variables:
2901version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00002902coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002903End: