-
Notifications
You must be signed in to change notification settings - Fork 100
/
CHANGES.txt
5726 lines (3859 loc) · 218 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
CHANGES BETWEEN 2.13.2 and 2.13.3 (2024-Aug-11)
I. IMPORTANT CHANGES
- Some fields in the `FT_Outline` structure have been changed
from signed to unsigned type, which better reflects the actual
usage. It is also an additional means to protect against
malformed input.
II. IMPORTANT BUG FIXES
- Rare double-free crashes in the cache subsystem have been fixed.
- Excessive stack allocation in the autohinter has been fixed.
III. MISCELLANEOUS
- The B/W rasterizer has received a major upkeep that results in
large performance improvements. The rendering speed has increased
and even doubled for very complex glyphs.
- If the new configuration option `TT_CONFIG_OPTION_GPOS_KERNING` is
defined, `FT_Get_Kerning` understands rudimentary GPOS kerning
(for TrueType fonts only). This is not enabled by default since
its usage is very limited, mainly for legacy applications that
have to support TrueType fonts automatically converted from 'kern'
tables to GPOS kerning. If you need proper (GPOS) kerning support
please use a higher-level library like HarfBuzz.
Code contributed by David Saltzman <davidbsaltzman@gmail.com>.
- The internal structures `PS_DesignMap` and `PS_Blend` related to
parsing of old Multiple Masters fonts have been removed from the
public header file `t1tables.h`.
======================================================================
CHANGES BETWEEN 2.13.1 and 2.13.2 (2023-Aug-25)
I. MISCELLANEOUS
- Better support for CFF2 variation fonts.
- TrueType interpreter version 38 (also known as 'Infinality') has
been removed.
- Improved OpenVMS support.
======================================================================
CHANGES BETWEEN 2.13.0 and 2.13.1 (2023-Jun-24)
I. MISCELLANEOUS
- New function `FT_Get_Default_Named_Instance` to get the index of
the default named instance of an OpenType Variation Font.
- A new load flag `FT_LOAD_NO_SVG` to make FreeType ignore glyphs in
an 'SVG ' table.
- New function `FT_GlyphSlot_AdjustWeight` to adjust the glyph
weight either horizontally or vertically. This is part of the
`ftsynth.h` header file, which is still considered to be in alpha
stage.
- TrueType interpreter version 38 (also known as 'Infinality') has
been deactivated; the value of `TT_INTERPRETER_VERSION_38` is now
the same as `TT_INTERPRETER_VERSION_40`.
- Updated OpenVMS support.
- The base API documentation has been modularized for easier
handling.
- Switching named instances on and off in Variation Fonts was buggy
if the design coordinates didn't change.
- `ftbench` has a new command-line option `-a` to apply design
coordinates.
- `ftview` can now flip SVG rendering on and off using the 'Z' key.
- In `ftmulti` it is now possible to toggle the fill rule and
overlap flag used for rendering glyphs using the 'F3' and 'F4'
keys, respectively. Toggling the anti-aliased mode has been
changed to the 'TAB' key.
======================================================================
CHANGES BETWEEN 2.12.1 and 2.13.0 (2023-Feb-09)
I. IMPORTANT CHANGES
- The demo program `ftinspect` has been completely updated and much
enhanced. It now combines the functionality of almost all other
graphical FreeType demo programs into a single application based
on the Qt framework. This was Charlie Jiang's GSoC 2022 project.
- The 'COLR' v1 API is now considered as stable.
https://learn.microsoft.com/en-us/typography/opentype/spec/colr
II. MISCELLANEOUS
- For OpenType Variable Fonts, `avar` table format 2.0 is now
supported. The code was contributed by Behdad Esfahbod.
Note that this is an extension supported on recent Apple platforms
and by HarfBuzz, but not yet in the OpenType standard! See
https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md
for the specification. To deactivate it, define the configuration
macro 'TT_CONFIG_OPTION_NO_BORING_EXPANSION'.
- A new API `FT_GlyphSlot_Slant` to slant a glyph by a given angle
has been added. Note that this function is part of `ftsynth.h`,
which is still considered to be in alpha stage.
- TrueType interpreter version 38 (also known as 'Infinality') that
was first introduced about 10 years ago in FreeType 2.4.11 is now
deprecated and slated to be removed in the next version. TrueType
interpreter version 40 has been FreeType's default version for six
years now and provides an excellent alternative. This is the last
FreeType version with TT_INTERPRETER_VERSION_38 and
TT_INTERPRETER_VERSION_40 treated differently.
- The only referenced but never documented configuration macro
`FT_CONFIG_OPTION_NO_GLYPH_NAMES` has been removed.
- The `ftbench` demo program got a new command line option `-e` to
set a charmap index.
- Specifying a point size is now optional for the demo programs
`ftgrid`, `ftmulti`, `ftstring`, and `ftview`. If not given, a
default size is used.
- For `ftgrid`, `ftstring`, and `ftview`, option `-e` now also
accepts a numeric value to set a charmap index.
- In `ftstring`, it is now possible to set the displayed text
interactively by pressing the 'Enter' key.
- `ftmulti` can now handle up to 16 design axes.
- To avoid reserved identifiers that are globally defined, the
auto-hinter debugging macros (which are only available if
`FT_DEBUG_AUTOFIT` is defined)
```
_af_debug_disable_horz_hints
_af_debug_disable_vert_hints
_af_debug_disable_blue_hints
_af_debug_hints
```
have been renamed to
```
af_debug_disable_horz_hints_
af_debug_disable_vert_hints_
af_debug_disable_blue_hints_
af_debug_hints_
```
- The internal zlib library was updated to version 1.2.13. Note,
however, that FreeType is *not* affected by CVE-2022-37434 since
it doesn't use the `inflateGetHeader` function.
======================================================================
CHANGES BETWEEN 2.12.0 and 2.12.1 (2022-May-01)
I. IMPORTANT BUG FIXES
- Loading CFF fonts sometimes made FreeType crash (bug introduced in
version 2.12.0)
- Loading a fully hinted TrueType glyph a second time (without
caching) sometimes yielded different rendering results if TrueType
hinting was active (bug introduced in version 2.12.0).
- The generation of the pkg-config file `freetype2.pc` was broken if
the build was done with cmake (bug introduced in version 2.12.0).
II. MISCELLANEOUS
- New option `--with-librsvg` for the `configure` script for better
FreeType demo support.
- The meson build no longer enforces both static and dynamic
versions of the library by default.
- The internal zlib library was updated to version 1.2.12. Note,
however, that FreeType is *not* affected by CVE-2018-25032 since
it only does decompression.
======================================================================
CHANGES BETWEEN 2.11.1 and 2.12.0 (2022-Mar-30)
I. IMPORTANT CHANGES
- FreeType now handles OT-SVG fonts, to be controlled with
`FT_CONFIG_OPTION_SVG` configuration macro. By default, it can
only load the 'SVG ' table of an OpenType font. However, by using
the `svg-hooks` property of the new 'ot-svg' module it is possible
to register an external SVG rendering engine. The FreeType demo
programs have been set up to use 'librsvg' as the rendering
library.
This work was Moazin Khatti's GSoC 2019 project.
II. MISCELLANEOUS
- The handling of fonts with an 'sbix' table has been improved.
- Corrected bitmap offsets.
- A new tag `FT_PARAM_TAG_IGNORE_SBIX` for `FT_Open_Face` makes
FreeType ignore an 'sbix' table in a font, allowing applications
to access the font's outline glyphs.
- `FT_FACE_FLAG_SBIX` and `FT_FACE_FLAG_SBIX_OVERLAY` together
with their corresponding preprocessor macros `FT_HAS_SBIX` and
`FT_HAS_SBIX_OVERLAY` enable applications to treat 'sbix' tables
as described in the OpenType specification.
- The internal 'zlib' code has been updated to be in sync with the
current 'zlib' version (1.2.11).
- The previously internal load flag `FT_LOAD_SBITS_ONLY` is now
public.
- Some minor improvements of the building systems, in particular
handling of the 'zlib' library (internal vs. external).
- Support for non-desktop Universal Windows Platform.
- Various other minor bug and documentation fixes.
- The `ftdump` demo program shows more information for Type1 fonts
if option `-n` is given.
- `ftgrid` can now display embedded bitmap strikes.
======================================================================
CHANGES BETWEEN 2.11.0 and 2.11.1 (2021-Dec-01)
I. IMPORTANT CHANGES
- Some fields in the `CID_FaceDictRec`, `CID_FaceInfoRec`, and
`FT_Data` structures have been changed from signed to unsigned
type, which better reflects the actual usage. It is also an
additional means to protect against malformed input.
II. MISCELLANEOUS
- Cmake support has been further improved. To do that various
backward-incompatible changes were necessary; please see file
`CMakeLists.txt` for more details.
- Since version 2.11.0, a C99 compiler is necessary to compile
FreeType.
- The experimental 'COLR' v1 API has been updated to the latest
OpenType standard 1.9.
- The `apinames` tool got a new option `-wV` to output an OpenVMS
Linker Option File.
- VMS support was updated.
- MS Visual Studio support was added to build the demo programs.
======================================================================
CHANGES BETWEEN 2.10.4 and 2.11.0 (2021-Jul-18)
I. IMPORTANT CHANGES
- A new rendering module has been added to create 8-bit Signed
Distance Field (SDF) bitmaps for both outline and bitmap glyphs.
The new rendering mode is called `FT_RENDER_MODE_SDF`, the pixel
mode is `FT_PIXEL_MODE_GRAY8`, and the corresponding raster flag
is `FT_RASTER_FLAG_SDF`.
This work was Anuj Verma's GSoC 2020 project.
- A new, experimental API is now available for surfacing properties
of 'COLR' v1 color fonts (as the name says, this is an extension
to the 'COLR' table for outline color fonts using the SFNT
container format). 'COLR' v1 fonts are a recently proposed
addition to OFF and OpenType; specification work currently happens
in
https://github.com/googlefonts/colr-gradients-spec/
'COLR' v1 is expected to be merged to OpenType; the ISO
standardisation process for adding 'COLR' v1 as an amendment to
OFF is underway.
Functions similar to the already existing 'COLR' API have been
added to access the corresponding data.
FT_Get_Color_Glyph_Paint
Retrieve the root paint for a given glyph ID.
FT_Get_Paint_Layers
Access the layers of a `PaintColrLayers` table.
FT_Get_Colorline_Stops
Retrieve the 'color stops' on a color line. As an input, a
color stop iterator gets used, which in turn is retrieved from
a paint.
FT_Get_Paint
Dereference an `FT_OpaquePaint` object and retrieve the
corresponding `FT_COLR_Paint` object, which contains details
on how to draw the respective 'COLR' v1 `Paint` table.
II. MISCELLANEOUS
- FreeType has moved its infrastructure to
https://gitlab.freedesktop.org/freetype
A side effect is that the git repositories are now called
`freetype.git` and `freetype-demos.git`, which by default expand
to the directories `freetype` and `freetype-demos`, respectively.
The documentation has been updated accordingly.
FreeType's Savannah repositories will stay; they are now mirrors
of the 'freedesktop.org' repositories.
- A new function `FT_Get_Transform` returns the values set by
`FT_Set_Transform`.
- A new configuration macro `FT_DEBUG_LOGGING` is available. It
provides extended debugging capabilities for FreeType, for example
showing a time stamp or displaying the component a tracing message
comes from. See file `docs/DEBUG` for more information.
This work was Priyesh Kumar's GSoC 2020 project.
- The legacy Type 1 and CFF engines are further demoted due to lack
of CFF2 charstring support. You now need to use `FT_Property_Set`
to enable them besides the `T1_CONFIG_OPTION_OLD_ENGINE` and
`CFF_CONFIG_OPTION_OLD_ENGINE` options, respectively.
- The experimental 'warp' mode (AF_CONFIG_OPTION_USE_WARPER) for the
auto-hinter has been removed.
- The smooth rasterizer performance has been improved by >10%. Note
that due to necessary code changes there might be very subtle
differences in rendering. They are not visible by the eye,
however.
- PCF bitmap fonts compressed with LZW (these are usually files with
the extension `.pcf.Z`) are now handled correctly.
- Improved Meson build files, including support to build the
FreeType demo programs.
- A new demo program `ftsdf` is available to display Signed Distance
Fields of glyphs.
- The `ftlint` demo program has been extended to do more testing of
its input. In particular, it can display horizontal and vertical
acutances for quality assessment, together with computing MD5
checksums of rendered glyphs.
[The acutance measures how sharply the pixel coverage changes at
glyph edges. For monochrome bitmaps, it is always 2.0 in either
X or Y direction. For anti-aliased bitmaps, it depends on the
hinting and the shape of a glyph and might approach or even reach
value 2.0 for glyphs like 'I', 'L', '+', '-', or '=', while it
might be lower for glyphs like 'O', 'S', or 'W'.]
- The `ttdebug` demo program didn't show changed point coordinates
(bug introduced in version 2.10.3).
- It is now possible to adjust the axis increment for variable fonts
in the `ftmulti` demo program.
- It is now possible to change the hinting engine in the `ftstring`
demo program.
- The graphical demo programs work better now in native color depth
on win32 and x11.
======================================================================
CHANGES BETWEEN 2.10.3 and 2.10.4 (2020-Oct-20)
I. IMPORTANT BUG FIXES
- A heap buffer overflow has been found in the handling of embedded
PNG bitmaps, introduced in FreeType version 2.6.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15999
If you use option FT_CONFIG_OPTION_USE_PNG you should upgrade
immediately.
======================================================================
CHANGES BETWEEN 2.10.2 and 2.10.3 (2020-Oct-10)
I. IMPORTANT CHANGES
- New flag `FT_OUTLINE_OVERLAP'. If set, make the smooth rasterizer
do 4x4 oversampling to mitigate artifacts in pixels partially
covered by overlapping contours. Note that this at least
quadruples the rendering time.
If a glyph in a TrueType font has the `OVERLAP_SIMPLE' or
`OVERLAP_COMPOUND' bit set, FreeType automatically selects this
rendering mode.
II. MISCELLANEOUS
- Using the arcane method of including FreeType header files with
macros like `FT_FREETYPE_H' is no longer mandatory (but retained
as an optional feature for backward compatibility).
- Support for building the library with Meson. Building the demo
programs with Meson will follow in a forthcoming release.
- Minor improvements to the B/W rasterizer.
- Auto-hinter support for Medefaidrin script.
- Fix various memory leaks (mainly for CFF) and other issues that
might cause crashes in rare circumstances.
- Jam support has been removed.
- In `ftview', custom LCD filter values are now normalized and
balanced. Unorthodox filters are still available through the `-L'
command line option.
- The GUI demo programs can now be resized.
- Demo programs that accept command line option `-k' can now handle
function keys, too. The corresponding character codes start with
0xF1. As an example, the POSIX shell syntax (accepted by bash,
ksh, and zsh)
-k $'\xF3q'
emulates the pressing of function key `F3' followed by key `q'.
======================================================================
CHANGES BETWEEN 2.10.1 and 2.10.2 (2020-May-09)
I. IMPORTANT CHANGES
- Support of WOFF2 fonts. This code contribution was Nikhil
Ramakrishnan's GSoC 2019 project.
II. MISCELLANEOUS
- Function `FT_Get_Var_Axis_Flags' returned random data for Type 1
MM fonts.
- Type 1 fonts with non-integer metrics are now supported by the new
(CFF) engine introduced in FreeType 2.9.
- Drop support for Python 2 in Freetype's API reference generator
`docwriter' (Python >= 3.5 is required for targets `make refdoc'
and `make refdoc-venv').
- Auto-hinter support for Hanifi Rohingya.
- Document the `FT2_KEEP_ALIVE' debugging environment variable.
- The Visual C++ (and Visual C) project files for Windows builds no
longer generate libraries that contain the FreeType version in its
filenames. Instead, a resource file gets used to make the
libraries contain the corresponding information.
- The next release will remove Jam build support.
- The `ftbench' demo program has a new test for testing the
`FT_Glyph_Stroke' functionality.
======================================================================
CHANGES BETWEEN 2.10.0 and 2.10.1 (2019-Jul-01)
I. IMPORTANT BUG FIXES
- The bytecode hinting of OpenType variation fonts was flawed, since
the data in the `CVAR' table wasn't correctly applied.
II. MISCELLANEOUS
- Auto-hinter support for Mongolian.
- For distribution, `.tar.bz2' packages are replaced with `.tar.xz'
bundles.
- The handling of the default character in PCF fonts as introduced
in version 2.10.0 was partially broken, causing premature abortion
of charmap iteration for many fonts.
- If `FT_Set_Named_Instance' was called with the same arguments
twice in a row, the function returned an incorrect error code the
second time.
- Direct rendering using FT_RASTER_FLAG_DIRECT crashed (bug
introduced in version 2.10.0).
- Increased precision while computing OpenType font variation
instances.
- The flattening algorithm of cubic Bezier curves was slightly
changed to make it faster. This can cause very subtle rendering
changes, which aren't noticeable by the eye, however.
- The auto-hinter now disables hinting if there are blue zones
defined for a `style' (i.e., a certain combination of a script and
its related typographic features) but the font doesn't contain any
characters needed to set up at least one blue zone.
- The `ftmulti' demo program now supports multiple hidden axes with
the same name tag.
- `ftview', `ftstring', and `ftgrid' got a `-k' command line option
to emulate a sequence of keystrokes at start-up.
- `ftview', `ftstring', and `ftgrid' now support screen dumping to a
PNG file.
- The bytecode debugger, `ttdebug', now supports variation TrueType
fonts; a variation font instance can be selected with the new `-d'
command line option.
======================================================================
CHANGES BETWEEN 2.9.1 and 2.10.0 (2019-Mar-15)
I. IMPORTANT CHANGES
- A bunch of new functions has been added to access and process
COLR/CPAL data of OpenType fonts with color-layered glyphs.
FT_Palette_Data_Get
Retrieve color palette data.
FT_Palette_Select
Select and activate a color palette for color-layered
glyphs.
FT_Palette_Set_Foreground_Color
Set text foreground color for palette index 0xFFFF.
FT_Get_Color_Glyph_Layer
Get color layers for a given glyph (using an interator
object).
FT_Bitmap_Blend
Blend one bitmap onto another with a given color.
- An experimental feature is the new behaviour of the
`FT_LOAD_COLOR' load flag for color-layered glyphs: Internally
it sets a flag so that if `FT_Render_Glyph' is called with
`FT_RENDER_MODE_NORMAL' (or `FT_Load_Glyph' with
`FT_LOAD_RENDER'), a default blending of the color glyph layers
will happen automatically for convenience.
- As a GSoC 2018 project, Nikhil Ramakrishnan completely
overhauled and modernized the API reference.
II. MISCELLANEOUS
- The logic for computing the global ascender, descender, and
height of OpenType fonts has been slightly adjusted for
consistency.
. If the `useTypoMetrics' flag (i.e., bit 7 in the `fsSelection'
field) in the `OS/2' table is set, use the `sTypo' fields in
`OS/2' unconditionally.
. Otherwise use the metrics data from the `hhea' table (if not
zero).
. Otherwise use the `sTypo' fields from the `OS/2' table (if not
zero).
. Otherwise use the `usWin' data from the `OS/2' table as a last
resort.
Variable fonts will apply the `MVAR' deltas to whichever metrics
were picked.
- `TT_Set_MM_Blend' could fail if call repeatedly with the same
arguments.
- The precision of handling deltas in Variation Fonts has been
increased. The problem did only show up with multidimensional
designspaces.
- New function `FT_Library_SetLcdGeometry' to set up the geometry
of LCD subpixels.
- FreeType now uses the `defaultChar' property of PCF fonts to set
the glyph for the undefined character at glyph index 0 (as
FreeType already does for all other supported font formats). As
a consequence, the order of glyphs of a PCF font if accessed
with FreeType can be different now compared to previous
versions.
This change doesn't affect PCF font access with cmaps.
- `FT_Select_Charmap' has been changed to allow parameter value
`FT_ENCODING_NONE', which is valid for BDF, PCF, and Windows FNT
formats to access built-in cmaps that don't have a predefined
`FT_Encoding' value.
- A previously reserved field in the `FT_GlyphSlotRec' structure
now holds the glyph index.
- On Win32 platforms, the use of `_DLL' to build the library has
been replaced with `DLL_EXPORT' and `DLL_IMPORT'.
- The usual round of fuzzer bug fixes to better reject malformed
fonts.
- `FT_Outline_New_Internal' and `FT_Outline_Done_Internal' have
been removed. These two functions were public by oversight only
and were never documented.
- A new function `FT_Error_String' returns descriptions of error
codes if configuration macro FT_CONFIG_OPTION_ERROR_STRINGS is
defined.
- `FT_Set_MM_WeightVector' and `FT_Get_MM_WeightVector' are new
functions limited to Adobe MultiMaster fonts to directly set and
get the weight vector.
- Support for Position Independent Code as needed by systems that
prohibit automatic address fixups, such as BREW, has been
removed. [Compilation with modern compilers that use flags like
`-fPIC' or `-fPIE' is not affected.]
- The `ftdump' demo program has new options `-c' and `-C' to
display charmaps in compact and detailed format, respectively.
Option `-V' has been removed.
- The `ftview', `ftstring', and `ftgrid' demo programs use a new
command line option `-d' to specify the program window's width,
height, and color depth.
- The `ftview' demo program now displays red boxes for zero-width
glyphs.
- `ftglyph' has limited support to display fonts with
color-layered glyphs. This will be improved later on.
- `ftgrid' can now display bitmap fonts also.
- The `ttdebug' demo program has a new option `-f' to select a
member of a TrueType collection (TTC).
- Other various improvements to the demo programs.
======================================================================
CHANGES BETWEEN 2.9 and 2.9.1 (2019-May-01)
I. IMPORTANT BUG FIXES
- Type 1 fonts containing flex features were not rendered
correctly (bug introduced in version 2.9).
- CVE-2018-6942: Older FreeType versions can crash with certain
malformed variation fonts.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6942
II. MISCELLANEOUS
- Bug fix: Multiple calls to `FT_Get_MM_Var' returned garbage.
- The base extensions `ftlcdfil' and `ftfntfmt' are now part of
the base module (and thus no longer configurable in file
`modules.cfg').
- Emboldening of bitmaps didn't work correctly sometimes, showing
various artifacts (bug introduced in version 2.8.1).
- Use of the `freetype-config' script to get compilation and
linking options is deprecated since it doesn't support
cross-compiling, among other deficiencies. Instead, you should
use the `pkg-config' interface.
The `configure' script no longer installs `freetype-config' by
default. For backward compatibility, a new configure option
`--enable-freetype-config' is provided that reverts this
decision.
- The auto-hinter script ranges have been updated for Unicode 11.
No support for new scripts have been added, however, with the
exception of Georgian Mtavruli.
- Support for cmake has been improved.
- The next release will remove support for Position Independent
Code as needed by systems that prohibit automatic address
fixups, such as BREW. [Compilation with modern compilers that
use flags like `-fPIC' or `-fPIE' is not affected.]
======================================================================
CHANGES BETWEEN 2.8.1 and 2.9 (2018-Jan-08)
I. IMPORTANT BUG FIXES
- Advance width values of variation fonts were often wrong.
- More fixes for variation font support; you should update to this
version if you want to support them.
II. IMPORTANT CHANGES
- As a GSoC project, Ewald Hew extended the new (Adobe) CFF engine
to handle Type 1 fonts also, thus greatly improving the
rendering of this format. This is the new default. The old
engine is still available if the configuration macro
`T1_CONFIG_OPTION_OLD_ENGINE' gets defined; using the
`hinting-engine' property of the `type1' driver module you can
then switch between the two engines.
- A new function, `FT_Set_Named_Instance', can be used to set or
change the current named instance.
- Starting with this FreeType version, resetting variation
coordinates will return to the currently selected named
instance. Previously, FreeType returned to the base font (i.e.,
no instance set).
III. MISCELLANEOUS
- The `face_flags' field of the `FT_Face' structure has a new bit,
`FT_FACE_FLAG_VARIATION', which is set if a variation font has
been altered with `FT_Set_MM_Design_Coordinates',
`FT_Set_Var_Design_Coordinates', or
`FT_Set_Var_Blend_Coordinates'.
- If the current face is a named instance, the new macro
`FT_IS_NAMED_INSTANCE' returns true.
- `FT_IS_VARIATION' is a new macro that returns true whenever a
face object has been altered by `FT_Set_MM_Design_Coordinates',
`FT_Set_Var_Design_Coordinates', or
`FT_Set_Var_Blend_Coordinates'.
- Changing the design coordinates of a variation font with
`FT_Set_Var_Design_Coordinates' or
`FT_Set_Var_Blend_Coordinates' does not influence the named
instance index value (only `FT_Set_Named_Instance' does that).
- Special PostScript names for named instances are only returned
if the named instance is set with `FT_Set_Named_Instance' (and
the font has corresponding entries in its `fvar' table). If
`FT_IS_VARIATION' returns true, the algorithmically derived
PostScript name is provided, not looking up special entries for
named instances.
- A new function `FT_Done_MM_Var' is provided to free the memory
returned in a call to `FT_Get_MM_Var'.
- On platforms using the `configure' script, the installed
`ftoption.h' file now correctly reflects configuration options
like `--with-harfbuzz'.
- Better support to build FreeType as a DLL on Windows using
Visual C.
- All data specific to driver modules is now collected in a single
file, `FT_DRIVER_H'. Consequently, the macros
`FT_AUTOHINTER_H', `FT_CFF_DRIVER_H', `FT_TRUETYPE_DRIVER_H',
and `FT_PCF_DRIVER_H' still work but are deprecated.
- Some fuzzer fixes to better reject malformed fonts.
- The `ftbench' demo program has a new test for opening a new face
and loading some glyphs.
- The `ftbench' demo program has a new option `-j' to specify the
last glyph index to be used in the tests.
- The `ftgrid' demo program has a new option `-n' to suppress
display of named instances of variation fonts.
- The `ttdebug' demo program can now show a stack trace (key `K')
and switch between hexadecimal and decimal display of integers
(key `I').
======================================================================
CHANGES BETWEEN 2.8 and 2.8.1 (2017-Sep-16)
I. IMPORTANT BUG FIXES
- B/W hinting of TrueType fonts didn't work properly if
interpreter version 38 or 40 was selected.
- Some severe problems within the handling of TrueType Variation
Fonts were found and fixed.
- Function `FT_Set_Var_Design_Coordinates' didn't correctly handle
the case with less input coordinates than axes.
II. IMPORTANT CHANGES
- By default, FreeType now offers high quality LCD-optimized
output without resorting to ClearType techniques of resolution
tripling and filtering. In this method, called Harmony, each
color channel is generated separately after shifting the glyph
outline, capitalizing on the fact that the color grids on LCD
panels are shifted by a third of a pixel. This output is
indistinguishable from ClearType with a light 3-tap filter.
III. MISCELLANEOUS
- Using the new function `FT_Get_Var_Axis_Flags', an application
can access the `flags' field of a variation axis (introduced in
OpenType version 1.8.2)
- More sanity checks.
- The internal representation of buffers for LCD rendering has
changed (to be more precise, the amount of padding gets computed
differently). Applications that use the FreeType API are not
affected.
- To reset all design axis values of a variation font to its
default values you can now say
error = FT_Set_Var_Design_Coordinates( face, 0, NULL );
This also works with functions `FT_Set_MM_Design_Coordinates'
and `FT_Set_MM_Blend_Coordinates'.
- FreeType now synthesizes a missing Unicode cmap for (older)
TrueType fonts also if glyph names are available.
- FreeType has improved handling of BDF fonts without the
`POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties; the
library now uses the values of the `SIZE' keyword if they are
missing. Previously, `SIZE' was completely ignored, and
FreeType used heuristic values instead.
- Multiple calls to `FT_Bitmap_Convert' do work now as advertised.
Previously, they failed with an assertion error if there was an
empty bitmap between non-empty ones.
- The warping option has moved from `light' to `normal' hinting
where it replaces the original hinting algorithm. The `light'
mode is now always void of any hinting in x-direction.
- 16bit compiler support is now officially ended. We didn't
provide any maintenance since many years, and given that there
were no error or problem reports either it seems that it is no
longer needed.
- The `ftgrid' demo program can now toggle the display of grid
lines with the `G' key.
- The `ftgrid' demo program can toggle a different set of colors
(suitable to color-blind people) with the `C' key.
- The `ftgrid' demo program now supports the `-e' command line
option to select a cmap.
- The `ftdump' demo program has a new command line option `-t' to
output the SFNT table list.
======================================================================
CHANGES BETWEEN 2.7.1 and 2.8 (2017-May-13)
I. IMPORTANT CHANGES
- Support for OpenType Variation Fonts is now complete. The last
missing part was handling the `VVAR' and `MVAR' tables, which is
available with this release.
- A new function `FT_Face_Properties' allows the control of some
module and library properties per font. Currently, the
following properties can be handled: stem darkening, LCD filter
weights, and the random seed for the `random' CFF operator.
- The PCF change to show more `colorful' family names (introduced
in version 2.7.1) was too radical; it can now be configured with
PCF_CONFIG_OPTION_LONG_FAMILY_NAMES at compile time. If
activated, it can be switched off at run time with the new pcf
property `no-long-family-names'. If the `FREETYPE_PROPERTIES'
environment variable is available, you can say
FREETYPE_PROPERTIES=pcf:no-long-family-names=1
- Support for the following scripts has been added to the
auto-hinter.
Adlam, Avestan, Bamum, Buhid, Carian, Chakma, Coptic, Cypriot,
Deseret, Glagolitic, Gothic, Kayah, Lisu, N'Ko, Ol Chiki, Old
Turkic, Osage, Osmanya, Saurashtra, Shavian, Sundanese, Tai
Viet, Tifinagh, Unified Canadian Syllabics, Vai
II. IMPORTANT BUG FIXES
- `Light' auto-hinting mode no longer uses TrueType metrics for
TrueType fonts. This bug was introduced in version 2.4.6,
causing horizontal scaling also. Almost all GNU/Linux
distributions (with Fedora as a notable exception) disabled the
corresponding patch for good reasons; chances are thus high that
you won't notice a difference.
If optical backward compatibility for legacy applications is
necessary, you might enable the AF_CONFIG_OPTION_TT_SIZE_METRICS
configuration option. However, it is strongly recommended to
avoid that, adjusting font sizes instead.
- Global size metrics values in the `FT_Size_Metrics' structure
can be different for TrueType fonts. Reason is that in older
FreeType versions the metrics were rounded differently to
integer pixels compared to all other font formats, yielding an
inconsistent behaviour if you used non-native hinting. Starting
with this version, global size metrics for TrueType fonts are
handled the same as other font formats: `ascender' gets rounded
up, `descender' gets rounded down, `height' gets normally
rounded, and `max_advance' gets normally rounded, too.
If you need more precise values of (global) ascender, descender,
height, or `max_advance', please take the corresponding values
from the `FT_Face' structure and scale them manually.
- If a TrueType font gets loaded with FT_LOAD_NO_HINTING, FreeType
now scales the font linearly again (bug introduced in version
2.4.6).
- CVE-2017-8105, CVE-2017-8287: Older FreeType versions have
out-of-bounds writes caused by heap-based buffer overflows
related to Type 1 fonts.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8105
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8287
III. MISCELLANEOUS
- A new function `FT_Set_Default_Properties' has been added to
parse the `FREETYPE_PROPERTIES' environment variable
(previously, it was internal only). `FT_Init_FreeType' always
call this function, but `FT_New_Library' does not (similar to
`FT_Add_Default_Modules').
- To be in sync with OpenType version 1.7 and newer, macros
FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY,
TT_NAME_ID_PREFERRED_FAMILY
TT_NAME_ID_PREFERRED_SUBFAMILY
are renamed to