Commit ab6d10759a8f5f3a4987aeff9e0bd7d79d529c82

Werner Lemberg 2001-04-02T21:30:06

* CHANGES: Reformatted, minor fixes. * TODO: Updated. * include/freetype/freetype.h: Formatting. * Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles to the source tree. See www.freetype.org/jam/index.html for details.

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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
diff --git a/CHANGES b/CHANGES
index 674907d..a3d25c4 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,533 +4,515 @@ LATEST CHANGES BETWEEN 2.0.2 and 2.0.1
   I. CHANGES TO THE MODULES / FONT DRIVERS:
 
     - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
-	  avoid legal problems with the Apple patents. It seems that we
-	  mistakenly turned this option on in previous releases of the build.
-	  
-	  note that if you want to use the bytecode interpreter, in order to
-	  get high-quality TrueType rendering, you'll need to toggle by hand
-	  the definition of the TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro
-	  in the file "include/freetype/config/ftoption.h"
-
-    - The CFF driver has been improved by Tom Kacvinsky and Sander van der Wal:
-	
-	      * support for "seac" emulation
-		  * support for "dotsection"
-		  * support for retrieving glyph names through "FT_Get_Glyph_Name"
+      avoid legal problems  with the Apple patents.  It  seems that we
+      mistakenly  turned this option  on in  previous releases  of the
+      build.
 
-      The first two items are necessary to correctly a large number of
-	  Type 1 fonts converted to the CFF formats by Adobe Acrobat.
+      Note that if  you want to use the  bytecode interpreter in order
+      to get high-quality TrueType  rendering, you will need to toggle
+      by        hand        the        definition        of        the
+      TT_CONFIG_OPTION_BYTECODE_INTERPRETER   macro    in   the   file
+      "include/freetype/config/ftoption.h".
+
+    - The CFF driver has been improved by Tom Kacvinsky and Sander van
+      der Wal:
+
+      * Support for "seac" emulation.
+      * Support for "dotsection".
+      * Support for retrieving glyph names through
+        "FT_Get_Glyph_Name".
 
+      The first two items are necessary to correctly a large number of
+      Type 1 fonts converted to the CFF formats by Adobe Acrobat.
 
-    - the Type 1 driver was also improved by Tom & others:
-	
-	      * better EM size computation
-		  
-		  * better support for synthetic (transformed) fonts
-		  
-          * the Type 1 driver returns the charstrings corresponding to
-		    each glyph in the "glyph->control_data" field after a call to
-			"FT_Load_Glyph" (thanks Ha Shao)
+    - The Type 1 driver was also improved by Tom & others:
 
+      * Better EM size computation.
+      * Better support for synthetic (transformed) fonts.
+      * The  Type 1  driver returns  the charstrings  corresponding to
+        each glyph in the  "glyph->control_data" field after a call to
+        "FT_Load_Glyph" (thanks Ha Shao).
 
-    - various other bugfixes, including the following:
-	
-	      * fixed a nasty memory leak in the Type 1 driver
-		  
-		  * the autohinter and the pcf driver used static writable data
-		    when they shouldn't
-			
-          * many casts were added to make the code more 64-bits safe.
-		    it also now compiles on Windows XP 64-bits without warnings
+    - Various other bugfixes, including the following:
 
-          * some incorrect writable statics were removed in the "autohint"
-		    and "pcf" drivers. FT2 now compiles on Epoc again..
+      * Fixed a nasty memory leak in the Type 1 driver.
+      * The autohinter  and the pcf  driver used static  writable data
+        when they shouldn't.
+      * Many casts were added to  make the code more 64-bits safe.  It
+        also now compiles on Windows XP 64-bits without warnings.
+      * Some incorrect writable statics were removed in the "autohint"
+        and "pcf" drivers.  FreeType 2 now compiles on Epoc again.
 
 
   II. CHANGES TO THE HIGH-LEVEL API
-  
-    - the library header files inclusion scheme has been changed. The old
-	  scheme looked like:
-	  
-	       #include <freetype/freetype.h>
-		   #include <freetype/ftglyph.h>
-		   #include <freetype/ftcache.h>
-		   #include <freetype/cache/ftimage.h>
-		   
-      use:
-	  
-	       #include <ft2build.h>
-		   #include FT_FREETYPE_H
-		   #include FT_GLYPH_H
-		   #include FT_CACHE_H
-		   #include FT_CACHE_IMAGE_H
-		   
-      NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS RELEASE.
-	  HOWEVER, WE DON'T GUARANTEE THAT THIS WILL STILL BE TRUE IN THE NEXT
-	  ONE (A.K.A. FREETYPE 2.1)
-
-      the file <ft2build.h> is used to define the header filename macros.
-	  The complete and commented list of macros is available in the API
-	  reference under the section name "Header File Macros" in Chapter I.
 
-      For more information, see section I of the following document:
-	  
-	      http://www.freetype.org/freetype2/docs/tutorial/step1.html
-   or http://freetype.sourceforge.net/freetype2/docs/tutorial/step1.html
+    - The library header files inclusion scheme has been changed.  The
+      old scheme looked like:
 
+        #include <freetype/freetype.h>
+        #include <freetype/ftglyph.h>
+        #include <freetype/ftcache.h>
+        #include <freetype/cache/ftimage.h>
 
-    - many, many comments have been added to the public source file in
-	  order to automatically generate the API Reference through the
-	  "docmaker.py" Python script.
-	  
-	  The latter has been updated to support the grouping of sections
-	  in chapters, and better index sort. See:
+      Now you should use:
 
-	       http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
+        #include <ft2build.h>
+        #include FT_FREETYPE_H
+        #include FT_GLYPH_H
+        #include FT_CACHE_H
+        #include FT_CACHE_IMAGE_H
 
+      NOTE THAT  THE OLD  INCLUSION SCHEME WILL  STILL WORK  WITH THIS
+      RELEASE.  HOWEVER, WE  DO NOT GUARANTEE THAT THIS  WILL STILL BE
+      TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
 
-  III. CHANGES TO THE BUILD PROCESS
-  
-
-    - if you're not building FreeType 2 with our own build system (i.e. with
-	  your own Makefiles or project files), you'll need to be aware that the
-	  build process as changed a little bit. Namely:
-	  
-	      - you don't need to put the "src" directory in the include path
-		    when compiling any FT2 component
-			
-	      - instead, simply put the component's directory in the current
-		    include path.
-			
-	  So, if you were doing something like:
-	  
-	        cc -c -Iinclude -Isrc src/base/ftbase.c
-			
-	  change the line to:
-	  
-	        cc -c -Iinclude -Isrc/base src/base/ftbase.c
-			
-	  
-	  If you were doing something like:
-	  
-	        cd src/base
-			cc -c -I../../include -I.. ftbase.c
-			
-	  change it to:
-	  
-	        cd src/base
-			cc -c -I../../include ftbase.c
-
-	  
-    - the build system has changed slightly when compiling by hand (either
-      from the command line or from an IDE). You don't need to put the "src"
-      directory in the include path anymore. Rather, place each component's
-      path.. See INSTALL and "docs/BUILD" for details..
-
-
-
-=========================================================================
-LATEST CHANGES BETWEEN 2.0.1 and 2.0:
+      The  file <ft2build.h>  is used  to define  the  header filename
+      macros.  The complete and  commented list of macros is available
+      in the API reference under the section name "Header File Macros"
+      in Chapter I.
 
-  2.0.1 introduces a few changes:
+      For more information, see section I of the following document:
 
-    - fixed many bugs related to the support of CFF / OpenType fonts.
-      These formats are now much better supported though there is still
-      work planned to deal with Charset tables and PDF-embedded CFF
-      files that use the old "seac" command.
-    
-    - the library could not be compiled in debug mode with a very small
-      number of C compilers whose pre-processors didn't implement the
-      "##" directive correctly (i.e. per se the ANSI C specification!)
-      An elegant fix was found.
-  
-    - added support for the free Borland command-line C++ Builder compiler
-      use "make setup bcc32" to use it. Also fixed a few source lines that
-      generated new warnings with BCC32.
-  
-    - fixed a bug in FT_Outline_Get_BBox when computing the extrema of
-      a conic Bezier arc.
-  
-    - updated the INSTALL file to add IDE compilation.
+        http://www.freetype.org/
+          freetype2/docs/tutorial/step1.html
 
-    - other minor bug fixes, from invalid Type 1 style flags to correct
-      support of synthetic (obliqued) fonts in the auto-hinter, better
-      support for embedded bitmaps in a SFNT font.
+      or
 
-    - fixed some problems with "freetype-config"
+        http://freetype.sourceforge.net/
+          freetype2/docs/tutorial/step1.html
 
+    - Many, many comments have been added to the public source file in
+      order to  automatically generate  the API Reference  through the
+      "docmaker.py" Python script.
 
-  Finally, the "standard" scheme for including FreeType headers is now
-  gradually changing, but this will be explained in a later release
-  (probably 2.0.2) ...
+      The latter has been updated  to support the grouping of sections
+      in chapters and better index sort.  See:
 
-  And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi for
-  their contributions!
+        http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
 
-=========================================================================
-CHANGES BETWEEN beta8 and 2.0
 
-  - changed the default installation path for public headers from
-    "include/freetype" to "include/freetype2".
+  III. CHANGES TO THE BUILD PROCESS
 
-    Also added a new "freetype-config" that is automatically
-    generated and installed on Unix and Cygwin systems. The
-    script itself is used to retrieve the current install path,
-    C compilation flags as well as linker flags..
 
-  - fixed several small bugs:
+    - If you  are not  building FreeType 2  with its own  build system
+      (but with your own Makefiles or project files), you will need to
+      be  aware that  the  build  process has  changed  a little  bit.
 
-      - incorrect max advance width for fixed-pitch Type 1 fonts
+      You don't  need to put the  "src" directory in  the include path
+      when  compiling  any FT2  component.   Instead,  simply put  the
+      component's directory in the current include path.
 
-      - incorrect glyph names for certain TrueType fonts
+      So, if you were doing something like:
 
-      - the glyph advance was not copied when FT_Glyph_To_Bitmap was called
+        cc -c -Iinclude -Isrc src/base/ftbase.c
 
-      - the linearHoriAdvance and linerVertAdvance fields were not
-        correctly returned for glyphs processed by the auto-hinter
+      change the line to:
 
-  - "type1z" renamed back to "type1"; the old "type1" module has been
-    removed
+        cc -c -Iinclude -Isrc/base src/base/ftbase.c
 
-  - revamped the build system to make it a lot more generic. This will
-    allow us to re-use nearly un-modified in lots of other projects
-    (including FreeType Layout)
+      If you were doing something like:
 
-  - changed "cid" to use "psaux" too..
+        cd src/base
+        cc -c -I../../include -I.. ftbase.c
 
-  - added the cache sub-system. See <freetype/ftcache.h> as well as the
-    sources in "src/cache". Note that it compiles but is still untested
-    for now ..
+      change it to:
 
-  - updated "docs/docmaker.py", a draft API reference is available at
-    http://www.freetype.org/ft2api.html
+        cd src/base
+        cc -c -I../../include ftbase.c
 
-  - changed "type1" to use "psaux"
 
-  - created a new module named "psaux" to hold the Type 1 & Type 2 parsing
-    routines. It should be used by "type1", "cid" and "cff" in the future
+======================================================================
 
-  - fixed an important bug in "FT_Glyph_Get_CBox"
+LATEST CHANGES BETWEEN 2.0.1 and 2.0:
 
-  - fixed some compiler warnings that happened since the TrueType
-    bytecode decoder was deactivated by default..
 
-  - fixed two memory leaks:
-       - the memory manager (16 bytes) isn't released in FT_Done_FreeType !!
+  2.0.1 introduces a few changes:
 
-       - using custom input streams, the copy of the original stream
-         was never released
+    - Fixed many bugs related to  the support of CFF / OpenType fonts.
+      These  formats are  now much  better supported  though  there is
+      still work planned to  deal with charset tables and PDF-embedded
+      CFF files that use the old "seac" command.
 
-  - fixed the auto-hinter by performing automatic computation of the
-    "filling direction" of each glyph. This is done through a simple and
-    fast approximation, and seems to work (problems spotted by Werner
-    though). The Arphic fonts are a lot nicer though there are still a
-    lot of things to do to handle Asian fonts correctly..
+    - The  library could not  be compiled  in debug  mode with  a very
+      small  number   of  C  compilers   whose  pre-processors  didn't
+      implement the "##"  directive correctly (i.e. per se  the ANSI C
+      specification!)  An elegant fix was found.
 
-===========================================================================
-BETA-8 (RELEASE CANDIDATE) CHANGES
+    - Added  support for  the  free Borland  command-line C++  Builder
+      compiler.   Use "make  setup bcc32".   Also fixed  a  few source
+      lines that generated new warnings with BCC32.
 
-  - deactivated the trueType bytecode interpreter by default
+    - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
+      a conic Bezier arc.
 
-  - deactivated the "src/type1" font driver. Now "src/type1z" is
-    used by default..
+    - Updated the INSTALL file to add IDE compilation.
 
-  - updates to the build system. We now compile the library correctly
-    under Unix system through "configure" which is automatically called
-    on the first "make" invocation.
+    - Other  minor bug  fixes,  from  invalid Type  1  style flags  to
+      correct   support   of  synthetic   (obliqued)   fonts  in   the
+      auto-hinter, better support for embedded bitmaps in a SFNT font.
 
-  - added the auto-hinting module !!. Fixing some bugs here and there..
+    - Fixed some problems with "freetype-config".
 
-  - found some bugs in the composite loader (seac) of the Type1-based
-    font drivers..
+  Finally, the "standard" scheme for including FreeType headers is now
+  gradually changing,  but this will  be explained in a  later release
+  (probably 2.0.2).
 
-  - renamed the directory "freetype2/config" to "freetype2/builds" and
-    updated all relevant files..
+  And very  special thanks to Tom Kacvinsky  and YAMANO-UCHI Hidetoshi
+  for their contributions!
 
-  - found a memory leak in the "type1" driver
 
-  - incorporated Tom's patches to support flex operators correctly
-    in OpenType/CFF fonts.. Now all I need is to support pure CFF
-    and CEF fonts to be done with this driver.. :-)
+======================================================================
 
-  - added the Windows FNT/FON driver in "src/winfonts". For now,
-    it always "simulates" a Unicode charmap, so it shouldn't be
-    considered completed right now..
+CHANGES BETWEEN beta8 and 2.0
 
-    It's there to be more a proof of concept than anything else
-    anyway. The driver is a single C source file, that compiles
-    to 3 Kb of code..
+  - Changed  the default  installation  path for  public headers  from
+    "include/freetype" to "include/freetype2".
 
-    I'm still working on the PCF/BDF drivers.. but I'm too lazy
-    to finish them now..
+    Also added a new "freetype-config" that is automatically generated
+    and installed  on Unix and  Cygwin systems.  The script  itself is
+    used to retrieve the current  install path, C compilation flags as
+    well as linker flags.
 
+  - Fixed several small bugs:
 
-  - CHANGES TO THE HIGH-LEVEL API
+    * Incorrect max advance width for fixed-pitch Type 1 fonts.
+    * Incorrect glyph names for certain TrueType fonts.
+    * The  glyph advance  was not  copied when  FT_Glyph_To_Bitmap was
+      called.
+    * The  linearHoriAdvance  and  linerVertAdvance  fields  were  not
+      correctly returned for glyphs processed by the auto-hinter.
+    * "type1z"  renamed back to  "type1"; the  old "type1"  module has
+      been removed.
 
-    o FT_Get_Kerning has a new parameter that allows you to select
-      the coordinates of the kerning vector ( font units, scaled,
-      scaled + grid-fitted ).
+  - Revamped the  build system  to make it  a lot more  generic.  This
+    will  allow us  to  re-use  nearly un-modified  in  lots of  other
+    projects (including FreeType Layout).
 
-    o the outline functions are now in <freetype/ftoutln.h> and not
-      part of <freetype/freetype.h> anymore
+  - Changed "cid" to use "psaux" too.
 
-    o <freetype/ftmodule.h> now contains declarations for
-       FT_New_Library, FT_Done_Library, FT_Add_Default_Modules
+  - Added the  cache sub-system.  See <freetype/ftcache.h>  as well as
+    the sources  in "src/cache".  Note  that it compiles but  is still
+    untested for now.
 
-    o the so-called convenience functions have moved from "ftoutln.c"
-      to "ftglyph.c", and are thus available with this optional component
-      of the library. They are declared in <freetype/ftglyph.h> now..
+  - Updated "docs/docmaker.py", a draft  API reference is available at
+    http://www.freetype.org/ft2api.html.
 
-    o anti-aliased rendering is now the default for FT_Render_Glyph
-      (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
-      To generate a monochrome bitmap, use ft_render_mode_mono, or the
-      FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
+  - Changed "type1" to use "psaux".
 
-      FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
+  - Created a  new module named  "psaux" to hold  the Type 1 &  Type 2
+    parsing routines.  It should be  used by "type1", "cid", and "cff"
+    in the future.
 
-    o <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
-      solving a few headaches :-)
+  - Fixed an important bug in "FT_Glyph_Get_CBox".
 
-    o the type FT_GlyphSlotRec has now a "library" field.
+  - Fixed  some compiler  warnings  that happened  since the  TrueType
+    bytecode decoder was deactivated by default.
 
+  - Fixed two memory leaks:
 
+    * The    memory   manager   (16    bytes)   isn't    released   in
+      FT_Done_FreeType!
+    * Using custom input streams, the  copy of the original stream was
+      never released.
 
-  - CHANGES TO THE "ftglyph.h" API
+  - Fixed the  auto-hinter by performing automatic  computation of the
+    "filling direction" of each glyph.   This is done through a simple
+    and  fast approximation, and  seems to  work (problems  spotted by
+    Werner though).  The Arphic fonts are a lot nicer though there are
+    still a lot of things to do to handle Asian fonts correctly.
 
-    This API has been severely modified in order to make it simpler,
-    clearer, and more efficient. It certainly now looks like a real
-    "glyph factory" object, and allows client applications to manage
-    (i.e. transform, bbox and render) glyph images without ever knowing
-    their original format.
 
-  - added support for CID-keyed fonts to the CFF driver.
-    maybe support for pure CFF + CEF fonts should come in ??
+======================================================================
 
+BETA-8 (RELEASE CANDIDATE) CHANGES
 
-  - cleaned up source code in order to avoid two functions with the
-    same name. Also changed the names of the files in "type1z" from
-    "t1XXXX" to "z1XXXX" in order to avoid any conflicts.
+  - Deactivated the TrueType bytecode interpreter by default.
 
-    "make multi" now works well :-)
+  - Deactivated the "src/type1" font driver.  Now "src/type1z" is used
+    by default.
 
-    Also removed the use of "cidafm" for now, even if the source files
-    are still there. This functionality will certainly go into a specific
-    module..
+  - Updates to the build system.  We now compile the library correctly
+    under  Unix  system  through  "configure" which  is  automatically
+    called on the first "make" invocation.
 
+  - Added the auto-hinting module!  Fixing some bugs here and there.
 
+  - Found some bugs in the  composite loader (seac) of the Type1-based
+    font drivers.
 
-  - ADDED SUPPORT FOR THE AUTO-HINTER
+  - Renamed the directory "freetype2/config" to "freetype2/builds" and
+    updated all relevant files.
 
-    It works :-) I have a demo program which simply is a copy of "ftview"
-    that does a FT_Add_Module( library, &autohinter_module_class ) after
-    library initialisation, and Type 1 & OpenType/CFF fonts are now hinted.
+  - Found a memory leak in the "type1" driver.
 
-    CID fonts are not hinted, as they include no charmap and the auto-hinter
-    doesn't include "generic" global metrics computations yet..
+  - Incorporated Tom's patches to  support flex operators correctly in
+    OpenType/CFF fonts.  Now all I need is to support pure CFF and CEF
+    fonts to be done with this driver :-)
 
-    Now, I need to release this thing to the FreeType 2 source..
+  - Added the  Windows FNT/FON driver in "src/winfonts".   For now, it
+    always  "simulates"   a  Unicode  charmap,  so   it  shouldn't  be
+    considered completed right now.
 
+    It  is there  to be  more a  proof of  concept than  anything else
+    anyway.  The driver is a single  C source file, that compiles to 3
+    Kb of code.
 
+    I'm  still working on  the PCF/BDF  drivers, but  I'm too  lazy to
+    finish them now.
 
+  - CHANGES TO THE HIGH-LEVEL API
 
+    * FT_Get_Kerning has a new parameter that allows you to select the
+      coordinates of the kerning  vector (font units, scaled, scaled +
+      grid-fitted).
+    * The  outline functions are  now in <freetype/ftoutln.h>  and not
+      part of <freetype/freetype.h> anymore.
+    * <freetype/ftmodule.h>    now     contains    declarations    for
+       FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
+    * The so-called convenience  functions have moved from "ftoutln.c"
+      to  "ftglyph.c",  and  are  thus available  with  this  optional
+      component    of   the   library.     They   are    declared   in
+      <freetype/ftglyph.h> now.
+    * Anti-aliased  rendering is now  the default  for FT_Render_Glyph
+      (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
+      To generate a monochrome bitmap, use ft_render_mode_mono, or the
+      FT_LOAD_MONOCHROME     flag    in    FT_Load_Glyph/FT_Load_Char.
+      FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
+    * <freetype/freetype.h>  now include <freetype/config/ftconfig.h>,
+      solving a few headaches :-)
+    * The type FT_GlyphSlotRec has now a "library" field.
 
-  - CHANGES TO THE RENDERER MODULES
+  - CHANGES TO THE "ftglyph.h" API
 
-    the monochrome and smooth renderers are now in two distinct directories,
-    namely "src/raster1" and "src/smooth". Note that the old "src/renderer"
-    is now gone..
+    This API has  been severely modified in order  to make it simpler,
+    clearer, and more  efficient.  It certainly now looks  like a real
+    "glyph factory"  object, and allows client  applications to manage
+    (i.e.  transform,  bbox  and  render) glyph  images  without  ever
+    knowing their original format.
 
-    I ditched the 5-gray-levels renderers. Basically, it involved a simple
-    #define toggle in 'src/raster1/ftraster.c'
+  - Added  support  for CID-keyed  fonts  to  the  CFF driver.   Maybe
+    support for pure CFF + CEF fonts should come in?
 
-    FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now select
-    the best renderer available, depending on render mode. If the current
-    renderer for a given glyph image format isn't capable of supporting
-    the render mode, another one will be found in the library's list.
+  - Cleaned up  source code in order  to avoid two  functions with the
+    same name.  Also  changed the names of the  files in "type1z" from
+    "t1XXXX" to "z1XXXX" in order to avoid any conflicts.
 
-    This means that client applications do not need to switch or set the
-    renderers themselves (as in the latest change), they'll get what they
-    want automatically... At last..
+    "make multi" now works well :-)
 
-    Changed the demo programs accordingly..
+    Also removed the use of "cidafm" for now, even if the source files
+    are  still there.  This  functionality will  certainly  go into  a
+    specific module.
 
+  - ADDED SUPPORT FOR THE AUTO-HINTER
 
+    It  works :-) I  have a  demo program  which simply  is a  copy of
+    "ftview"       that      does       a      `FT_Add_Module(library,
+    &autohinter_module_class)' after  library initialization, and Type
+    1 & OpenType/CFF fonts are now hinted.
 
-  - MAJOR INTERNAL REDESIGN:
+    CID  fonts are  not hinted,  as they  include no  charmap  and the
+    auto-hinter doesn't include  "generic" global metrics computations
+    yet.
 
-    A lot of internal modifications have been performed lately on the
-    source in order to provide the following enhancements:
+    Now, I need to release this thing to the FreeType 2 source.
 
-      - more generic module support:
+  - CHANGES TO THE RENDERER MODULES
 
-        The FT_Module type is now defined to represent a handle to a given
-        module. The file <freetype/ftmodule.h> contains the FT_Module_Class
-        definition, as well as the module-loading public API
+    The  monochrome  and smooth  renderers  are  now  in two  distinct
+    directories, namely "src/raster1" and "src/smooth".  Note that the
+    old "src/renderer" is now gone.
 
-        The FT_Driver type is still defined, and still represents a pointer
-        to a font driver. Note that FT_Add_Driver is replaced by FT_Add_Module,
-        FT_Get_Driver by FT_Get_Module, etc..
+    I ditched  the 5-gray-levels renderers.  Basically,  it involved a
+    simple #define toggle in 'src/raster1/ftraster.c'.
 
+    FT_Render_Glyph,  FT_Outline_Render  &  FT_Outline_Get_Bitmap  now
+    select the best renderer  available, depending on render mode.  If
+    the current renderer for a  given glyph image format isn't capable
+    of supporting  the render mode, another  one will be  found in the
+    library's list.   This means that client applications  do not need
+    to  switch or  set  the  renderers themselves  (as  in the  latest
+    change), they'll get what they want automatically.  At last.
 
-      - support for generic glyph image types:
+    Changed the demo programs accordingly.
 
-        The FT_Renderer type is a pointer to a module used to perform various
-        operations on glyph image.
+  - MAJOR INTERNAL REDESIGN:
 
-        Each renderer is capable of handling images in a single format
-        (e.g. ft_glyph_format_outline). Its functions are used to:
+    A lot of internal modifications  have been performed lately on the
+    source in order to provide the following enhancements:
 
-           - transform an glyph image
-           - render a glyph image into a bitmap
-           - return the control box (dimensions) of a given glyph image
+    * More generic module support:
 
+      The FT_Module  type is  now defined to  represent a handle  to a
+      given  module.   The  file  <freetype/ftmodule.h>  contains  the
+      FT_Module_Class definition, as well as the module-loading public
+      API.
 
-        The scan converters "ftraster.c" and "ftgrays.c" have been moved
-        to the new directory "src/renderer", and are used to provide two
-        default renderer modules.
+      The  FT_Driver type  is still  defined, and  still  represents a
+      pointer to  a font driver.  Note that  FT_Add_Driver is replaced
+      by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
 
-        One corresponds to the "standard" scan-converter, the other to the
-        "smooth" one.
+    * Support for generic glyph image types:
 
-        The current renderer can be set through the new function
-        FT_Set_Renderer.
+      The FT_Renderer  type is a pointer  to a module  used to perform
+      various operations on glyph image.
 
-        The old raster-related function FT_Set_Raster, FT_Get_Raster and
-        FT_Set_Raster_Mode have now disappeared, in favor of the new:
+      Each renderer is  capable of handling images in  a single format
+      (e.g. ft_glyph_format_outline).  Its functions are used to:
 
-           FT_Get_Renderer
-           FT_Set_Renderer
+      - transform an glyph image
+      - render a glyph image into a bitmap
+      - return the control box (dimensions) of a given glyph image
 
-        see the file <freetype/ftrender.h> for more details..
+      The scan converters "ftraster.c" and "ftgrays.c" have been moved
+      to the new directory "src/renderer", and are used to provide two
+      default renderer modules.
 
-        These changes were necessary to properly support different scalable
-        formats in the future, like bi-color glyphs, etc..
+      One corresponds  to the "standard" scan-converter,  the other to
+      the "smooth" one.
 
+      he  current  renderer  can  be  set  through  the  new  function
+      FT_Set_Renderer.
 
-      - glyph loader object:
+      The old raster-related function FT_Set_Raster, FT_Get_Raster and
+      FT_Set_Raster_Mode have now disappeared, in favor of the new:
 
-        A new internal object, called a 'glyph loader' has been introduced
-        in the base layer. It is used by all scalable format font drivers
-        to load glyphs and composites.
+        FT_Get_Renderer
+        FT_Set_Renderer
 
-        This object has been created to reduce the code size of each driver,
-        as each one of them basically re-implemented its functionality.
+      See the file <freetype/ftrender.h> for more details.
 
-        See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
-        more information..
+      These  changes  were  necessary  to properly  support  different
+      scalable formats in the future, like bi-color glyphs, etc.
 
+    * Glyph loader object:
 
+      A  new  internal  object,  called  a  'glyph  loader'  has  been
+      introduced in the base layer.  It is used by all scalable format
+      font drivers to load glyphs and composites.
 
-      - FT_GlyphSlot had new fields:
+      This object  has been  created to reduce  the code size  of each
+      driver,  as  each  one  of  them  basically  re-implemented  its
+      functionality.
 
-        In order to support extended features (see below), the FT_GlyphSlot
-        structure has a few new fields:
+      See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
+      more information.
 
-           linearHoriAdvance:  this field gives the linearly scaled (i.e.
-                               scaled but unhinted) advance width for the glyph,
-                               expressed as a 16.16 fixed pixel value. This
-                               is useful to perform WYSIWYG text.
+    * FT_GlyphSlot has new fields:
 
-           linearVertAdvance:  this field gives the linearly scaled advance
-                               height for the glyph (relevant in vertical glyph
-                               layouts only). This is useful to perform
-                               WYSIWYG text.
+      In  order   to  support  extended  features   (see  below),  the
+      FT_GlyphSlot structure has a few new fields:
 
-        Note that the two above field replace the removed "metrics2" field
-        in the glyph slot.
+      linearHoriAdvance:
 
-           advance:   this field is a vector that gives the transformed
-                      advance for the glyph. By default, it corresponds
-                      to the advance width, unless FT_LOAD_VERTICAL_LAYOUT
-                      was specified when calling FT_Load_Glyph or FT_Load_Char
+        This  field  gives  the   linearly  scaled  (i.e.  scaled  but
+        unhinted) advance  width for the  glyph, expressed as  a 16.16
+        fixed pixel value.  This is useful to perform WYSIWYG text.
 
-           bitmap_left: this field gives the distance in integer pixels from
-                        the current pen position to the left-most pixel of
-                        a glyph image WHEN IT IS A BITMAP. It is only valid
-                        when the "format" field is set to
-                        "ft_glyph_format_bitmap", for example, after calling
-                        the new function FT_Render_Glyph.
+      linearVertAdvance:
+        This field  gives the linearly  scaled advance height  for the
+        glyph  (relevant in  vertical  glyph layouts  only).  This  is
+        useful to perform WYSIWYG text.
 
-           bitmap_top:  this field gives the distance in integer pixels from
-                        the current pen position (located on the baseline) to
-                        the top-most pixel of the glyph image WHEN IT IS A
-                        BITMAP. Positive values correspond to upwards Y.
+        Note that  the two above field replace  the removed "metrics2"
+        field in the glyph slot.
 
-           loader:  this is a new private field for the glyph slot. Client
-                    applications should not touch it..
+      advance:
+        This field is a vector  that gives the transformed advance for
+        the glyph.   By default, it corresponds to  the advance width,
+        unless  FT_LOAD_VERTICAL_LAYOUT  was  specified  when  calling
+        FT_Load_Glyph or FT_Load_Char.
 
+      bitmap_left:
+        This  field gives  the  distance in  integer  pixels from  the
+        current pen position  to the left-most pixel of  a glyph image
+        IF IT IS  A BITMAP.  It is only valid  when the "format" field
+        is set to "ft_glyph_format_bitmap", for example, after calling
+        the new function FT_Render_Glyph.
 
-      - support for transforms and direct rendering in FT_Load_Glyph:
+      bitmap_top:
+        This  field gives  the  distance in  integer  pixels from  the
+        current pen position (located on the baseline) to the top-most
+        pixel of the  glyph image IF IT IS  A BITMAP.  Positive values
+        correspond to upwards Y.
 
-        Most of the functionality found in <freetype/ftglyph.h> has been
-        moved to the core library. Hence, the following:
+      loader:
+        This  is a  new  private  field for  the  glyph slot.   Client
+        applications should not touch it.
 
-          - a transform can be specified for a face through FT_Set_Transform.
-            this transform is applied by FT_Load_Glyph to scalable glyph images
-            (i.e. NOT TO BITMAPS) before the function returns, unless the
-            bit flag FT_LOAD_IGNORE_TRANSFORM was set in the load flags..
 
+    * Support for transforms and direct rendering in FT_Load_Glyph:
 
-          - once a glyph image has been loaded, it can be directly converted to
-            a bitmap by using the new FT_Render_Glyph function. Note that this
-            function takes the glyph image from the glyph slot, and converts
-            it to a bitmap whose properties are returned in "face.glyph.bitmap",
-            "face.glyph.bitmap_left" and "face.glyph.bitmap_top". The original
-            native image might be lost after the conversion.
+      Most of the functionality found in <freetype/ftglyph.h> has been
+      moved to the core library. Hence, the following:
 
+      - A   transform   can   be   specified  for   a   face   through
+        FT_Set_Transform.  this transform  is applied by FT_Load_Glyph
+        to  scalable glyph  images (i.e.  NOT TO  BITMAPS)  before the
+        function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
+        was set in the load flags.
 
-          - when using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
-            and FT_Load_Char functions will call FT_Render_Glyph automatically
-            when needed.
+      - Once  a  glyph image  has  been  loaded,  it can  be  directly
+        converted  to  a  bitmap  by  using  the  new  FT_Render_Glyph
+        function.  Note that this  function takes the glyph image from
+        the glyph slot,  and converts it to a  bitmap whose properties
+        are returned  in "face.glyph.bitmap", "face.glyph.bitmap_left"
+        and "face.glyph.bitmap_top".  The  original native image might
+        be lost after the conversion.
 
+      - When using the new  bit flag FT_LOAD_RENDER, the FT_Load_Glyph
+        and   FT_Load_Char   functions   will   call   FT_Render_Glyph
+        automatically when needed.
 
+  - Reformatted all  modules source  code in order  to get rid  of the
+    basic data types redifinitions (i.e. "TT_Int" instead of "FT_Int",
+    "T1_Fixed"  instead  of  "FT_Fixed").  Hence  the  format-specific
+    prefixes like  "TT_", "T1_",  "T2_" and "CID_"  are only  used for
+    relevant structures.
 
 
-  - reformated all modules source code in order to get rid of the basic
-    data types redifinitions (i.e. "TT_Int" instead of "FT_Int", "T1_Fixed"
-    instead of "FT_Fixed"). Hence the format-specific prefixes like "TT_",
-    "T1_", "T2_" and "CID_" are only used for relevant structures..
+======================================================================
 
-============================================================================
 OLD CHANGES FOR BETA 7
 
-  - bug-fixed the OpenType/CFF parser. It now loads and displays my two
-    fonts nicely, but I'm pretty certain that more testing is needed :-)
+  - bug-fixed the  OpenType/CFF parser. It  now loads and  displays my
+    two  fonts nicely,  but I'm  pretty certain  that more  testing is
+    needed :-)
 
   - fixed the crummy Type 1 hinter, it now handles accented characters
-    correctly (well, the accent is not always well placed, but that's
+    correctly (well, the accent is  not always well placed, but that's
     another problem..)
 
-  - added the CID-keyed Type 1 driver in "src/cid". Works pretty well for
-    only 13 Kb of code ;-) Doesn't read AFM files though, nor the really
-    useful CMAP files..
+  - added the CID-keyed Type 1  driver in "src/cid". Works pretty well
+    for only 13 Kb of code  ;-) Doesn't read AFM files though, nor the
+    really useful CMAP files..
 
-  - fixed two bugs in the smooth renderer (src/base/ftgrays.c). Thanks to
-    Boris Letocha for spotting them and providing a fix..
+  - fixed two bugs in the smooth renderer (src/base/ftgrays.c). Thanks
+    to Boris Letocha for spotting them and providing a fix..
 
   - fixed potential "divide by zero" bugs in ftcalc.c.. my god..
 
-  - added source code for the OpenType/CFF driver (still incomplete though..)
+  - added source  code for  the OpenType/CFF driver  (still incomplete
+    though..)
 
-  - modified the SFNT driver slightly to perform more robust header
-    checks in TT_Load_SFNT_Header. This prevents certain font files
-    (e.g. some Type 1 Multiple Masters) from being incorrectly "recognized"
-    as TrueType font files..
+  - modified the  SFNT driver slightly  to perform more  robust header
+    checks  in TT_Load_SFNT_Header. This  prevents certain  font files
+    (e.g.  some  Type  1  Multiple  Masters)  from  being  incorrectly
+    "recognized" as TrueType font files..
 
-  - moved a lot of stuff from the TrueType driver to the SFNT module,
-    this allows greater code re-use between font drivers (e.g. TrueType,
-    OpenType, Compact-TrueType, etc..)
+  - moved a lot of stuff from  the TrueType driver to the SFNT module,
+    this   allows   greater   code   re-use   between   font   drivers
+    (e.g. TrueType, OpenType, Compact-TrueType, etc..)
 
   - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
     to minimally speed it up..
 
   - added support for Multiple Master fonts in "type1z". There is also
-    a new file named <freetype/ftmm.h> which defines functions to
+    a  new file  named  <freetype/ftmm.h> which  defines functions  to
     manage them from client applications.
 
     The new file "src/base/ftmm.c" is also optional to the engine..
 
-  - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +
+  - various  formatting changes (e.g.  EXPORT_DEF ->  FT_EXPORT_DEF) +
     small bug fixes in FT_Load_Glyph, the "type1" driver, etc..
 
   - a minor fix to the Type 1 driver to let them apply the font matrix
@@ -539,131 +521,143 @@ OLD CHANGES FOR BETA 7
   - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
     to use %p instead of %lx).. Thanks to Karl Robillard
 
-  - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) + added
-    a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be cropped when
-    loaded from a file (maybe I should move the bitmap cropper to the
-    base layer ??).
+  - fixed  some bugs  in  the sbit  loader (src/base/sfnt/ttsbit.c)  +
+    added  a new flag,  FT_LOAD_CROP_BITMAP to  query that  bitmaps be
+    cropped when  loaded from a file  (maybe I should  move the bitmap
+    cropper to the base layer ??).
+
+  - changed the default  number of gray levels of  the smooth renderer
+    to 256  (instead of  the previous 128).  Of course, the  human eye
+    can't see any difference ;-)
 
-  - changed the default number of gray levels of the smooth renderer to
-    256 (instead of the previous 128). Of course, the human eye can't
-    see any difference ;-)
+  - removed TT_MAX_SUBGLYPHS,  there is no static limit  on the number
+    of subglyphs in a TrueType font now..
 
-  - removed TT_MAX_SUBGLYPHS, there is no static limit on the number of
-    subglyphs in a TrueType font now..
 
-=============================================================================
+======================================================================
+
 OLD CHANGES 16 May 2000
 
-  - tagged "BETA-6" in the CVS tree. This one is a serious release candidate
-    even though it doesn't incorporate the auto-hinter yet..
+  - tagged "BETA-6"  in the  CVS tree. This  one is a  serious release
+    candidate even though it doesn't incorporate the auto-hinter yet..
 
   - various obsolete files were removed, and copyright header updated
 
-  - finally updated the standard raster to fix the monochrome rendering bug
-    + re-enable support for 5-gray levels anti-aliasing (suck, suck..)
+  - finally  updated  the  standard   raster  to  fix  the  monochrome
+    rendering bug + re-enable  support for 5-gray levels anti-aliasing
+    (suck, suck..)
 
   - created new header files, and modified sources accordingly:
 
-       <freetype/fttypes.h>           - simple FreeType types, without the API
-       <freetype/internal/ftmemory.h> - definition of memory-management macros
-
-  - added the "DSIG" (OpenType Digital Signature) tag to <freetype/tttags.h>
-
-  - light update/cleaning of the build system + changes to the sources in
-    order to get rid of _all_ compiler warnings with three compilers, i.e:
-
-      gcc with "-ansi -pedantic -Wall -W", Visual C++ with "/W3 /WX"
-      and LCC
-
-     IMPORTANT NOTE FOR WIN32-LCC USERS:
-     |
-     |  It seems the C pre-processor that comes with LCC is broken, it
-     |  doesn't recognize the ANSI standard directives # and ## correctly
-     |  when one of the argument is a macro. Also, something like:
-     |
-     |     #define F(x)  print##x
-     |
-     |     F(("hello"))
-     |
-     |  will get incorrectly translated to:
-     |
-     |     print "hello")
-     |
-     |  by its pre-processor. For this reason, you simply cannot build
-     |  FreeType 2 in debug mode with this compiler..
-
+     <freetype/fttypes.h>
+       - simple FreeType types, without the API
+     <freetype/internal/ftmemory.h>
+       - definition of memory-management macros
+
+  - added   the   "DSIG"   (OpenType   Digital   Signature)   tag   to
+    <freetype/tttags.h>
+
+  - light update/cleaning of the build system + changes to the sources
+    in  order  to  get  rid  of _all_  compiler  warnings  with  three
+    compilers, i.e:
+
+    gcc with "-ansi -pedantic -Wall -W", Visual C++ with "/W3 /WX" and
+    LCC
+
+    IMPORTANT NOTE FOR WIN32-LCC USERS:
+    |
+    |  It seems the C pre-processor  that comes with LCC is broken, it
+    |  doesn't  recognize  the  ANSI  standard  directives  #  and  ##
+    |  correctly when one of the  argument is a macro. Also, something
+    |  like:
+    |
+    |     #define F(x)  print##x
+    |
+    |     F(("hello"))
+    |
+    |  will get incorrectly translated to:
+    |
+    |     print "hello")
+    |
+    |  by its pre-processor. For  this reason, you simply cannot build
+    |  FreeType 2 in debug mode with this compiler..
 
   - yet another massive grunt work. I've changed the definition of the
-    EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These now take
-    an argument, which is the function's return value type.
+    EXPORT_DEF,  EXPORT_FUNC, BASE_DEF &  BASE_FUNC macros.  These now
+    take an argument, which is the function's return value type.
 
-    This is necessary to compile FreeType as a DLL on Windows and OS/2.
-    Depending on the compiler used, a compiler-specific keyword like __export
-    or __system must be placed before (VisualC++) or after (BorlandC++)
-    the type..
+    This  is necessary to  compile FreeType  as a  DLL on  Windows and
+    OS/2.  Depending on the compiler used, a compiler-specific keyword
+    like  __export or __system  must be  placed before  (VisualC++) or
+    after (BorlandC++) the type..
 
     Of course, this needed a lot of changes throughout the source code
     to make it compile again... All cleaned up now, apparently..
 
-    Note also that there is a new EXPORT_VAR macro defined to allow the
-    _declaration_ of an exportable public (constant) variable. This is the
-    case of the raster interfaces (see ftraster.h and ftgrays.h), as well
-    as each module's interface (see sfdriver.h, psdriver.h, etc..)
+    Note also  that there is a  new EXPORT_VAR macro  defined to allow
+    the   _declaration_    of   an   exportable    public   (constant)
+    variable.  This  is  the   case  of  the  raster  interfaces  (see
+    ftraster.h and ftgrays.h), as well as each module's interface (see
+    sfdriver.h, psdriver.h, etc..)
 
-  - new feature: it is now possible to pass extra parameters to font
-                 drivers when creating a new face object. For now, this
-                 capability is unused. It could however prove to be useful
-                 in a near future..
+  - new feature: it  is now possible to pass  extra parameters to font
+                 drivers  when creating  a new  face object.  For now,
+                 this capability is unused.  It could however prove to
+                 be useful in a near future..
 
-      the FT_Open_Args structure was changes, as well as the internal
-      driver interface (the specific "init_face" module function has now
-      a different signature).
+      the FT_Open_Args structure was  changes, as well as the internal
+      driver interface  (the specific "init_face"  module function has
+      now a different signature).
 
   - updated the tutorial (not finished though).
+
   - updated the top-level BUILD  document
 
-  - fixed a potential memory leak that could occur when loading embedded
-    bitmaps.
+  - fixed  a  potential memory  leak  that  could  occur when  loading
+    embedded bitmaps.
 
-  - added the declaration of FT_New_Memory_Face in <freetype/freetype.h>, as
-    it was missing from the public header (the implementation was already
-    in "ftobjs.c").
+  - added     the     declaration     of     FT_New_Memory_Face     in
+    <freetype/freetype.h>, as  it was  missing from the  public header
+    (the implementation was already in "ftobjs.c").
 
-  - the file <freetype/fterrors.h> has been seriously updated in order to
-    allow the automatic generation of error message tables. See the comments
-    within it for more information.
+  - the file <freetype/fterrors.h> has been seriously updated in order
+    to allow the automatic generation of error message tables. See the
+    comments within it for more information.
 
-  - major directory hierarchy re-organisation. This was done for two things:
+  - major directory  hierarchy re-organisation. This was  done for two
+    things:
 
-      * first, to ease the "manual" compilation of the library by requiring
-        at lot less include paths :-)
+      * first,  to ease  the "manual"  compilation of  the  library by
+        requiring at lot less include paths :-)
 
-      * second, to allow external programs to effectively access internal
-        data fields. For example, this can be extremely useful if someone
-        wants to write a font producer or a font manager on top of FreeType.
+      * second,  to  allow  external  programs to  effectively  access
+        internal  data  fields. For  example,  this  can be  extremely
+        useful if  someone wants  to write a  font producer or  a font
+        manager on top of FreeType.
 
-    Basically, you should now use the 'freetype/' prefix for header inclusion,
-    as in:
+    Basically, you  should now use  the 'freetype/' prefix  for header
+    inclusion, as in:
 
         #include <freetype/freetype.h>
         #include <freetype/ftglyph.h>
 
     Some new include sub-directories are available:
 
-     a. the "freetype/config" directory, contains two files used to
+     a. the  "freetype/config" directory,  contains two files  used to
         configure the build of the library. Client applications should
         not need to look at these normally, but they can if they want.
 
         #include <freetype/config/ftoption.h>
         #include <freetype/config/ftconfig.h>
 
-     b. the "freetype/internal" directory, contains header files that
-        describes library internals. These are the header files that were
-        previously found in the "src/base" and "src/shared" directories.
+     b. the "freetype/internal"  directory, contains header files that
+        describes library  internals. These are the  header files that
+        were  previously  found  in  the "src/base"  and  "src/shared"
+        directories.
 
 
-    As usual, the build system and the demos have been updated to reflect
-    the change..
+    As  usual, the build  system and  the demos  have been  updated to
+    reflect the change..
 
     Here's a layout of the new directory hierarchy:
 
@@ -694,8 +688,8 @@ OLD CHANGES 16 May 2000
          type1z/
 
 
-    Compiling a module is now much easier, for example, the following should
-    work when in the TOP directory on an ANSI build:
+    Compiling a module is now  much easier, for example, the following
+    should work when in the TOP directory on an ANSI build:
 
        gcc -c -I./include -I./src/base src/base/ftbase.c
        gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
@@ -704,189 +698,205 @@ OLD CHANGES 16 May 2000
     (of course, using -Iconfig/<system> if you provide system-specific
      configuration files).
 
+  - updated the structure of FT_Outline_Funcs in order to allow direct
+    coordinate scaling within  the outline decomposition routine (this
+    is  important for virtual  "on" points  with TrueType  outlines) +
+    updates to the rasters to support this..
 
-  - updated the structure of FT_Outline_Funcs in order to allow
-    direct coordinate scaling within the outline decomposition routine
-    (this is important for virtual "on" points with TrueType outlines)
-    + updates to the rasters to support this..
+  - updated  the OS/2  table  loading code  in "src/sfnt/ttload.c"  in
+    order to support version 2 of the table (see OpenType 1.2 spec)
 
-  - updated the OS/2 table loading code in "src/sfnt/ttload.c" in order
-    to support version 2 of the table (see OpenType 1.2 spec)
+  - created  "include/tttables.h"  and  "include/t1tables.h" to  allow
+    client applications to access some of  the SFNT and T1 tables of a
+    face  with  a  procedural  interface (see  FT_Get_Sfnt_Table())  +
+    updates to internal source files to reflect the change..
 
-  - created "include/tttables.h" and "include/t1tables.h" to allow
-    client applications to access some of the SFNT and T1 tables of a
-    face with a procedural interface (see FT_Get_Sfnt_Table())
-    + updates to internal source files to reflect the change..
-
-  - some cleanups in the source code to get rid of warnings when compiling
-    with the "-Wall -W -ansi -pedantic" options in gcc.
+  - some  cleanups in  the source  code to  get rid  of  warnings when
+    compiling with the "-Wall -W -ansi -pedantic" options in gcc.
 
   - debugged and moved the smooth renderer to "src/base/ftgrays.c" and
     its header to "include/ftgrays.h"
 
-  - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites with
-    up to 80 sub-glyphs !! Thanks to Werner
+  - updated TT_MAX_SUBGLYPHS  to 96 as some CJK  fonts have composites
+    with up to 80 sub-glyphs !! Thanks to Werner
+
+
+======================================================================
 
-================================================================================
 OLD CHANGES - 14-apr-2000
 
-  - fixed a bug in the TrueType glyph loader that prevented the correct
-    loading of some CJK glyphs in mingli.ttf
+  - fixed  a bug  in  the  TrueType glyph  loader  that prevented  the
+    correct loading of some CJK glyphs in mingli.ttf
 
   - improved the standard Type 1 hinter in "src/type1"
 
-  - fixed two bugs in the experimental Type 1 driver in "src/type1z"
+  - fixed two bugs  in the experimental Type 1  driver in "src/type1z"
     to handle the new XFree86 4.0 fonts (and a few other ones..)
 
-  - the smooth renderer is now complete and supports sub-banding
-    to render large glyphs at high speed. However, it is still located
-    in "demos/src/ftgrays.c" and should move to the library itself
-    in the next beta.. NOTE: The smooth renderer doesn't compile in
+  - the smooth  renderer is now  complete and supports  sub-banding to
+    render large glyphs at high speed. However, it is still located in
+    "demos/src/ftgrays.c" and should move to the library itself in the
+    next  beta..   NOTE:  The  smooth  renderer   doesn't  compile  in
     stand-alone mode anymore, but this should be fixed RSN..
 
-  - introduced convenience functions to more easily deal with glyph
-    images, see "include/ftglyph.h" for more details, as well as the
-    new demo program named "demos/src/ftstring.c" that demonstrates
+  - introduced convenience  functions to  more easily deal  with glyph
+    images, see  "include/ftglyph.h" for more details, as  well as the
+    new  demo program  named "demos/src/ftstring.c"  that demonstrates
     its use
 
-  - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1
-    drivers (this is required by the auto-hinter to improve its results).
+  - implemented  FT_LOAD_NO_RECURSE in  both the  TrueType and  Type 1
+    drivers  (this  is required  by  the  auto-hinter  to improve  its
+    results).
 
-  - changed the raster interface, in order to allow client applications
-    to provide their own span-drawing callbacks. However, only the
-    smooth renderer supports this. See "FT_Raster_Params" in the
-    file "include/ftimage.h"
+  - changed   the  raster   interface,  in   order  to   allow  client
+    applications to provide their own span-drawing callbacks. However,
+    only the smooth renderer  supports this. See "FT_Raster_Params" in
+    the file "include/ftimage.h"
 
-  - fixed a small bug in FT_MulFix that caused incorrect transform
-    computation !!
+  - fixed  a small bug  in FT_MulFix  that caused  incorrect transform
+    computation!
 
   - Note: The tutorial is out-of-date, grumpf.. :-(
 
-================================================================================
+
+======================================================================
+
 OLD CHANGES - 12-mar-2000
 
-  - changed the layout of configuration files : now, all ANSI configuration
-    files are located in "freetype2/config". System-specific over-rides
-    can be placed in "freetype2/config/<system>".
+  - changed  the  layout  of  configuration  files  :  now,  all  ANSI
+    configuration         files         are         located         in
+    "freetype2/config".  System-specific over-rides  can be  placed in
+    "freetype2/config/<system>".
 
   - moved all configuration macros to "config/ftoption.h"
 
   - improvements in the Type 1 driver with AFM support
 
-  - changed the fields in the FT_Outline structure : the old "flags"
+  - changed the fields  in the FT_Outline structure :  the old "flags"
     array is re-named "tags", while all ancient flags are encoded into
     a single unsigned int named "flags".
 
-  - introduced new flags in FT_Outline.flags (see ft_outline_.... enums in
-    "ftimage.h").
+  - introduced     new      flags     in     FT_Outline.flags     (see
+    ft_outline_.... enums in "ftimage.h").
 
   - changed outline functions to "FT_Outline_<action>" syntax
 
   - added a smooth anti-alias renderer to the demonstration programs
+
   - added Mac graphics driver (thanks Just)
 
-  - FT_Open_Face changed in order to received a pointer to a FT_Open_Args
-    descriptor..
+  - FT_Open_Face  changed  in  order   to  received  a  pointer  to  a
+    FT_Open_Args descriptor..
 
-  - various cleanups, a few more API functions implemented (see FT_Attach_File)
+  - various  cleanups,  a  few  more API  functions  implemented  (see
+    FT_Attach_File)
 
   - updated some docs
 
-================================================================================
+
+======================================================================
+
 OLD CHANGES - 22-feb-2000
 
   - introduced the "psnames" module. It is used to:
 
-      o convert a Postscript glyph name into the equivalent Unicode
-        character code (used by the Type 1 driver(s) to synthetize
-        on the fly a Unicode charmap).
-
-      o provide an interface to retrieve the Postscript names of
-        the Macintosh, Adobe Standard & Adobe Expert character codes.
-        (the Macintosh names are used by the SFNT-module postscript
-         names support routines, while the other two tables are used
-         by the Type 1 driver(s)).
-
-  - introduced the "type1z" alternate Type 1 driver. This is a (still
-    experimental) driver for the Type 1 format that will ultimately
-    replace the one in "src/type1". It uses pattern matching to load
-    data from the font, instead of a finite state analyzer. It works
-    much better than the "old" driver with "broken" fonts. It is also
+      o convert  a Postscript glyph  name into the  equivalent Unicode
+        character code (used by the  Type 1 driver(s) to synthetize on
+        the fly a Unicode charmap).
+
+      o provide an  interface to retrieve the Postscript  names of the
+        Macintosh,  Adobe  Standard &  Adobe  Expert character  codes.
+        (the Macintosh  names are  used by the  SFNT-module postscript
+        names support routines, while the other two tables are used by
+        the Type 1 driver(s)).
+
+  - introduced the "type1z" alternate Type  1 driver. This is a (still
+    experimental) driver  for the Type  1 format that  will ultimately
+    replace the one  in "src/type1". It uses pattern  matching to load
+    data from the  font, instead of a finite  state analyzer. It works
+    much better than the "old"  driver with "broken" fonts. It is also
     much smaller (under 15 Kb).
 
-  - the Type 1 drivers (both in "src/type1" and "src/type1z") are
-    nearly complete. They both provide automatic Unicode charmap
-    synthesis through the "psnames" module. No re-encoding vector
-    is needed. (note that they still leak memory due to some code
+  - the  Type 1  drivers (both  in "src/type1"  and  "src/type1z") are
+    nearly  complete.  They  both  provide automatic  Unicode  charmap
+    synthesis through  the "psnames" module. No  re-encoding vector is
+    needed.  (note  that they  still  leak  memory  due to  some  code
     missing, and I'm getting lazy).
 
-    Trivial AFM support has been added to read kerning information
-    but wasn't exactly tested as it should ;-)
+    Trivial AFM support has been added to read kerning information but
+    wasn't exactly tested as it should ;-)
 
-  - The TrueType glyph loader has been seriously rewritten (see the
-    file "src/truetype/ttgload.c". It is now much, much simpler as
-    well as easier to read, maintain and understand :-) Preliminary
-    versions introduced a memory leak that has been reported by Jack
+  - The TrueType  glyph loader has  been seriously rewritten  (see the
+    file  "src/truetype/ttgload.c". It  is now  much, much  simpler as
+    well as  easier to read,  maintain and understand  :-) Preliminary
+    versions introduced a  memory leak that has been  reported by Jack
     Davis, and is now fixed..
 
-  - introduced the new "ft_glyph_format_plotter", used to represent
-    stroked outlines like Windows "Vector" fonts, and certain Type 1
-    fonts like "Hershey". The corresponding raster will be written
+  - introduced  the new  "ft_glyph_format_plotter", used  to represent
+    stroked outlines  like Windows "Vector" fonts, and  certain Type 1
+    fonts  like "Hershey".  The corresponding  raster will  be written
     soon.
 
-  - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new
-    interface that uses a structure to describe the input stream,
-    the driver (if required), etc..
+  - FT_New_Memory_Face  is  gone.  Likewise,  FT_Open_Face has  a  new
+    interface that uses a structure  to describe the input stream, the
+    driver (if required), etc..
+
 
 TODO
+
   - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
 
-  - Add a function like FT_Load_Character( face, char_code, load_flags )
-    that would really embbed a call to FT_Get_Char_Index then FT_Load_Glyph
-    to ease developer's work.
+  - Add a function like FT_Load_Character( face, char_code, load_flags
+    )  that  would really  embbed  a  call  to FT_Get_Char_Index  then
+    FT_Load_Glyph to ease developer's work.
 
-  - Update the tutorial !!
-  - consider adding support for Multiple Master fonts in the Type 1
+  - Update the tutorial!
+
+  - consider adding  support for Multiple  Master fonts in the  Type 1
     drivers.
 
-  - Test the AFM routines of the Type 1 drivers to check that kerning
+  - Test the AFM routines of the  Type 1 drivers to check that kerning
     information is returned correctly.
 
-  - write a decent auto-gridding component !! We need this to release
+  - write a decent auto-gridding component  !! We need this to release
     FreeType 2.0 gold !
 
 
------ less urgent needs : ----------
+less urgent needs:
+
   - add a CFF/Type2 driver
   - add a BDF driver
   - add a FNT/PCF/HBF driver
   - add a Speedo driver from the X11 sources
 
 
-==============================================================================
+======================================================================
+
 OLDER CHANGES - 27-jan-2000
 
-  - updated the "sfnt" module interface to allow several SFNT-based
+  - updated the  "sfnt" module  interface to allow  several SFNT-based
     drivers to co-exist peacefully
 
-  - updated the "T1_Face" type to better separate Postscript font content
-    from the rest of the FT_Face structure. Might be used later by the
-    CFF/Type2 driver..
+  - updated  the "T1_Face"  type  to better  separate Postscript  font
+    content  from the  rest of  the FT_Face  structure. Might  be used
+    later by the CFF/Type2 driver..
 
   - added an experimental replacement Type 1 driver featuring advanced
     (and speedy) pattern matching to retrieve the data from postscript
     fonts.
 
-  - very minor changes in the implementation of FT_Set_Char_Size and
-    FT_Set_Pixel_Sizes (they now implement default to ligthen the
-    font driver's code).
+  - very minor  changes in the implementation  of FT_Set_Char_Size and
+    FT_Set_Pixel_Sizes (they now implement default to ligthen the font
+    driver's code).
 
 
-=============================================================================
+======================================================================
+
 OLD MESSAGE
 
-This file summarizes the changes that occured since the last "beta" of FreeType 2.
-Because the list is important, it has been divided into separate sections:
+This file summarizes the changes that occured since the last "beta" of
+FreeType 2.  Because  the list is important, it  has been divided into
+separate sections:
 
 Table Of Contents:
 
@@ -897,28 +907,32 @@ Table Of Contents:
     V   Portability
    VI   Font Drivers
 
------------------------------------------------------------------------------------------
-High-Level Interface :
 
-  The high-level API has been considerably simplified. Here is how :
+----------------------------------------------------------------------
+
+High-Level Interface:
 
-    - resource objects have disappeared. this means that face objects can
-      now be created with a single function call (see FT_New_Face and
-      FT_Open_Face)
+  The high-level API has been considerably simplified.  Here is how:
 
-    - when calling either FT_New_Face & FT_Open_Face, a size object and a
-      glyph slot object are automatically created for the face, and can be
-      accessed through "face->glyph" and "face->size" if one really needs to.
-      In most cases, there's no need to call FT_New_Size or FT_New_Glyph.
+    - resource objects have disappeared.  this means that face objects
+      can now be created with  a single function call (see FT_New_Face
+      and FT_Open_Face)
 
-    - similarly, FT_Load_Glyph now only takes a "face" argument (instead of
-      a glyph slot and a size). Also, it's "result" parameter is gone, as
-      the glyph image type is returned in the field "face->glyph.format"
+    - when calling  either FT_New_Face  & FT_Open_Face, a  size object
+      and a glyph slot object  are automatically created for the face,
+      and can  be accessed  through "face->glyph" and  "face->size" if
+      one really  needs to.   In most cases,  there's no need  to call
+      FT_New_Size or FT_New_Glyph.
 
-    - the list of available charmaps is directly accessible through
-      "face->charmaps", counting "face->num_charmaps" elements. Each
-      charmap has an 'encoding' field which specifies which known encoding
-      it deals with. Valid values are, for example :
+    - similarly,  FT_Load_Glyph  now  only  takes  a  "face"  argument
+      (instead  of a  glyph  slot  and a  size).  Also, it's  "result"
+      parameter is  gone, as the glyph  image type is  returned in the
+      field "face->glyph.format"
+
+    - the list  of available  charmaps is directly  accessible through
+      "face->charmaps",  counting "face->num_charmaps"  elements. Each
+      charmap  has an  'encoding'  field which  specifies which  known
+      encoding it deals with. Valid values are, for example :
 
           ft_encoding_unicode      (for ASCII, Latin-1 and Unicode)
           ft_encoding_apple_roman
@@ -926,12 +940,13 @@ High-Level Interface :
           ft_encoding_adobe_standard
           ft_encoding_adobe_expert
 
-      other values may be added in the future. Each charmap still holds its
-      "platform_id" and "encoding_id" values in case the encoding is too
-      exotic for the current library
+      other  values may  be added  in the  future. Each  charmap still
+      holds  its "platform_id"  and "encoding_id"  values in  case the
+      encoding is too exotic for the current library
+
 
+----------------------------------------------------------------------
 
------------------------------------------------------------------------------------------
 Directory Structure:
 
   Should seem obvious to most of you:
@@ -944,12 +959,13 @@ Directory Structure:
             os2/
             msdos/
 
-         include/       -- public header files, those to be included directly
-                           by client apps
+         include/       -- public header  files, those to  be included
+                           directly by client apps
 
          src/           -- sources of the library
            base/        -- the base layer
-           sfnt/        -- the sfnt "driver" (see the drivers section below)
+           sfnt/        -- the sfnt "driver"  (see the drivers section
+                           below)
            truetype/    -- the truetype driver
            type1/       -- the type1 driver
            shared/      -- some header files shared between drivers
@@ -958,152 +974,165 @@ Directory Structure:
 
          docs/          -- documentation (a bit empty for now)
 
------------------------------------------------------------------------------------------
-Glyph Image Formats :
 
-  Drivers are now able to register new glyph image formats within the library.
-  For now, the base layer supports of course bitmaps and vector outlines, but
-  one could imagine something different like colored bitmaps, bi-color
-  vectors or wathever else (Metafonts anyone ??).
+----------------------------------------------------------------------
+
+Glyph Image Formats:
+
+  Drivers are now able to  register new glyph image formats within the
+  library.  For  now, the  base layer supports  of course  bitmaps and
+  vector  outlines, but  one  could imagine  something different  like
+  colored bitmaps, bi-color vectors or wathever else (Metafonts anyone
+  ??).
+
+  See  the   file  `include/ftimage.h'.   Note  also  that   the  type
+  FT_Raster_Map  is gone,  and  is now  replaced  by FT_Bitmap,  which
+  should encompass all known bitmap types.
 
-  See the file `include/ftimage.h'. Note also that the type FT_Raster_Map is
-  gone, and is now replaced by FT_Bitmap, which should encompass all known
-  bitmap types.
+  Each new  image format  must provide at  least one "raster",  i.e. a
+  module capable of  transforming the glyph image into  a bitmap. It's
+  also possible  to change the default  raster used for  a given glyph
+  image format.
 
-  Each new image format must provide at least one "raster", i.e. a module
-  capable of transforming the glyph image into a bitmap. It's also possible
-  to change the default raster used for a given glyph image format.
+  The default outline  scan-converter now uses 128 levels  of grays by
+  default,  which tends  to smooth  many  things. Note  that the  demo
+  programs have been updated significantly in order to display these..
 
-  The default outline scan-converter now uses 128 levels of grays by default,
-  which tends to smooth many things. Note that the demo programs have been
-  updated significantly in order to display these..
 
+----------------------------------------------------------------------
 
------------------------------------------------------------------------------------------
-Build system :
+Build system:
 
-  You still need GNU Make to build the library. The build system has been
-  very seriously re-vamped in order to provide things like :
+  You still need  GNU Make to build the library.  The build system has
+  been very seriously re-vamped in order to provide things like :
 
-   - automatic host platform detection (reverting to 'config/ansi'
-     if it is not detected, with pseudo-standard compilation flags)
+   - automatic host platform  detection (reverting to 'config/ansi' if
+     it is not detected, with pseudo-standard compilation flags)
 
    - the ability to compile from the Makefiles with very different and
-     exotic compilers. Note that linking the library can be difficult for
-     some platforms.
+     exotic compilers. Note that  linking the library can be difficult
+     for some platforms.
 
      For example, the file `config/win32/lcclib.bat' is invoked by the
      build system to create the ".lib" file with LCC-Win32 because its
-     librarian has too many flaws to be invoked directly from the Makefile.
+     librarian  has too  many flaws  to be  invoked directly  from the
+     Makefile.
 
-  Here's how it works :
+  Here's how it works:
 
-  - the first time you type `make', the build system runs a series of
+  - the first time you type `make',  the build system runs a series of
     sub-makefiles in order to detect your host platform. It then dumps
-    what it found, and creates a file called `config.mk' in the current
-    directory. This is a sub-Makefile used to define many important Make
-    variables used to build the library.
+    what  it found,  and  creates  a file  called  `config.mk' in  the
+    current  directory. This  is a  sub-Makefile used  to  define many
+    important Make variables used to build the library.
 
-  - the second time, the build system detects the `config.mk' then use it
-    to build the library. All object files go into 'obj' by default, as
-    well as the library file, but  this can easily be changed.
+  - the second time, the build system detects the `config.mk' then use
+    it  to  build the  library.  All object  files  go  into 'obj'  by
+    default,  as well  as the  library file,  but this  can  easily be
+    changed.
 
-  Note that you can run "make setup" to force another host platform detection
-  even if a `config.mk' is present in the current directory. Another solution
-  is simply to delete the file, then re-run make.
+  Note that  you can run "make  setup" to force  another host platform
+  detection  even   if  a  `config.mk'  is  present   in  the  current
+  directory.  Another solution  is  simply to  delete  the file,  then
+  re-run make.
 
-  Finally, the default compiler for all platforms is gcc (for now, this will
-  hopefully changed in the future). You can however specify a different
-  compiler by specifying it after the 'setup' target as in :
+  Finally, the  default compiler  for all platforms  is gcc  (for now,
+  this will hopefully changed in  the future). You can however specify
+  a different  compiler by specifying  it after the 'setup'  target as
+  in:
 
       gnumake setup lcc         on Win32 to use the LCC compiler
       gnumake setup visualc     on Win32 to use Visual C++
 
-  See the file `config/<system>/detect.mk' for a list of supported compilers
-  for your platforms.
+  See  the file  `config/<system>/detect.mk' for  a list  of supported
+  compilers for your platforms.
 
-  It should be relatively easy to write new detection rules files and
+  It should be relatively easy  to write new detection rules files and
   config.mk..
 
-  Finally, to build the demo programs, go to `demos' and launch GNU Make,
-  it will use the `config.mk' in the top directory to build the test
-  programs..
+  Finally, to  build the demo programs,  go to `demos'  and launch GNU
+  Make, it will use the `config.mk'  in the top directory to build the
+  test programs..
 
------------------------------------------------------------------------------------------
-Portability :
 
-  In the previous beta, a single FT_System object was used to encompass
-  all low-level operations like thread synchronisation, memory management
-  and i/o access. This has been greatly simplified :
+----------------------------------------------------------------------
 
-    - thread synchronisation has been dropped, for the simple reason that
-      the library is already re-entrant, and that if you really need two
-      threads accessing the same FT_Library, you should really synchronize
-      access to it yourself with a simple mutex.
+Portability:
 
-    - memory management is performed through a very simple object called
-      "FT_Memory", which really is a table containing a table of pointers
-      to functions like malloc, realloc and free as well as some user data
-      (closure).
+  In  the  previous  beta,  a  single FT_System  object  was  used  to
+  encompass  all  low-level  operations like  thread  synchronisation,
+  memory management and i/o access. This has been greatly simplified:
+
+    - thread synchronisation  has been dropped, for  the simple reason
+      that the library  is already re-entrant, and that  if you really
+      need  two  threads accessing  the  same  FT_Library, you  should
+      really synchronize access to it yourself with a simple mutex.
+
+    - memory  management is  performed  through a  very simple  object
+      called "FT_Memory",  which really is a table  containing a table
+      of pointers to  functions like malloc, realloc and  free as well
+      as some user data (closure).
 
     - resources have disappeared (they created more problems than they
-      solved), and i/o management have been simplified greatly as a
+      solved), and  i/o management have  been simplified greatly  as a
       result. Streams are defined through FT_Stream objects, which can
       be either memory-based or disk-based.
 
-      Note that each face has its own stream, which is closed only when
-      the face object is destroyed. Hence, a function like TT_Flush_Face
-      in 1.x cannot be directly supported. However, if you really need
-      something like this, you can easily tailor your own streams to achieve
-      the same feature at a lower level (and use FT_Open_Face instead of
-      FT_New_Face to create the face).
+      Note that  each face  has its own  stream, which is  closed only
+      when  the  face object  is  destroyed.  Hence,  a function  like
+      TT_Flush_Face in  1.x cannot be directly  supported. However, if
+      you really need something like  this, you can easily tailor your
+      own streams  to achieve the same  feature at a  lower level (and
+      use FT_Open_Face instead of FT_New_Face to create the face).
 
-  See the file "include/ftsystem.h" for more details, as well as the
+  See the file  "include/ftsystem.h" for more details, as  well as the
   implementations found in "config/unix" and "config/ansi".
 
 
------------------------------------------------------------------------------------------
-Font Drivers :
+----------------------------------------------------------------------
 
+Font Drivers:
 
-  The Font Driver interface has been modified in order to support
+  The  Font Driver  interface has  been modified  in order  to support
   extensions & versioning.
 
 
-  The list of the font drivers that are statically linked to the
-  library at compile time is managed through a new configuration file
+  The  list of  the font  drivers that  are statically  linked  to the
+  library at compile time is  managed through a new configuration file
   called `config/<platform>/ftmodule.h'.
 
   This file is autogenerated when invoking `make modules'. This target
-  will parse all sub-directories of 'src', looking for a "module.mk"
+  will parse  all sub-directories of 'src', looking  for a "module.mk"
   rules file, used to describe the driver to the build system.
 
-  Hence, one should call `make modules' each time a font driver is added
-  or removed from the `src' directory.
-
+  Hence, one  should call  `make modules' each  time a font  driver is
+  added or removed from the `src' directory.
 
   Finally, this version provides a "pseudo-driver" in `src/sfnt'. This
-  driver doesn't support font files directly, but provides services used
-  by all TrueType-like font drivers. Hence, its code is shared between
-  the TrueType & OpenType font formats, and possibly more formats to
-  come if we're lucky..
+  driver doesn't  support font  files directly, but  provides services
+  used by  all TrueType-like font  drivers. Hence, its code  is shared
+  between  the TrueType  & OpenType  font formats,  and  possibly more
+  formats to come if we're lucky..
+
+
+----------------------------------------------------------------------
 
------------------------------------------------------------------------------------------
-Extensions support :
+Extensions support:
 
   The extensions support is inspired by the one found in 1.x.
 
-  Now, each font driver has its own "extension registry", which lists
-  which extensions are available for the font faces managed by the driver.
+  Now, each font driver has  its own "extension registry", which lists
+  which extensions  are available  for the font  faces managed  by the
+  driver.
 
-  Extension ids are now strings, rather than 4-byte tags, as this is
+  Extension ids are  now strings, rather than 4-byte  tags, as this is
   usually more readable..
 
   Each extension has:
     - some data, associated to each face object
     - an interface (table of function pointers)
 
-  An extension that is format-specific should simply register itself
+  An extension  that is format-specific should  simply register itself
   to the correct font driver. Here is some example code:
 
    // Registering an extensions
@@ -1132,3 +1161,4 @@ Extensions support :
      return ext_interface->do_it(ext);
    }
 
+--- end of CHANGES ---
diff --git a/ChangeLog b/ChangeLog
index 5a222c7..49af850 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2001-04-02  Werner Lemberg  <wl@gnu.org>
+
+	* CHANGES: Reformatted, minor fixes.
+	* TODO: Updated.
+	* include/freetype/freetype.h: Formatting.
+
 2001-04-02  Tom Kacvinsky  <tjk@ams.org>
 
 	* src/sfnt/ttload.c (TT_Load_Metrics): Fix an improper pointer
@@ -11,8 +17,8 @@
 
 2001-03-24  David Turner  <david.turner@freetype.org>
 
-	* Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles
-	to the source tree. see www.freetype.org/jam/index.html for details
+	* Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles to
+	the source tree.  See www.freetype.org/jam/index.html for details.
 
 
 	* Version 2.0.2 released.
diff --git a/TODO b/TODO
index 0c17aca..5cf630f 100644
--- a/TODO
+++ b/TODO
@@ -2,11 +2,13 @@ Here is a list of items that need to be addressed in FreeType 2:
 
 * Add synthesized Unicode charmap processing to the CFF driver.
 
-* Fix Visual C++ project file
+* Fix Visual C++ project file.
 
 * Fix a bug in the TrueType driver: linear horizontal advances of composites
   are not returned properly.
 
 * Change the build system to work with the "Jam" tool instead of the
-  terribly complex and error-prone GNU Makefiles we're currently using
+  terribly complex and error-prone GNU Makefiles we are currently using.
 
+* Fix exact bbox calculation for cubics.  The current code uses an iterative
+  algorithm which can fail miserably.
diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h
index 9ae157d..7fee26d 100644
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -822,123 +822,141 @@ FT_BEGIN_HEADER
   /*                                                                       */
 #define FT_FACE_FLAG_EXTERNAL_STREAM   0x4000
 
+
   /* */
 
-  /***********************************************************************
-   *
-   * @macro: FT_HAS_HORIZONTAL (face)
-   *
-   * @description:
-   *   a macro that returns true whenever a face object contains horizontal
-   *   metrics. (this is true for all font formats though).
-   *
-   * @also:
-   *   @FT_HAS_VERTICAL can be used to check for vertical metrics.
-   */
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* @macro: FT_HAS_HORIZONTAL (face)                                      */
+  /*                                                                       */
+  /* @description:                                                         */
+  /*   A macro that returns true whenever a face object contains           */
+  /*   horizontal metrics (this is true for all font formats though).      */
+  /*                                                                       */
+  /* @also:                                                                */
+  /*   @FT_HAS_VERTICAL can be used to check for vertical metrics.         */
+  /*                                                                       */
 #define FT_HAS_HORIZONTAL( face ) \
           ( face->face_flags & FT_FACE_FLAG_HORIZONTAL )
 
-  /***********************************************************************
-   *
-   * @macro: FT_HAS_VERTICAL (face)
-   *
-   * @description:
-   *   a macro that returns true whenever a face object contains vertical
-   *   metrics.
-   */
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* @macro: FT_HAS_VERTICAL (face)                                        */
+  /*                                                                       */
+  /* @description:                                                         */
+  /*   A macro that returns true whenever a face object contains vertical  */
+  /*   metrics.                                                            */
+  /*                                                                       */
 #define FT_HAS_VERTICAL( face ) \
           ( face->face_flags & FT_FACE_FLAG_VERTICAL )
 
-  /***********************************************************************
-   *
-   * @macro: FT_HAS_KERNING (face)
-   *
-   * @description:
-   *   a macro that returns true whenever a face object contains kerning
-   *   data that can be accessed with @FT_Get_Kerning
-   */
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* @macro: FT_HAS_KERNING (face)                                         */
+  /*                                                                       */
+  /* @description:                                                         */
+  /*   A macro that returns true whenever a face object contains kerning   */
+  /*   data that can be accessed with @FT_Get_Kerning.                     */
+  /*                                                                       */
 #define FT_HAS_KERNING( face ) \
           ( face->face_flags & FT_FACE_FLAG_KERNING )
 
-  /***********************************************************************
-   *
-   * @macro: FT_IS_SCALABLE (face)
-   *
-   * @description:
-   *   a macro that returns true whenever a face object contains a scalable
-   *   font face. I.e., true for TrueType, Type 1, CID and OpenType/CFF
-   *   font formats.
-   */
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* @macro: FT_IS_SCALABLE (face)                                         */
+  /*                                                                       */
+  /* @description:                                                         */
+  /*   A macro that returns true whenever a face object contains a         */
+  /*   scalable font face (true for TrueType, Type 1, CID, and             */
+  /*   OpenType/CFF font formats.                                          */
+  /*                                                                       */
 #define FT_IS_SCALABLE( face ) \
           ( face->face_flags & FT_FACE_FLAG_SCALABLE )
 
 
-  /***********************************************************************
-   *
-   * @macro: FT_IS_SFNT (face)
-   *
-   * @description:
-   *   a macro that returns true whenever a face object contains a font whose
-   *   format is based on the SFNT storage scheme. This usually means:
-   *   TrueType fonts, OpenType fonts, as well as SFNT-based embedded bitmap
-   *   fonts.
-   *
-   *   When this macro is true, all functions defined in @FT_SFNT_NAMES_H
-   *   and @FT_TRUETYPE_TABLES_H are available
-   */
+  /*************************************************************************/
+  /*                                                                       */
+  /* @macro: FT_IS_SFNT (face)                                             */
+  /*                                                                       */
+  /* @description:                                                         */
+  /*   A macro that returns true whenever a face object contains a font    */
+  /*   whose format is based on the SFNT storage scheme.  This usually     */
+  /*   means: TrueType fonts, OpenType fonts, as well as SFNT-based        */
+  /*   embedded bitmap fonts.                                              */
+  /*                                                                       */
+  /*   If this macro is true, all functions defined in @FT_SFNT_NAMES_H    */
+  /*   and @FT_TRUETYPE_TABLES_H are available.                            */
+  /*                                                                       */
 #define FT_IS_SFNT( face ) \
           ( face->face_flags & FT_FACE_FLAG_SFNT )
 
-  /***********************************************************************
-   *
-   * @macro: FT_IS_FIXED_WIDTH (face)
-   *
-   * @description:
-   *   a macro that returns true whenever a face object contains a font
-   *   face that contains fixed-width (or "monospace", "fixed-pitch", etc..)
-   *   glyphs.
-   */
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* @macro: FT_IS_FIXED_WIDTH (face)                                      */
+  /*                                                                       */
+  /* @description:                                                         */
+  /*   A macro that returns true whenever a face object contains a font    */
+  /*   face that contains fixed-width (or "monospace", "fixed-pitch",      */
+  /*   etc.) glyphs.                                                       */
+  /*                                                                       */
 #define FT_IS_FIXED_WIDTH( face ) \
           ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH )
 
 
-  /***********************************************************************
-   *
-   * @macro: FT_IS_FIXED_SIZES (face)
-   *
-   * @description:
-   *   a macro that returns true whenever a face object contains some
-   *   embedded bitmaps. See the 'fixed_sizes' field of the @FT_FaceRec
-   *   structure.
-   */
+  /*************************************************************************/
+  /*                                                                       */
+  /* @macro: FT_IS_FIXED_SIZES (face)                                      */
+  /*                                                                       */
+  /* @description:                                                         */
+  /*   A macro that returns true whenever a face object contains some      */
+  /*   embedded bitmaps.  See the `fixed_sizes' field of the @FT_FaceRec   */
+  /*   structure.                                                          */
+  /*                                                                       */
 #define FT_HAS_FIXED_SIZES( face ) \
           ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES )
 
+
    /* */
-   
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* @macro: FT_HAS_FAST_GLYPHS (face)                                     */
+  /*                                                                       */
+  /* @description:                                                         */
+  /*   XXX                                                                 */
+  /*                                                                       */
 #define FT_HAS_FAST_GLYPHS( face ) \
           ( face->face_flags & FT_FACE_FLAG_FAST_GLYPHS )
 
-  /***********************************************************************
-   *
-   * @macro: FT_HAS_GLYPH_NAMES (face)
-   *
-   * @description:
-   *   a macro that returns true whenever a face object contains some
-   *   glyph names that can be accessed through @FT_Get_Glyph_Names
-   */
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* @macro: FT_HAS_GLYPH_NAMES (face)                                     */
+  /*                                                                       */
+  /* @description:                                                         */
+  /*   A macro that returns true whenever a face object contains some      */
+  /*   glyph names that can be accessed through @FT_Get_Glyph_Names.       */
+  /*                                                                       */
 #define FT_HAS_GLYPH_NAMES( face ) \
           ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES )
 
-  /***********************************************************************
-   *
-   * @macro: FT_HAS_MULTIPLE_MASTERS (face)
-   *
-   * @description:
-   *   a macro that returns true whenever a face object contains some
-   *   multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H
-   *   are then available to choose the exact design you want.
-   */
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* @macro: FT_HAS_MULTIPLE_MASTERS (face)                                */
+  /*                                                                       */
+  /* @description:                                                         */
+  /*   A macro that returns true whenever a face object contains some      */
+  /*   multiple masters.  The functions provided by                        */
+  /*   @FT_MULTIPLE_MASTERS_H are then available to choose the exact       */
+  /*   design you want.                                                    */
+  /*                                                                       */
 #define FT_HAS_MULTIPLE_MASTERS( face ) \
           ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS )