Commit 5e3614f5847370786d8c91e1aa428ed15bbde55d

Werner Lemberg 2003-09-12T19:38:13

* builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'. * src/cff/cffdrivr.c: Don't load headers twice. * include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro. * src/base/ftobjs.c: Include FT_SERVICE_SFNT_H.

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
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
diff --git a/ChangeLog b/ChangeLog
index 04257ad..4dc6680 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,58 +1,176 @@
-2003-09-11  David Turner  <david@freetype.org>
+2003-09-11  Werner Lemberg  <wl@gnu.org>
 
-        * include/freetype/ftmm.h, include/freetype/ftmodule.h,
-          include/freetype/tttables.h, include/freetype/config/ftconfig.h,
-          include/freetype/internal/ftobjs.h,
-          include/freetype/internal/ftserv.h,
-          include/freetype/internal/internal.h,
-          include/freetype/internal/sfnt.h,
-          include/freetype/internal/tttypes.h,
-          include/freetype/internal/services/bdf.h,
-          include/freetype/internal/services/glyfdict.h,
-          include/freetype/internal/services/multmast.h,
-          include/freetype/internal/services/postname.h,
-          include/freetype/internal/services/sfnt.h,
-          include/freetype/internal/services/xf86name.h,
-          src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
-          src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
-          src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
-          src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
+	* builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'.
 
-          heavy internal modifications to introduce the concept of
-          "module services". This is the first step towards a massive
-          simplification of the engine's internals, in order to
-          get rid of various numbers of hacks.
+	* src/cff/cffdrivr.c: Don't load headers twice.
 
-          Note that this changes will break source & binary compatibility
-          for authors of external font drivers.
+	* include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro.
+	* src/base/ftobjs.c: Include FT_SERVICE_SFNT_H.
 
-          Maybe 2.1.6 will be called 2.2.0 after all :-)
+2003-09-11  David Turner  <david@freetype.org>
 
-        * README, builds/unix/configure, builds/unix/configure.ac,
-        docs/CHANGES, include/freetype/freetype.h:
+	Introducing the concept of `module services'.  This is the first
+	step towards a massive simplification of the engine's internals, in
+	order to get rid of various numbers of hacks.
 
-          updating version numbers for 2.1.6, and removing obsolete
-          warnings in the documentation
+	Note that this changes will break source & binary compatibility for
+	authors of external font drivers.
 
-        * include/freetype/internal/ftcore.h,
-        include/freetype/internal/ftexcept.h,
-        include/freetype/internal/fthash.h,
-        include/freetype/internal/ftobject.h:
+	* include/freetype/config/ftconfig.h (FT_BEGIN_STMNT, FT_END_STMNT,
+	FT_DUMMY_STMNT): New macros.
 
-          removing obsolete files
+	* include/freetype/internal/ftserv.h: New file, containing the new
+	structures and macros to provide `services'.
 
+	* include/freetype/internal/internal.h (FT_INTERNAL_EXTENSION_H,
+	FT_INTERNAL_EXTEND_H, FT_INTERNAL_HASH_H, FT_INTERNAL_OBJECT_H):
+	Removed, obsolete.
+	(FT_INTERNAL_SERVICE_H): New macro for `ftserv.h'.
 
+	* include/freetype/internal/services/bdf.h,
+	include/freetype/internal/services/glyfdict.h,
+	include/freetype/internal/services/postname.h,
+	include/freetype/internal/services/xf86name.h: New files.
 
+	* include/freetype/ftmm.h (FT_Get_MM_Func, FT_Set_MM_Design_Func,
+	FT_Set_MM_Blend_Func): Function pointers moved (in modified form)
+	to...
+	* include/freetype/internal/services/multmast.h: New file.
+
+	* include/freetype/internal/sfnt.h (SFNT_Interface): `get_interface'
+	is now of type `FT_Module_Requester'.
+	(SFNT_Get_Interface_Func, SFNT_Load_Table_Func): Function pointers
+	moved (in modified form) to...
+	* include/freetype/internal/servies/sfnt.h: New file.
+
+	* include/freetype/tttables.h (FT_Get_Sfnt_Table_Func): Function
+	pointer moved (in modified form) to `services/sfnt.h'.
+
+	* include/freetype/ftmodule.h (FT_Module_Interface): Make it a
+	a typedef to `FT_Pointer'.
+
+	* include/freetype/internal/tttypes.h (TT_FaceRec): Add
+	`postscript_name'.
+	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
+	`postscript_name'.
+	Add `services' element.
+	(FT_LibraryRec): Remove `meta_class'.
+
+	* src/base/ftbdf.c: Include FT_SERVICE_BDF_H.
+	(test_font_type): Removed.
+	(FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Use services
+	provided in `FT_SERVICE_ID_BDF' 
+
+	* src/base/ftmm.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
+	(ft_face_get_mm_service): New auxiliary function to get services
+	from `FT_SERVICE_ID_MULTI_MASTERS'.
+	(FT_Get_Multi_Master, FT_Set_MM_Design_Coordinates,
+	FT_Set_MM_Blend_Coordinates): Use `ft_face_get_mm_service'.
+
+	* src/base/ftobjs.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and
+	FT_SERVICE_GLYPH_DICT_H.
+	(ft_service_list_lookup): New function to get a specific service.
+	(destroy_face): Updated.
+	(Mac_Read_POST_Resource): Simplify some code.
+	(IsMacResource): Fix warnings.
+	(FT_Get_Name_Index, FT_Get_Glyph_Name): Use services provided in
+	`FT_SERVICE_ID_GLYPH_DICT'.
+	(FT_Get_Postscript_Name): Use service provided in
+	`FT_SERVICE_ID_POSTSCRIPT_NAME'.
+	(FT_Get_Sfnt_Table, FT_Load_Sfnt_Table): Use services provided in
+	`FT_SERVICE_ID_SFNT_TABLE'.
+
+	* src/base/ftxf86.c: Include FT_SERVICE_XFREE86_NAME_H.
+	(FT_Get_X11_Font_Format): Use service provided in
+	`FT_SERVICE_ID_XF86_NAME'.
+
+	* src/bdf/bdfdrivr.c: Include FT_SERVICE_BDF_H and
+	FT_SERVICE_XFREE86_NAME_H.
+	(bdf_get_charset_id): New function.
+	(bdf_service_bdf): New structure providing BDF services.
+	(bdf_services): New services list.
+	(bdf_driver_requester): Use `ft_service_list_lookup'.
+
+	* src/cff/cffdrivr.c: Include FT_SERVICE_XFREE86_NAME_H and
+	FT_SERVICE_GLYPH_DICT_H.
+	(cff_service_glyph_dict): New structure providing CFF services.
+	(cff_services): New services list.
+	(cff_get_interface): Use `ft_service_list_lookup'.
+
+	* src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and
+	FT_SERVICE_XFREE86_NAME_H.
+	(cid_service_ps_name): New structure providing CID services.
+	(cid_services): New services list.
+	(cid_get_interface): Use `ft_service_list_lookup'.
+
+	* src/pcf/pcfdrivr.c: Include FT_SERVICE_BDF_H and
+	FT_SERVICE_XFREE86_NAME_H.
+	(pcf_service_bdf): New structure providing PCF services.
+	(pcf_services): New services list.
+	(pcf_driver_requester): Use `ft_service_list_lookup'.
+
+	* src/sfnt/sfdriver.c: Include FT_SERVICE_GLYPH_DICT_H and
+	FT_SERVICE_POSTSCRIPT_NAME_H.
+	(get_sfnt_glyph_name): Renamed to...
+	(sfnt_get_glyph_name): This.
+	(get_sfnt_postscript_name): Renamed to...
+	(sfnt_get_ps_name): This.
+	Updated.
+	(sfnt_service_glyph_dict, sfnt_service_ps_name): New structures
+	providing services.
+	(sfnt_services): New services list.
+	(sfnt_get_interface): Use `ft_service_list_lookup'.
+
+	* src/truetype/ttdriver.c: Include FT_SERVICE_XFREE86_NAME_H.
+	(tt_services): New services list.
+	(tt_get_interface): Use `ft_service_list_lookup'.
+
+	* src/type1/t1driver.c: Include FT_SERVICE_MULTIPLE_MASTERS_H,
+	FT_SERVICE_GLYPH_DICT_H, FT_SERVICE_XFREE86_NAME_H, and
+	FT_SERVICE_POSTSCRIPT_NAME_H.
+	(t1_service_glyph_dict, t1_service_ps_name,
+	t1_service_multi_masters): New structures providing Type 1 services.
+	(t1_services): New services list.
+	(Get_Interface): Use `ft_service_list_lookup'.
+
+	* src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H,
+	FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H.
+	(t42_service_glyph_dict, t42_service_ps_name): New strucures
+	providing Type 42 services.
+	(t42_services): New services list.
+	(T42_Get_Interface): Use `ft_service_list_lookup'.
+
+
+	* README, builds/unix/configure, builds/unix/configure.ac,
+	docs/CHANGES, include/freetype/freetype.h: Updating version numbers
+	for 2.1.6, and removing obsolete warnings in the documentation.
+
+	* include/freetype/internal/ftcore.h,
+	include/freetype/internal/ftexcept.h,
+	include/freetype/internal/fthash.h,
+	include/freetype/internal/ftobject.h: Removed.  Obsolete.
 
 2003-09-09  David Turner  <david@freetype.org>
 
-        * src/base/ftpfr.c, src/pfr/pfrtypes.h, src/pfr/pfrload.c,
-        src/pfr/pfrobjs.c: fixing PFR kerning support. The tables within
-        the font file contain (charcode,charcode) kerning pairs, we need
-        to convert them to (gindex,gindex) !
+	Fixing PFR kerning support.  The tables within the font file contain
+	(charcode,charcode) kerning pairs, we need to convert them to
+	(gindex,gindex).
 
-        * include/freetype/ftoption.h: commenting out the macro
-        TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+	* src/base/ftpfr.c (ft_pfr_check): Fix serious typo.
+	* src/pfr/prfload.c: Remove dead code.
+	(pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs):
+	New functions.
+	(pfr_phy_font_done): Free `kern_pairs'.
+	(pfr_phy_font_load): Call `pfr_sort_kerning_pairs'.
+	* src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix kerning extraction.
+	* src/pfr/pfrtypes.h (PFR_KERN_PAIR_INDEX): New macro.
+	(PFR_KernPairRec): Make `kerning' an FT_Int.
+	(PFR_PhyFontRec): New element `kern_pairs'.
+	(PFR_KernFlags): Values of PFR_KERN_2BYTE_CHAR and
+	PFR_KERN_2BYTE_ADJ were erroneously reversed.
+
+	* include/freetype/ftoption.h: Commenting out the macro
+	TT_CONFIG_OPTION_BYTECODE_INTERPRETER.
 
 2003-08-31  Manish Singh  <yosh@gimp.org>
 
@@ -1957,9 +2075,9 @@
 
 2002-11-01  David Turner  <david@freetype.org>
 
-	Added PFR-specific public API. Fixed the kerning retrievel routine
-        (it returned invalid values when the outline and metrics resolution
-        differ).
+	Added PFR-specific public API.  Fixed the kerning retrievel routine
+	(it returned invalid values when the outline and metrics resolution
+	differ).
 
 	* include/freetype/ftpfr.h, include/freetype/internal/pfr.h: New
 	files.
@@ -6772,7 +6890,7 @@
 	* src/cff/cffparse.c (cff_parse_font_matrix): Added logic to get
 	the units_per_EM from the FontMatrix.
 
-	(cff_parse_fixed_thousand): New function. Gets a real number from
+	(cff_parse_fixed_thousand): New function.  Gets a real number from
 	the CFF font, but multiplies by 1000 (this is to avoid rounding
 	errors when placing this real number into a 16.16 fixed number).
 
diff --git a/builds/toplevel.mk b/builds/toplevel.mk
index 08f50b4..6ee3818 100644
--- a/builds/toplevel.mk
+++ b/builds/toplevel.mk
@@ -110,6 +110,7 @@ ifdef check_platform
 	  $(RM) builds/unix/config.status
 	  $(RM) builds/unix/unix-def.mk
 	  $(RM) builds/unix/unix-cc.mk
+	  $(RM) builds/unix/freetype2.pc
 	  $(RM) nul
 
   endif # test is_unix
diff --git a/docs/CHANGES b/docs/CHANGES
index b4442bb..e7c5500 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -3,15 +3,15 @@ LATEST CHANGES BETWEEN 2.1.6 and 2.1.5
 
   I. IMPORTANT BUG FIXES
 
-    - the PFR font driver didn't load kerning tables correctly,
-      and the functions in FT_PFR_H didn't work at all. Ugh !!
+    - The PFR  font driver didn't  load kerning tables  correctly, and
+      the functions in FT_PFR_H didn't work at all.
 
   II. IMPORTANT CHANGES
 
-    - the internal module API has been heavily changed. In favor
-      of massive simplifications within the font engine. This
-      also means that authors of third-party modules will need
-      to adapt their code !!
+    - The internal  module API  has been heavily  changed in  favor of
+      massive simplifications within the font engine.  This also means
+      that authors of third-party modules must adapt their code to the
+      new scheme.
 
 
 =====================================================================
@@ -21,51 +21,52 @@ LATEST CHANGES BETWEEN 2.1.5 and 2.1.4
 
   I. IMPORTANT BUG FIXES
 
-    - Parsing the /CIDFontName field now removes the leading slash to
+    - Parsing the /CIDFontName field  now removes the leading slash to
       be in sync with other font drivers.
 
-    - gzip support was buggy. Some fonts could not be read.
+    - gzip support was buggy.  Some fonts could not be read.
 
-    - Fonts which have nested subglyphs more than one level deep no
+    - Fonts which  have nested subglyphs  more than one level  deep no
       longer cause a segfault.
 
-    - Creation of synthetic cmaps for fonts in CFF format was broken
+    - Creation of synthetic  cmaps for fonts in CFF  format was broken
       partially.
 
-    - Numeric font dictionary entries for synthetic fonts are no longer
-      overwritten.
+    - Numeric  font  dictionary entries  for  synthetic  fonts are  no
+      longer overwritten.
 
-    - The font matrix wasn't applied to the advance width for Type1, CID,
-      and CFF fonts. This caused problem when loading certain synthetic
-      Type 1 fonts like "Helvetica Narrow"
+    - The font matrix  wasn't applied to the advance  width for Type1,
+      CID, and  CFF fonts.  This  caused problem when  loading certain
+      synthetic Type 1 fonts like "Helvetica Narrow"
 
-    - The test for the charset registry in BDF and PCF fonts is now
+    - The test  for the charset registry  in BDF and PCF  fonts is now
       case-insensitive.
 
-    - FT_Vector_Rotate rotating sometimes returned strange values due to
-      rounding errors.
+    - FT_Vector_Rotate rotating sometimes  returned strange values due
+      to rounding errors.
 
-    - The PCF driver now returns the correct number of glyphs (including
-      an artificial `notdef' glyph at index 0).
+    - The  PCF  driver  now  returns  the  correct  number  of  glyphs
+      (including an artificial `notdef' glyph at index 0).
 
-    - FreeType now supports buggy CMaps which are contained in many CJK
-      fonts from Dynalab.
+    - FreeType now  supports buggy CMaps  which are contained  in many
+      CJK fonts from Dynalab.
 
-    - Opening an invalid font on a Mac caused a segfault due to
+    - Opening  an invalid  font  on a  Mac  caused a  segfault due  to
       double-freeing memory.
 
-    - BDF fonts with more than 32768 glyphs weren't supported properly.
+    - BDF  fonts  with  more   than  32768  glyphs  weren't  supported
+      properly.
 
 
   II. IMPORTANT CHANGES
 
     - Accessing bitmap font formats has been synchronized.  To do that
-      the FT_Bitmap_Size structure has been extended to contain new
+      the FT_Bitmap_Size  structure has  been extended to  contain new
       fields `size', `x_ppem', and `y_ppem'.
 
     - The FNT driver now returns multiple faces, not multiple strikes.
 
-    - The `psnames' module has been updated to the Adobe Glyph List
+    - The `psnames'  module has been  updated to the Adobe  Glyph List
       version 2.0.
 
     - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
@@ -73,261 +74,274 @@ LATEST CHANGES BETWEEN 2.1.5 and 2.1.4
     - The algorithm for guessing the font style has been improved.
 
     - For fonts in sfnt format, root->height is no longer increased if
-      the line gap is zero.  There exist fonts (containing e.g. form
-      drawing characters) which intentionally have a zero line gap value.
+      the line gap  is zero.  There exist fonts  (containing e.g. form
+      drawing  characters) which  intentionally have  a zero  line gap
+      value.
 
-    - ft_glyph_bbox_xxx flags are now deprecated in favour of
+    - ft_glyph_bbox_xxx  flags   are  now  deprecated   in  favour  of
       FT_GLYPH_BBOX_XXX.
 
-    - ft_module_xxx flags are now deprecated in favour of FT_MODULE_XXX.
+    - ft_module_xxx   flags   are   now   deprecated  in   favour   of
+      FT_MODULE_XXX.
 
-    - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now deprecated
-      in favour of FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those
-      encodings are not specific to Microsoft.
+    - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB}      are     now
+      deprecated               in               favour              of
+      FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB}  -- those encodings
+      are not specific to Microsoft.
 
 
   III. MISCELLANEOUS
 
-    - The autohinter has been further improved; for example, `m' glyphs
-      now retain its vertical symmetry.
+    - The  autohinter  has been  further  improved;  for example,  `m'
+      glyphs now retain its vertical symmetry.
 
     - Partial support of Mac fonts on non-Mac platforms.
 
-    - `make refdoc' (after first `make') builds the HTML documentation.
-      You need Python for this.
+    - `make   refdoc'   (after   first   `make')   builds   the   HTML
+      documentation.  You need Python for this.
 
-    - The make build system should now work more reliably on DOS-like
+    - The make build system should  now work more reliably on DOS-like
       platforms.
 
-    - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has been
-      added.
+    - Support for  EMX gcc  and Watson C/C++  compilers on  MS-DOS has
+      been added.
 
     - Better VMS build support.
 
-    - Support for the pkg-config package by providing a `freetype.pc'
+    - Support for the pkg-config  package by providing a `freetype.pc'
       file.
 
     - New configure option --with-old-mac-fonts for Darwin.
 
-    - Some source files have been renamed (mainly to fit into the 8.3
+    - Some source files have been  renamed (mainly to fit into the 8.3
       naming scheme).
 
 
-==============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.1.4 and 2.1.3
 
   I. IMPORTANT BUG FIXES
 
-    - Updated to newest libtool version, fixing build problems on various
-      platforms.
+    - Updated  to newest  libtool  version, fixing  build problems  on
+      various platforms.
 
-    - A fix in the Gzip stream reader: It couldn't read certain .gz files
-      properly due to a small typo.  In certain cases, FreeType could also
-      loop endlessly when trying to load tiny gzipped files.
+    - A fix  in the Gzip stream  reader: It couldn't  read certain .gz
+      files properly due to a  small typo.  In certain cases, FreeType
+      could  also loop  endlessly  when trying  to  load tiny  gzipped
+      files.
 
-    - The configure script now tries to use the system-wide zlib when
-      it finds one (instead of the copy found in src/gzip).  And
-      "freetype-config" has been updated to return relevant flags in this
-      case when invoked with "--libs" (e.g. "-lzlib").
+    - The configure script now tries  to use the system-wide zlib when
+      it  finds one  (instead of  the  copy found  in src/gzip).   And
+      "freetype-config" has  been updated to return  relevant flags in
+      this case when invoked with "--libs" (e.g. "-lzlib").
 
-    - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
-      Unicode charmap (e.g. SYMBOL.TTF).  FreeType erroneously rejected
-      them.
+    - Certain fonts couldn't be loaded  by 2.1.3 because they lacked a
+      Unicode   charmap  (e.g.   SYMBOL.TTF).    FreeType  erroneously
+      rejected them.
 
     - The CFF loader was modified to accept fonts which only contain a
-      subset of their reference charset.  This prevented the correct use
-      of PDF-embedded fonts.
+      subset of  their reference charset.  This  prevented the correct
+      use of PDF-embedded fonts.
 
     - The logic to detect Unicode charmaps has been modified.  This is
-      required to support fonts which include both 16-bit and 32-bit
-      charmaps (like very recent asian ones) using the new 10 and 12 SFNT
-      formats.
+      required to  support fonts which include both  16-bit and 32-bit
+      charmaps (like very  recent asian ones) using the  new 10 and 12
+      SFNT formats.
 
-    - The TrueType loader now limits the depth of composite glyphs.  This is
-      necessary to prevent broken fonts to break the engine by blowing the
-      stack with recursive glyph definitions.
+    - The TrueType  loader now limits  the depth of  composite glyphs.
+      This is necessary to prevent broken fonts to break the engine by
+      blowing the stack with recursive glyph definitions.
 
-    - The CMap cache is now capable of managing UCS-4 character codes that
-      are mapped through extended charmaps in recent TrueType/OpenType
-      fonts.
+    - The CMap cache is now  capable of managing UCS-4 character codes
+      that   are   mapped   through   extended  charmaps   in   recent
+      TrueType/OpenType fonts.
 
-    - The cache sub-system now properly manages out-of-memory conditions
-      instead of blindly reporting them to the caller.  This means that it
-      will try to empty the cache before restarting its allocations to see
-      if that can help.
+    - The   cache  sub-system   now  properly   manages  out-of-memory
+      conditions  instead of  blindly  reporting them  to the  caller.
+      This means that it will try to empty the cache before restarting
+      its allocations to see if that can help.
 
-    - The PFR driver didn't return the list of available embedded bitmaps
-      properly.
+    - The  PFR driver  didn't return  the list  of  available embedded
+      bitmaps properly.
 
-    - There was a nasty memory leak when using embedded bitmaps in certain
-      font formats.
+    - There was  a nasty  memory leak when  using embedded  bitmaps in
+      certain font formats.
 
 
   II. IMPORTANT CHANGES
 
-    - David Chester contributed some enhancements to the auto-hinter that
-      significantly increase the quality of its output.  The Postscript
-      hinter was also improved in several ways.
+    - David Chester  contributed some enhancements  to the auto-hinter
+      that  significantly increase  the  quality of  its output.   The
+      Postscript hinter was also improved in several ways.
 
     - The FT_RENDER_MODE_LIGHT render mode was implemented.
 
-    - A new API function called `FT_Get_BDF_Property' has been added to
-      FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font files.
-      THIS IS STILL EXPERIMENTAL, since it hasn't been properly tested yet.
+    - A new  API function called `FT_Get_BDF_Property'  has been added
+      to FT_BDF_H to  retrieve BDF properties from BDF  _and_ PCF font
+      files.   THIS  IS  STILL  EXPERIMENTAL,  since  it  hasn't  been
+      properly tested yet.
 
     - A Windows FNT specific API has been added, mostly to access font
       headers.  This is used by Wine.
 
-    - TrueType tables without an "hmtx" table are now tolerated when an
-      incremental interface is used.  This happens for certain Type42 fonts
-      passed from Ghostscript to FreeType.
+    - TrueType tables  without an "hmtx" table are  now tolerated when
+      an  incremental interface  is  used.  This  happens for  certain
+      Type42 fonts passed from Ghostscript to FreeType.
 
-    - The PFR font driver is now capable of returning the font family and
-      style names when they are available (instead of the sole "FontID").
-      This is performed by parsing an *undocumented* portion of the font
-      file!
+    - The PFR font driver is  now capable of returning the font family
+      and style  names when  they are available  (instead of  the sole
+      "FontID").   This  is  performed  by parsing  an  *undocumented*
+      portion of the font file!
 
 
   III. MISCELLANEOUS
 
-    - The path stroker in FT_STROKER_H has entered beta stage.  It now works
-      very well, but its interface might change a bit in the future.  More
-      on this in later releases.
+    - The path stroker in FT_STROKER_H has entered beta stage.  It now
+      works very  well, but  its interface might  change a bit  in the
+      future.  More on this in later releases.
 
-    - The documentation for FT_Size_Metrics didn't appear properly in the
-      API reference.
+    - The documentation for  FT_Size_Metrics didn't appear properly in
+      the API reference.
 
     - The file docs/VERSION.DLL has been updated to explain versioning
-      with FreeType (i.e., comparing release/libtool/so numbers, and how to
-      use them in autoconf scripts).
+      with FreeType  (i.e., comparing release/libtool/so  numbers, and
+      how to use them in autoconf scripts).
 
-    - The installation documentation has been seriously revamped.
+    - The  installation  documentation  has been  seriously  revamped.
       Everything is now in the "docs" directory.
 
 
-==============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.1.3 and 2.1.2
 
   I. IMPORTANT BUG FIXES
 
-    - FT_Vector_Transform had been incorrectly modified in 2.1.2, resulting
-      in incorrect transformations being applied (for example, rotations
-      were processed in opposite angles).
+    - FT_Vector_Transform  had  been  incorrectly modified  in  2.1.2,
+      resulting  in  incorrect   transformations  being  applied  (for
+      example, rotations were processed in opposite angles).
 
-    - The format 8 and 12 TrueType charmap enumeration routines have been
-      fixed (FT_Get_Next_Char returned invalid values).
+    - The format  8 and 12 TrueType charmap  enumeration routines have
+      been fixed (FT_Get_Next_Char returned invalid values).
 
-    - The PFR font driver returned incorrect advance widths if the outline
-      and metrics resolution defined in the font file were different.
+    - The  PFR font driver  returned incorrect  advance widths  if the
+      outline  and metrics resolution  defined in  the font  file were
+      different.
 
-    - FT_Glyph_To_Bitmap now returns successfully when called with an
+    - FT_Glyph_To_Bitmap now returns  successfully when called with an
       FT_BitmapGlyph argument (it previously returned an error).
 
-    - A bug in the Type 1 loader that prevented valid font bounding boxes to
-      be loaded from multiple master fonts.
+    - A bug  in the Type 1  loader that prevented  valid font bounding
+      boxes to be loaded from multiple master fonts.
 
-    - The SFNT validation code has been rewritten.  FreeType can now load
-      "broken" fonts that were usable on Windows, but not with previous
-      versions of the library.
+    - The SFNT  validation code has been rewritten.   FreeType can now
+      load "broken"  fonts that were  usable on Windows, but  not with
+      previous versions of the library.
 
     - The computation of bearings in the BDF driver has been fixed.
 
-    - The Postscript hinter crashed when trying to hint certain glyphs (more
-      precisely, when trying to apply hints to an empty glyph outline).
+    - The Postscript hinter crashed when trying to hint certain glyphs
+      (more precisely,  when trying to  apply hints to an  empty glyph
+      outline).
 
-    - The TrueType glyph loader now supports composites in "Apple format"
-      (they differ slightly from Microsoft/OpenType ones in the way
-      transformation offsets are computed).
+    - The  TrueType glyph  loader  now supports  composites in  "Apple
+      format"  (they differ slightly  from Microsoft/OpenType  ones in
+      the way transformation offsets are computed).
 
-    - FreeType was very slow at opening certain asian CID/CFF fonts, due
-      to fixed increment in dynamic array re-allocations.  This has been
-      changed to exponential behaviour to get acceptable performance.
+    - FreeType was  very slow at opening certain  asian CID/CFF fonts,
+      due to  fixed increment  in dynamic array  re-allocations.  This
+      has  been changed  to  exponential behaviour  to get  acceptable
+      performance.
 
 
 
   II. IMPORTANT CHANGES
 
-    - The PCF driver now supports gzip-compressed font files natively.  This
-      means that you will be able to use all these bitmap fonts that come
-      with XFree86 with FreeType (and libXft/libXft2, by extension).
+    - The PCF driver now supports gzip-compressed font files natively.
+      This means that  you will be able to use  all these bitmap fonts
+      that  come with  XFree86 with  FreeType (and  libXft/libXft2, by
+      extension).
 
-    - The automatic and postscript hinters have both been updated.  This
-      results in a relatively important increase of rendering quality since
-      many nasty defaults have been supressed.  Please visit the web page:
+    - The  automatic and  postscript hinters  have both  been updated.
+      This  results in  a relatively  important increase  of rendering
+      quality since  many nasty defaults have  been supressed.  Please
+      visit the web page:
 
         http://www.freetype.org/hinting/smooth-hinting.html
 
       for additional details on this topic.
 
-    - The "load_flags" parameter of FT_Load_Glyph is now an FT_Int32
-      (instead of just being an FT_Int).  This breaks source and binary
-      compatibility for 16bit systems only, while retaining both of them for
-      32 and 64 bit ones.
+    - The "load_flags"  parameter of FT_Load_Glyph is  now an FT_Int32
+      (instead  of just  being  an FT_Int).   This  breaks source  and
+      binary  compatibility for  16bit systems  only,  while retaining
+      both of them for 32 and 64 bit ones.
 
       Some new flags have been added consequently:
 
         FT_LOAD_NO_AUTOHINT   :: Disable the use of the auto-hinter
                                  (but not native format hinters).
 
-        FT_LOAD_TARGET_NORMAL :: Hint and render for normal anti-aliased
-                                 displays.
+        FT_LOAD_TARGET_NORMAL :: Hint and render for normal
+                                 anti-aliased displays.
 
         FT_LOAD_TARGET_MONO   :: Hint and render for 1-bit displays.
 
-        FT_LOAD_TARGET_LCD    :: Hint and render for horizontal RGB or BGR
-                                 sub-pixel displays (like LCD screens).
-                                 THIS IS STILL EXPERIMENTAL!
+        FT_LOAD_TARGET_LCD    :: Hint and render for horizontal RGB or
+                                 BGR sub-pixel displays (like LCD
+                                 screens).  THIS IS STILL
+                                 EXPERIMENTAL!
 
-        FT_LOAD_TARGET_LCD_V  :: Same as FT_LOAD_TARGET_LCD, for vertical
-                                 sub-pixel displays (like rotated LCD
-                                 screens).  THIS IS STILL EXPERIMENTAL!
+        FT_LOAD_TARGET_LCD_V  :: Same as FT_LOAD_TARGET_LCD, for
+                                 vertical sub-pixel displays (like
+                                 rotated LCD screens).  THIS IS STILL
+                                 EXPERIMENTAL!
 
-      FT_LOAD_MONOCHROME is still supported, but only affects rendering, not
-      the hinting.
+      FT_LOAD_MONOCHROME   is  still   supported,  but   only  affects
+      rendering, not the hinting.
 
-      Note that the 'ftview' demo program available in the 'ft2demos' package
-      has been updated to support LCD-optimized display on non-paletted
-      displays (under Win32 and X11).
+      Note that the `ftview'  demo program available in the `ft2demos'
+      package  has been  updated to  support LCD-optimized  display on
+      non-paletted displays (under Win32 and X11).
 
-    - The PFR driver now supports embedded bitmaps (all formats supported),
-      and returns correct kerning metrics for all glyphs.
+    - The  PFR  driver  now  supports embedded  bitmaps  (all  formats
+      supported), and returns correct kerning metrics for all glyphs.
 
-    - The TrueType charmap loader now supports certain "broken" fonts that
-      load under Windows without problems.
+    - The TrueType charmap loader  now supports certain `broken' fonts
+      that load under Windows without problems.
 
     - The cache API has been slightly modified (it's still a beta!):
 
-       - The type FTC_ImageDesc has been removed; it is now replaced by
-         FTC_ImageTypeRec.  Note that one of its fields is a `load_flag'
-         parameter for FT_Load_Glyph.
+       - The type  FTC_ImageDesc has been removed; it  is now replaced
+         by  FTC_ImageTypeRec.   Note that  one  of  its  fields is  a
+         `load_flag' parameter for FT_Load_Glyph.
 
-       - The field "num_grays" of FT_SBitRec has been changed to "max_grays"
-         in order to fit within a single byte.  Its maximum value is thus 255
-         (instead of 256 as previously).
+       - The  field  "num_grays" of  FT_SBitRec  has  been changed  to
+         "max_grays"  in  order to  fit  within  a  single byte.   Its
+         maximum value is thus 255 (instead of 256 as previously).
 
 
   III. MISCELLANEOUS
 
-    - Added support for the DESTDIR variable during "make install".  This
-      simplifies packaging of FreeType.
+    - Added support  for the  DESTDIR variable during  "make install".
+      This simplifies packaging of FreeType.
 
-    - Included modified copies of the ZLib sources in 'src/gzip' in order to
-      support gzip-compressed PCF fonts.  We do not use the system-provided
-      zlib for now, though this is a probable enhancement for future
-      releases.
+    - Included modified  copies of the  ZLib sources in  `src/gzip' in
+      order to support  gzip-compressed PCF fonts.  We do  not use the
+      system-provided  zlib  for  now,   though  this  is  a  probable
+      enhancement for future releases.
 
-    - The DocMaker tool used to generate the on-line API reference has been
-      completely rewritten.  It is now located in
+    - The DocMaker tool used to generate the on-line API reference has
+      been   completely    rewritten.    It   is    now   located   in
       "src/tools/docmaker/docmaker.py".  Features:
 
         - better cross-referenced output
         - more polished output
-        - uses Python regular expressions (though it didn't speed the
+        - uses Python regular expressions  (though it didn't speed the
           program)
-        - much more modular structure, which allows for different "backends"
-          in order to generate HTML, XML, or whatever format.
+        - much  more  modular structure,  which  allows for  different
+          "backends"  in  order to  generate  HTML,  XML, or  whatever
+          format.
 
       One can regenerate the API reference by calling:
 
@@ -340,86 +354,92 @@ LATEST CHANGES BETWEEN 2.1.3 and 2.1.2
                 include/freetype/cache/*.h
 
     - A new, experimental, support for incremental font loading (i.e.,
-      loading of fonts where the glyphs are not in the font file itself, but
-      provided by an external component, like a Postscript interpreter) has
-      been added by Graham Asher.  This is still work in progress, however.
-
-    - A new, EXPERIMENTAL, path stroker has been added.  It doesn't suffer
-      from severe rounding errors and treat bezier arcs directly.  Still
-      work in progress (i.e. not part of the official API).  See the file
-      <freetype/ftstroker.h> for some of the details.
+      loading  of fonts  where the  glyphs are  not in  the  font file
+      itself, but provided by an external component, like a Postscript
+      interpreter) has been added by Graham Asher.  This is still work
+      in progress, however.
+
+    - A new,  EXPERIMENTAL, path stroker  has been added.   It doesn't
+      suffer  from  severe  rounding  errors  and  treat  bezier  arcs
+      directly.  Still work in progress (i.e. not part of the official
+      API).   See  the file  <freetype/ftstroker.h>  for  some of  the
+      details.
 
-    - The massive re-formatting of sources and internal re-design is still
-      under-way.  Many internal functions, constants, and types have been
-      renamed.
+    - The massive  re-formatting of sources and  internal re-design is
+      still under-way.  Many  internal functions, constants, and types
+      have been renamed.
 
 
-========================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.1.2 and 2.1.1
 
   I. IMPORTANT BUG FIXES
 
-    - Many font drivers didn't select a Unicode charmap by default when
-      a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS options
-      enabled), causing many applications to not be able to display text
-      correctly with the 2.1.x releases.
+    - Many  font drivers didn't  select a  Unicode charmap  by default
+      when a new face  was opened (with the FT_CONFIG_OPTION_USE_CMAPS
+      options enabled),  causing many applications  to not be  able to
+      display text correctly with the 2.1.x releases.
 
-    - The PFR driver had a bug in its composite loading code that produces
-      incorrectly placed accents with many fonts.
+    - The  PFR driver had  a bug  in its  composite loading  code that
+      produces incorrectly placed accents with many fonts.
 
     - The Type42 driver crashed sometimes due to a nasty bug.
 
-    - The Type 1 custom encoding charmap didn't handle the case where the
-      first glyph index wasn't 0.
+    - The Type 1 custom encoding  charmap didn't handle the case where
+      the first glyph index wasn't 0.
 
-    - A serious typo in the TrueType composite loader produced incorrectly
-      placed glyphs in fonts like "Wingdings" and a few others.
+    - A  serious  typo  in  the  TrueType  composite  loader  produced
+      incorrectly placed  glyphs in fonts  like "Wingdings" and  a few
+      others.
 
 
   II. MISCELLANEOUS
 
-    - The Win32 Visual C++ project file has been updated to include the
-      PFR driver as well.
+    - The Win32  Visual C++ project  file has been updated  to include
+      the PFR driver as well.
 
-    - "freetype.m4" is now installed by default by "make install" on Unix
-      systems.
+    - "freetype.m4" is  now installed by default by  "make install" on
+      Unix systems.
 
-    - The function FT_Get_PS_Font_Info now works with CID and Type42 fonts
-      as well.
+    - The function  FT_Get_PS_Font_Info now works with  CID and Type42
+      fonts as well.
 
 
-========================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.1.1 and 2.1.0
 
   I. IMPORTANT BUG FIXES
 
-    - The `version_info' returned by `freetype-config' in 2.1.0 returned an
-      invalid value. It now returns 9:1:3 (2.0.9 returned 9:0:3).
+    - The  `version_info'  returned   by  `freetype-config'  in  2.1.0
+      returned an invalid value.  It now returns 9:1:3 (2.0.9 returned
+      9:0:3).
 
-    - Version 2.1.0 couldn't be linked against applications on Win32 and
-      Amiga systems due to a new debug function that wasn't properly
-      propagated to the system-specific directory in `builds'.
+    - Version 2.1.0  couldn't be linked against  applications on Win32
+      and  Amiga systems  due  to  a new  debug  function that  wasn't
+      properly   propagated  to   the  system-specific   directory  in
+      `builds'.
 
     - Various MacOS and Mac OS X specific fixes.
 
-    - Fixed a bug in the TrueType charmap validation routines that made
-      version 2.1.0 too restrictive -- many popular fonts have been
-      rejected.
+    - Fixed  a bug in  the TrueType  charmap validation  routines that
+      made version  2.1.0 too restrictive  -- many popular  fonts have
+      been rejected.
 
-    - There was still a very small difference between the monochrome glyph
-      bitmaps produced by FreeType 1.x and FreeType 2.x with the bytecode
-      interpreter enabled.  This was caused by an invalid flag setting in
-      the TrueType glyph loader, making the rasterizer change its drop-out
-      control mode.  Now theresults should _really_ be completely identical.
+    - There was  still a very small difference  between the monochrome
+      glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
+      bytecode  interpreter enabled.   This was  caused by  an invalid
+      flag setting in the TrueType glyph loader, making the rasterizer
+      change  its  drop-out   control  mode.   Now  theresults  should
+      _really_ be completely identical.
 
     - The TrueType name table loader has been improved to support many
-      popular though buggy Asian fonts.  It now ignores empty name entries,
-      invalid pointer offsets and a few other incorrect subtleties.
-      Moreover, name strings are now loaded on demand, which reduces the
-      memory load of many faces (e.g. the ARIAL.TTF font file contains a
-      10kByte name table with 70 names).
+      popular  though buggy Asian  fonts.  It  now ignores  empty name
+      entries,  invalid  pointer offsets  and  a  few other  incorrect
+      subtleties.  Moreover,  name strings  are now loaded  on demand,
+      which reduces the memory load  of many faces (e.g. the ARIAL.TTF
+      font file contains a 10kByte name table with 70 names).
 
     - Fixed a bug in the Postscript hinter that prevented family blues
       substitution to happen correctly.
@@ -429,116 +449,119 @@ LATEST CHANGES BETWEEN 2.1.1 and 2.1.0
 
     - Three new font drivers in this release:
 
-      * A BDF font driver, contributed by Franco Zappa Nardelli, heavily
-        modified by Werner Lemberg.  It also supports anti-aliased bitmaps
-        (using a slightly extended BDF format).
+      * A  BDF  font driver,  contributed  by  Franco Zappa  Nardelli,
+        heavily  modified   by  Werner  Lemberg.    It  also  supports
+        anti-aliased bitmaps (using a slightly extended BDF format).
 
-      * A Type42 font driver, contributed by Roberto Alameda.  It is
+      * A Type42  font driver, contributed by Roberto  Alameda.  It is
         still experimental but seems to work relatively well.
 
-      * A PFR font driver, contributed by David Turner himself.  It doesn't
-        support PFR hinting -- note that BitStream has at least two patents
-        on this format!
+      * A PFR  font driver, contributed  by David Turner  himself.  It
+        doesn't  support PFR  hinting --  note that  BitStream  has at
+        least two patents on this format!
 
 
   III. MISCELLANEOUS
 
-    - The cache sub-system has been optimized in important ways.  Cache hits
-      are now significantly faster.  For example, using the CMap cache is
-      about twice faster than calling FT_Get_Char_Index on most platforms.
-      Similarly, using an SBit cache is about five times faster than loading
-      the bitmaps from a bitmap file, and 300 to 500 times faster than
-      generating them from a scalable format.
+    - The  cache  sub-system has  been  optimized  in important  ways.
+      Cache hits are now significantly faster.  For example, using the
+      CMap cache is about  twice faster than calling FT_Get_Char_Index
+      on most platforms.  Similarly, using an SBit cache is about five
+      times faster  than loading the  bitmaps from a bitmap  file, and
+      300 to  500 times  faster than generating  them from  a scalable
+      format.
 
-      Note that you should recompile your sources if you designed a custom
-      cache class for the FT2 Cache subsystem, since the changes performed
-      are source, but not binary, compatible.
+      Note that  you should recompile  your sources if you  designed a
+      custom  cache  class for  the  FT2  Cache  subsystem, since  the
+      changes performed are source, but not binary, compatible.
 
 
-========================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.1.0 and 2.0.9
 
   I. IMPORTANT BUG FIXES
 
-    - The TrueType bytecode interpreter has been fixed to produce
+    - The  TrueType bytecode  interpreter  has been  fixed to  produce
       _exactly_ the same output as FreeType 1.x.  Previous differences
-      were due to slightly distinct fixed-point computation routines
+      were due  to slightly distinct  fixed-point computation routines
       used to perform dot products and vector length measurements.
 
-      It seems that native TrueType hinting is _extremely_ sensitive
-      to rounding errors.  The required vector computation routines have
-      been optimized and placed within the "ttinterp.c" file.
+      It seems  that native TrueType hinting  is _extremely_ sensitive
+      to  rounding errors.  The  required vector  computation routines
+      have been optimized and placed within the "ttinterp.c" file.
 
     - Fixed the parsing of accelerator tables in the PCF font driver.
 
-    - Fixed the Type1 glyph loader routine used to compute the font's
+    - Fixed the Type1 glyph loader  routine used to compute the font's
       maximum advance width.
 
+
   II. NEW FEATURES
 
     - The `configure' script used on Unix systems has been modified to
-      check that GNU Make is being used to build the library.  Otherwise,
-      it will display a message proposing to use the GNUMAKE environment
-      variable to name it.
+      check  that  GNU  Make  is  being used  to  build  the  library.
+      Otherwise,  it  will display  a  message  proposing  to use  the
+      GNUMAKE environment variable to name it.
 
       The Unix-specific file README.UNX has been modified accordingly.
 
 
   III. MISCELLANEOUS
 
-    - The FreeType License in `docs/FTL.txt' has been updated to include
-      a proposed preferred disclaimer.  If you are using FreeType in your
-      products, you are encouraged (but not mandated) to use the following
-      text in your documentation:
+    - The  FreeType  License in  `docs/FTL.txt'  has  been updated  to
+      include  a  proposed preferred  disclaimer.   If  you are  using
+      FreeType in your products, you are encouraged (but not mandated)
+      to use the following text in your documentation:
 
       """
-        Portions of this software are copyright © 1996-2002 The FreeType
-        Project (www.freetype.org).  All rights reserved.
+        Portions of this software are copyright © 1996-2002 The
+        FreeType Project (www.freetype.org).  All rights reserved.
       """
 
     - The default size of the render pool has been reduced to 16kByte.
-      This shouldn't result in any noticeable performance penalty, unless
-      you are using the engine as-is to render very large and complex
-      glyphs.
+      This  shouldn't result  in any  noticeable  performance penalty,
+      unless you are  using the engine as-is to  render very large and
+      complex glyphs.
 
-    - The FreeType 2 redesign has begun.  More information can be found
-      at this URL:
+    - The  FreeType 2  redesign has  begun.  More  information  can be
+      found at this URL:
 
         http://www.freetype.org/freetype2/redesign.html
 
-      The following internal changes have been performed within the sources
-      of this release:
+      The following  internal changes  have been performed  within the
+      sources of this release:
 
-        - Many internal types have been renamed to increase consistency.
-          The following should be true, except for public types:
+        - Many   internal  types   have  been   renamed   to  increase
+          consistency.   The  following  should  be true,  except  for
+          public types:
 
-            * All structure types have a name ending in "Rec" (short for
-              `record').
+            * All structure  types have a name ending  in "Rec" (short
+              for `record').
 
-            * A pointer-to-structure type has the same name as the
+            * A  pointer-to-structure type  has the  same name  as the
               structure, _without_ the "Rec" suffix.
 
-                Example:
+              Example:
 
-                  typedef struct FooRec_
-                  {
-                    ...
+                typedef struct FooRec_
+                {
+                  ...
 
-                  } FooRec, *Foo;
+                } FooRec, *Foo;
 
-        - Many internal macros have been renamed to increase consistency.
-          The following should be true:
+        - Many   internal  macros  have   been  renamed   to  increase
+          consistency.  The following should be true:
 
-            * All macros have a name beginning with "FT_".  This required
-              a few changes like
+            * All  macros  have a  name  beginning  with "FT_".   This
+              required a few changes like
 
                 ALLOC   => FT_ALLOC
                 FREE    => FT_FREE
                 REALLOC => FT_REALLOC
 
-            * All macros are completely UPPERCASE.  This required a few
-              changes like:
+            * All  macros are completely  UPPERCASE.  This  required a
+              few changes like:
 
                 READ_Short  => FT_READ_SHORT
                 NEXT_Short  => FT_NEXT_SHORT
@@ -547,7 +570,7 @@ LATEST CHANGES BETWEEN 2.1.0 and 2.0.9
                 MEM_Copy    => FT_MEM_COPY
                 etc.
 
-            * Whenever possible, all macro names follow the
+            * Whenever   possible,   all   macro  names   follow   the
               FT_<OBJECT>_<METHOD> pattern.  For example
 
                 ACCESS_Frame   => FT_FRAME_ENTER
@@ -561,7 +584,7 @@ LATEST CHANGES BETWEEN 2.1.0 and 2.0.9
                 FILE_ReadAt    => FT_STREAM_READ_AT
                 READ_Fields    => FT_STREAM_READ_FIELDS
 
-        - Many internal functions have been renamed to follow the
+        - Many  internal functions  have  been renamed  to follow  the
           FT_<Object>_<Method> pattern.  For example:
 
             FT_Seek_Stream       => FT_Stream_Seek
@@ -573,288 +596,299 @@ LATEST CHANGES BETWEEN 2.1.0 and 2.0.9
 
           Note that method names do not contain "_".
 
-        - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced
-          with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a type
-          as the fourth argument.  Instead, the array element type size
-          is computed automatically from the type of the target pointer
-          used.
+        - The FT_ALLOC_ARRAY  and FT_REALLOC_ARRAY have  been replaced
+          with  FT_NEW_ARRAY and  FT_RENEW_ARRAY which  do not  take a
+          type  as the  fourth argument.   Instead, the  array element
+          type  size is computed  automatically from  the type  of the
+          target pointer used.
 
-        - A new object class, FT_CMap, has been introduced.  These
-          internal objects are used to model character maps.  This eases
-          the support of additional charmap types within the engine.
+        - A  new object  class, FT_CMap,  has been  introduced.  These
+          internal  objects are  used to  model character  maps.  This
+          eases  the support  of additional  charmap types  within the
+          engine.
 
-        - A new configuration file named "ftstdlib.h" has been added
-          to `include/freetype/config'.  It is used to define aliases
-          for _every_ routine of the ISO C library that the font engine
-          uses.  Each aliases has a "ft_" prefix (e.g. "ft_strlen" is an
-          alias for "strlen").
+        - A new  configuration file named "ftstdlib.h"  has been added
+          to `include/freetype/config'.  It  is used to define aliases
+          for  _every_ routine  of the  ISO  C library  that the  font
+          engine   uses.    Each    aliases   has   a   "ft_"   prefix
+          (e.g. "ft_strlen" is an alias for "strlen").
 
-          This is used to ease the porting of FreeType 2 to exotic runtime
-          environments where the ISO C Library isn't available (e.g.
-          XFree86 extension modules).
+          This is  used to  ease the porting  of FreeType 2  to exotic
+          runtime environments where the ISO C Library isn't available
+          (e.g.  XFree86 extension modules).
 
       More details are available in the "ChangeLog" file.
 
 
-============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.9 and 2.0.8
 
   I. IMPORTANT BUG FIXES
 
     - Certain fonts like "foxjump.ttf" contain broken name tables with
-      invalid entries and wild offsets.  This caused FreeType to crash when
-      trying to load them.
+      invalid entries and wild offsets.  This caused FreeType to crash
+      when trying to load them.
 
-      The SFNT `name' table loader has been fixed to be able to support
-      these strange fonts.
+      The  SFNT `name'  table  loader has  been  fixed to  be able  to
+      support these strange fonts.
 
-      Moreover, the code in charge of processing this table has been changed
-      to always favour Windows-formatted entries over other ones.  Hence, a
-      font that works on Windows but not on the Mac will load cleanly in
-      FreeType and report accurate values for Family & PostScript names.
+      Moreover, the code  in charge of processing this  table has been
+      changed  to always favour  Windows-formatted entries  over other
+      ones.  Hence,  a font that works  on Windows but not  on the Mac
+      will  load cleanly in  FreeType and  report accurate  values for
+      Family & PostScript names.
 
     - The CID font driver has been fixed.  It unfortunately returned a
-      Postscript Font name with a leading slash, as in
+      Postscript   Font   name   with   a   leading   slash,   as   in
       "/MunhwaGothic-Regular".
 
-    - FreeType 2 should now compile fine on AIX 4.3.3 as a shared library.
+    - FreeType  2 should now  compile fine  on AIX  4.3.3 as  a shared
+      library.
 
-    - A bug in the Postscript hinter has been found and fixed, removing
-      un-even stem widths at small pixel sizes (like 14-17).
+    - A  bug  in the  Postscript  hinter  has  been found  and  fixed,
+      removing un-even stem widths at small pixel sizes (like 14-17).
 
-      This improves the quality of a certain number of Postscript fonts.
+      This  improves the  quality of  a certain  number  of Postscript
+      fonts.
 
 
   II. NEW FEATURES
 
-    - A new function named `FT_Library_Version' has been added to return
-      the current library's major, minor, and patch version numbers.  This
-      is important since the macros FREETYPE_MAJOR, FREETYPE_MINOR, and
-      FREETYPE_PATCH cannot be used when the library is dynamically linked
-      by a program.
+    - A  new function  named  `FT_Library_Version' has  been added  to
+      return  the current  library's major,  minor, and  patch version
+      numbers.   This is  important since  the  macros FREETYPE_MAJOR,
+      FREETYPE_MINOR,  and  FREETYPE_PATCH  cannot  be used  when  the
+      library is dynamically linked by a program.
 
-    - Two new APIs have been added: `FT_Get_First_Char' and
+    - Two   new  APIs   have  been   added:   `FT_Get_First_Char'  and
       `FT_Get_Next_Char'.
 
-      Together, these can be used to iterate efficiently over the currently
-      selected charmap of a given face.  Read the API reference for more
-      details.
+      Together,  these can  be used  to iterate  efficiently  over the
+      currently  selected  charmap of  a  given  face.   Read the  API
+      reference for more details.
 
 
   III. MISCELLANEOUS
 
-    - The FreeType sources are under heavy internal re-factoring.  As a
-      consequence, we have created a branch named "STABLE" on the CVS to
-      hold all future releases/fixes in the 2.0.x family.
+    - The FreeType sources are  under heavy internal re-factoring.  As
+      a consequence,  we have created  a branch named "STABLE"  on the
+      CVS to hold all future releases/fixes in the 2.0.x family.
 
-      The HEAD branch now contains the re-factored sources and shouldn't be
-      used for testing or packaging new releases.  In case you would like
-      to access the 2.0.9 sources from our CVS repository, use the tag
-      `VER-2-0-9'.
+      The  HEAD  branch  now  contains  the  re-factored  sources  and
+      shouldn't  be used for  testing or  packaging new  releases.  In
+      case you  would like  to access the  2.0.9 sources from  our CVS
+      repository, use the tag `VER-2-0-9'.
 
 
-============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.8 and 2.0.7
 
   I. IMPORTANT BUG FIXES
 
-    - There was a small but nasty bug in "freetype-config.in" which
+    - There was  a small but  nasty bug in  "freetype-config.in" which
       caused the "freetype-config" script to fail on Unix.
 
-      This didn't prevent the installation of the library or even
-      its execution, but caused problems when trying to compile many
-      Unix packages that depend on it.
+      This didn't prevent the installation  of the library or even its
+      execution, but caused problems  when trying to compile many Unix
+      packages that depend on it.
 
-    - Some TrueType or OpenType fonts embedded in PDF documents do
-      not have a 'cmap', 'post' and 'name' as is required by the
+    - Some TrueType or OpenType fonts embedded in PDF documents do not
+      have  a  'cmap',  'post'  and  'name'  as  is  required  by  the
       specification.  FreeType no longer refuses to load such fonts.
 
-    - various fixes to the PCF font driver
+    - Various fixes to the PCF font driver.
 
 
-============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.7 and 2.0.6
 
   I. IMPORTANT BUG FIXES
 
-    - Fixed two bugs in the Type 1 font driver.  The first one resulted in a
-      memory leak in subtle cases.  The other one caused FreeType to crash
-      when trying to load ".gsf" files (Ghostscript so-called Postscript
-      fonts).
+    - Fixed  two  bugs in  the  Type 1  font  driver.   The first  one
+      resulted in a memory leak in subtle cases.  The other one caused
+      FreeType to crash when  trying to load ".gsf" files (Ghostscript
+      so-called Postscript fonts).
 
-      (This made _many_ KDE applications crash on certain systems.  FreeType
-       _is_ becoming a critical system component on Linux :-)
+      (This  made _many_  KDE applications  crash on  certain systems.
+       FreeType _is_ becoming a critical system component on Linux :-)
 
     - Fixed a memory leak in the CFF font driver.
 
     - Fixed a memory leak in the PCF font driver.
 
-    - Fixed the Visual C++ project file "builds/win32/visualc/freetype.dsp"
-      since it didn't include the Postscript hinter component, causing
-      errors at build time.
+    - Fixed       the        Visual       C++       project       file
+      "builds/win32/visualc/freetype.dsp" since  it didn't include the
+      Postscript hinter component, causing errors at build time.
 
-    - Fixed a small rendering bug in the anti-aliased renderer that only
-      occurred when trying to draw thin (less than 1 pixel) strokes.
+    - Fixed a  small rendering bug  in the anti-aliased  renderer that
+      only  occurred when  trying to  draw  thin (less  than 1  pixel)
+      strokes.
 
-    - Fixed "builds/unix/freetype2.a4" which is used to generate a valid
-      "freetype2.m4" for use with autoconf.
+    - Fixed  "builds/unix/freetype2.a4" which  is used  to  generate a
+      valid "freetype2.m4" for use with autoconf.
 
     - Fixed the OpenVMS Makefiles.
 
 
   II. MISCELLANEOUS
 
-    - Added "configure" and "install" scripts to the top-level directory.
-      A GNU-style installation is thus now easily possible with
+    - Added  "configure"  and   "install"  scripts  to  the  top-level
+      directory.  A GNU-style installation is thus now easily possible
+      with
 
-          ./configure  <options>
-          make
-          make install
+        ./configure  <options>
+        make
+        make install
 
 
-============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.6 and 2.0.5
 
   I. IMPORTANT BUG FIXES
 
-    - It wasn't possible to load embedded bitmaps when the auto-hinter was
-      used.  This is now fixed.
+    - It wasn't possible to load embedded bitmaps when the auto-hinter
+      was used.  This is now fixed.
 
-    - The TrueType font driver didn't load some composites properly (the
-      sub-glyphs were slightly shifted, and this was only noticeable when
-      using monochrome rendering).
+    - The TrueType  font driver  didn't load some  composites properly
+      (the  sub-glyphs  were  slightly  shifted,  and  this  was  only
+      noticeable when using monochrome rendering).
 
-    - Various fixes to the auto-hinter.  They merely improve the output of
-      sans-serif fonts.  Note that there are still problems with serifed
-      fonts and composites (accented characters).
+    - Various  fixes  to the  auto-hinter.   They  merely improve  the
+      output of sans-serif fonts.   Note that there are still problems
+      with serifed fonts and composites (accented characters).
 
-    - All scalable font drivers erroneously returned un-fitted glyph
-      advances when hinting was requested.  This created problems for a
-      number of layout applications.  This is a very old bug that got
-      undetected mainly because most test/demo program perform rounding
-      explicitly or implicitly (through the cache).
+    - All scalable  font drivers erroneously  returned un-fitted glyph
+      advances when hinting was  requested.  This created problems for
+      a number  of layout applications.  This  is a very  old bug that
+      got  undetected mainly  because most  test/demo  program perform
+      rounding explicitly or implicitly (through the cache).
 
-    - FT_Glyph_To_Bitmap() did erroneously modify the source glyph in
+    - FT_Glyph_To_Bitmap() did erroneously  modify the source glyph in
       certain cases.
 
-    - "glnames.py" still contained a bug that made FreeType return invalid
-      names for certain glyphs.
+    - "glnames.py"  still contained  a bug  that made  FreeType return
+      invalid names for certain glyphs.
 
-    - The library crashed when loading certain Type 1 fonts like "sadn.pfb"
-      ("Stalingrad Normal"), which appear to contain pathetic font info
-      dictionaries.
+    - The  library crashed  when  loading certain  Type  1 fonts  like
+      "sadn.pfb"  ("Stalingrad  Normal"),   which  appear  to  contain
+      pathetic font info dictionaries.
 
-    - The TrueType glyph loader is now much more paranoid and checks everything
-      when loading a given glyph image.  This was necessary to avoid
-      problems (crashes and/or memory overwrites) with broken fonts that
-      came from a really buggy automatic font converter.
+    - The TrueType glyph  loader is now much more  paranoid and checks
+      everything when loading a given glyph image.  This was necessary
+      to avoid problems (crashes and/or memory overwrites) with broken
+      fonts that came from a really buggy automatic font converter.
 
 
   II. IMPORTANT UPDATES AND NEW FEATURES
 
     - Important updates to the Mac-specific parts of the library.
 
-    - The caching sub-system has been completely re-designed, and its API
-      has evolved (the old one is still supported for backwards
+    - The caching sub-system has  been completely re-designed, and its
+      API has  evolved (the old  one is still supported  for backwards
       compatibility).
 
-      The documentation for it is not yet completed, sorry.  For now, you
-      are encouraged to continue using the old API.  However, the ftview
-      demo program in the ft2demos package has already been updated to use
-      the new caching functions.
+      The documentation for it is  not yet completed, sorry.  For now,
+      you are encouraged to continue  using the old API.  However, the
+      ftview  demo program in  the ft2demos  package has  already been
+      updated to use the new caching functions.
 
-    - A new charmap cache is provided too.  See FTC_CMapCache().  This is
-      useful to perform character code -> glyph index translations quickly,
-      without the need for an opened FT_Face.
+    - A new charmap cache is provided too.  See FTC_CMapCache().  This
+      is useful to perform  character code -> glyph index translations
+      quickly, without the need for an opened FT_Face.
 
-    - A NEW POSTSCRIPT HINTER module has been added to support native hints
-      in the following formats: PostScript Type 1, PostScript CID, and
-      CFF/CEF.
+    - A NEW POSTSCRIPT HINTER module  has been added to support native
+      hints in  the following  formats: PostScript Type  1, PostScript
+      CID, and CFF/CEF.
 
-      Please test!  Note that the auto-hinter produces better results for a
-      number of badly-hinted fonts (mostly auto-generated ones) though.
+      Please test!  Note that  the auto-hinter produces better results
+      for a number of  badly-hinted fonts (mostly auto-generated ones)
+      though.
 
-    - A memory debugger is now part of the standard FreeType sources.  To
-      enable it, define FT_DEBUG_MEMORY in <freetype/config/ftoption.h>, and
-      recompile the library.
+    - A memory debugger is now  part of the standard FreeType sources.
+      To      enable      it,      define      FT_DEBUG_MEMORY      in
+      <freetype/config/ftoption.h>, and recompile the library.
 
-      Additionally, define the _environment_ variable FT_DEBUG_MEMORY and
-      run any program using FreeType.  When the library is exited, a summary
-      of memory footprints and possible leaks will be displayed.
+      Additionally, define  the _environment_ variable FT_DEBUG_MEMORY
+      and run any program using FreeType.  When the library is exited,
+      a  summary  of memory  footprints  and  possible  leaks will  be
+      displayed.
 
-      This works transparently with _any_ program that uses FreeType.
-      However, you will need a lot of memory to use this (allocated blocks
-      are never released to the heap to detect double deletes easily).
+      This works transparently with  _any_ program that uses FreeType.
+      However, you  will need a lot  of memory to  use this (allocated
+      blocks are never  released to the heap to  detect double deletes
+      easily).
 
 
   III. MISCELLANEOUS
 
-    - We are aware of subtle differences between the output of FreeType
-      versions 1 and 2 when it comes to monochrome TrueType-hinted glyphs.
-      These are most probably due to small differences in the monochrome
-      rasterizers and will be worked out in an upcoming release.
+    - We  are  aware  of  subtle  differences between  the  output  of
+      FreeType  versions   1  and  2  when  it   comes  to  monochrome
+      TrueType-hinted glyphs.   These are  most probably due  to small
+      differences in the monochrome rasterizers and will be worked out
+      in an upcoming release.
 
     - We have decided to fork the sources in a "stable" branch, and an
-      "unstable" one, since FreeType is becoming a critical component of
-      many Unix systems.
+      "unstable" one, since FreeType  is becoming a critical component
+      of many Unix systems.
 
-      The next bug-fix releases of the library will be named 2.0.7, 2.0.8,
-      etc., while the "2.1" branch will contain a version of the sources
-      where we will start major reworking of the library's internals, in
-      order to produce FreeType 2.2.0 (or even 3.0) in a more distant
-      future.
+      The next  bug-fix releases of  the library will be  named 2.0.7,
+      2.0.8, etc.,  while the "2.1"  branch will contain a  version of
+      the sources where we will start major reworking of the library's
+      internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
+      more distant future.
 
-      We also hope that this scheme will allow much more frequent releases
-      than in the past.
+      We  also hope  that this  scheme will  allow much  more frequent
+      releases than in the past.
 
 
-============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.5 and 2.0.4
 
-  NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER.  THIS MODULE WILL
-  BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
+  NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER.  THIS MODULE
+  WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
 
-  - Fixed a bug that made certain glyphs, like "Cacute", "cacute" and
-    "lslash" unavailable from Unicode charmaps of Postscript fonts.  This
-    prevented the correct display of Polish text, for example.
+  - Fixed a bug that made  certain glyphs, like "Cacute", "cacute" and
+    "lslash"  unavailable from Unicode  charmaps of  Postscript fonts.
+    This prevented the correct display of Polish text, for example.
 
-  - The kerning table of Type 1 fonts was loaded by FreeType, when its AFM
-    file was attached to its face, but the FT_FACE_FLAG_HAS_KERNING bit
-    flags was not set correctly, preventing FT_Get_Kerning to return
-    meaningful values.
+  - The kerning table of Type 1 fonts was loaded by FreeType, when its
+    AFM    file    was    attached    to    its    face,    but    the
+    FT_FACE_FLAG_HAS_KERNING   bit  flags   was  not   set  correctly,
+    preventing FT_Get_Kerning to return meaningful values.
 
-  - Improved SFNT (TrueType & OpenType) charmap support.  Slightly better
-    performance, as well as support for the new formats defined by the
-    OpenType 1.3 specification (8, 10, and 12)
+  - Improved  SFNT (TrueType  & OpenType)  charmap  support.  Slightly
+    better performance, as well as support for the new formats defined
+    by the OpenType 1.3 specification (8, 10, and 12)
 
-  - Fixed a serious typo in "src/base/ftcalc.c" which caused invalid
+  - Fixed a  serious typo in "src/base/ftcalc.c"  which caused invalid
     computations in certain rare cases, producing ugly artefacts.
 
-  - The size of the EM square is computed with a more accurate algorithm
-    for Postscript fonts.  The old one caused slight errors with embedded
-    fonts found in PDF documents.
+  - The  size  of the  EM  square is  computed  with  a more  accurate
+    algorithm for Postscript fonts.   The old one caused slight errors
+    with embedded fonts found in PDF documents.
 
-  - Fixed a bug in the cache manager that prevented normal LRU behaviour
-    within the cache manager, causing unnecessary reloads (for FT_Face and
-    FT_Size objects only).
+  - Fixed  a  bug in  the  cache  manager  that prevented  normal  LRU
+    behaviour  within the cache  manager, causing  unnecessary reloads
+    (for FT_Face and FT_Size objects only).
 
-  - Added a new function named "FT_Get_Name_Index" to retrieve the glyph
-    index of a given glyph name, when found in a face.
+  - Added  a new  function named  "FT_Get_Name_Index" to  retrieve the
+    glyph index of a given glyph name, when found in a face.
 
-  - Added a new function named "FT_Get_Postscript_Name" to retrieve the
-    "unique" Postscript font name of a given face.
+  - Added  a new function  named "FT_Get_Postscript_Name"  to retrieve
+    the "unique" Postscript font name of a given face.
 
-  - Added a new public header size named FT_SIZES_H (or
-    <freetype/ftsizes.h>) providing new FT_Size-management functions:
+  - Added   a   new   public   header  size   named   FT_SIZES_H   (or
+    <freetype/ftsizes.h>) providing  new FT_Size-management functions:
     FT_New_Size, FT_Activate_Size, FT_Done_Size.
 
-  - Fixed a reallocation bug that generated a dangling pointer (and possibly
-    memory leaks) with Postscript fonts (in src/psaux/psobjs.c).
+  - Fixed a  reallocation bug that  generated a dangling  pointer (and
+    possibly    memory    leaks)    with    Postscript    fonts    (in
+    src/psaux/psobjs.c).
 
   - Many fixes for 16-bit correctness.
 
@@ -862,148 +896,155 @@ LATEST CHANGES BETWEEN 2.0.5 and 2.0.4
 
   - Added an Amiga build directory in "builds/amiga".
 
-============================================================================
+
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.4 and 2.0.3
 
-  - Fixed a rather annoying bug that was introduced in 2.0.3.  Namely, the
-    font transformation set through FT_Set_Transform was applied twice to
-    auto-hinted glyphs, resulting in incorrectly rotated text output.
+  - Fixed a rather annoying bug that was introduced in 2.0.3.  Namely,
+    the font  transformation set through  FT_Set_Transform was applied
+    twice to auto-hinted glyphs, resulting in incorrectly rotated text
+    output.
 
-  - Fixed _many_ compiler warnings.  FT2 should now compile cleanly with
-    Visual C++'s most pedantic warning level (/W4).  It already compiled
-    fine with GCC and a few other compilers.
+  - Fixed _many_  compiler warnings.   FT2 should now  compile cleanly
+    with Visual  C++'s most pedantic warning level  (/W4).  It already
+    compiled fine with GCC and a few other compilers.
 
-  - Fixed a bug that prevented the linear advance width of composite
+  - Fixed a bug  that prevented the linear advance  width of composite
     TrueType glyphs to be correctly returned.
 
-  - Fixed the Visual C++ project files located in "builds/win32/visualc"
-    (previous versions used older names of the library).
+  - Fixed    the    Visual    C++    project    files    located    in
+    "builds/win32/visualc" (previous versions  used older names of the
+    library).
+
+  - Many  32-bit constants  have an  "L" appended  to their  value, in
+    order to improve the 16-bitness  of the code.  Someone is actually
+    trying to use FT2 on an Atari ST machine!
 
-  - Many 32-bit constants have an "L" appended to their value, in order
-    to improve the 16-bitness of the code.  Someone is actually trying to
-    use FT2 on an Atari ST machine!
+  - Updated  the  "builds/detect.mk" file  in  order to  automatically
+    build FT2  on AIX systems.   AIX uses "/usr/sbin/init"  instead of
+    "/sbin/init" and wasn't previously  detected as a Unix platform by
+    the FreeType build system.
 
-  - Updated the "builds/detect.mk" file in order to automatically build
-    FT2 on AIX systems.  AIX uses "/usr/sbin/init" instead of "/sbin/init"
-    and wasn't previously detected as a Unix platform by the FreeType build
-    system.
+  - Updated  the  Unix-specific  portions  of the  build  system  (new
+    libtool version, etc.).
 
-  - Updated the Unix-specific portions of the build system (new libtool
-    version, etc.).
+  - The  SFNT kerning  lodaer now  ensures  that the  table is  sorted
+    (since some problem fonts do not meet this requirement).
 
-  - The SFNT kerning lodaer now ensures that the table is sorted (since some
-    problem fonts do not meet this requirement).
 
-============================================================================
+=======================================================================
 
 LATEST CHANGES BETWEEN 2.0.3 and 2.0.2
 
   I. CHANGES TO THE MODULES / FONT DRIVERS
 
-    - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix several
-      annoying artefacts, mainly:
+    - THE  AUTO-HINTER HAS  BEEN SLIGHTLY  IMPROVED, in  order  to fix
+      several annoying artefacts, mainly:
 
-        - Blue zone alignement of horizontal stems wasn't performed
-          correctly, resulting in artefacts like the "d" being placed one
-          pixel below the "b" in some fonts like Time New Roman.
+        - Blue  zone alignement of  horizontal stems  wasn't performed
+          correctly, resulting in artefacts  like the "d" being placed
+          one pixel below the "b" in some fonts like Time New Roman.
 
-        - Overshoot thresholding wasn't performed correctly, creating
+        - Overshoot thresholding  wasn't performed correctly, creating
           unpleasant artefacts at large character pixel sizes.
 
-        - Composite glyph loading has been simplified.  This gets rid
-          of various artefacts where the components of a composite glyphs
-          were not correctly spaced.
+        - Composite glyph loading has  been simplified.  This gets rid
+          of  various artefacts  where the  components of  a composite
+          glyphs were not correctly spaced.
 
-      These are the last changes to the current auto-hinting module.  A new
-      hinting sub-system is currently in the work in order to support native
-      hints in Type 1 / CFF / OpenType fonts, as well as globally improve
-      rendering.
+      These are  the last changes to the  current auto-hinting module.
+      A new  hinting sub-system is currently  in the work  in order to
+      support native hints  in Type 1 / CFF /  OpenType fonts, as well
+      as globally improve rendering.
 
-    - The PCF driver has been fixed.  It reported invalid glyph dimensions
-      for the fonts available on Solaris.
+    - The  PCF  driver has  been  fixed.   It  reported invalid  glyph
+      dimensions for the fonts available on Solaris.
 
-    - The Type 1, CID and CFF drivers have been modified to fix the
+    - The Type  1, CID and CFF  drivers have been modified  to fix the
       computation of the EM size.
 
-    - The Type 1 driver has been fixed to avoid a dangerous bug that
-      crashed the library with non-conforming fonts (i.e. ones that do not
-      place the .notdef glyph at position 0).
+    - The Type 1  driver has been fixed to avoid  a dangerous bug that
+      crashed the library with non-conforming fonts (i.e. ones that do
+      not place the .notdef glyph at position 0).
 
-    - The TrueType driver had a rather subtle bug (dangling pointer when
-      loading composite glyphs) that could crash the library in rare
-      occasions!
+    - The TrueType  driver had a  rather subtle bug  (dangling pointer
+      when loading  composite glyphs) that could crash  the library in
+      rare occasions!
 
 
   II. HIGH-LEVEL API CHANGES
 
-    - The error code enumeration values have been changed.  An error value
-      is decomposed in a generic error code, and a module number.  see
-      <freetype/fterrors.h> for details.
+    - The error  code enumeration values have been  changed.  An error
+      value  is decomposed  in  a  generic error  code,  and a  module
+      number.  see <freetype/fterrors.h> for details.
 
-    - A new public header file has been introduced, named FT_TRIGONOMETRY_H
-      (include/freetype/fttrig.h), providing trigonometric functions to
-      compute sines, cosines, arctangents, etc. with 16.16 fixed precision.
-      The implementation is based on the CORDIC algorithm and is very fast
-      while being sufficiently accurate.
+    - A   new  public   header   file  has   been  introduced,   named
+      FT_TRIGONOMETRY_H     (include/freetype/fttrig.h),     providing
+      trigonometric functions to  compute sines, cosines, arctangents,
+      etc. with 16.16 fixed precision.  The implementation is based on
+      the CORDIC  algorithm and is very fast  while being sufficiently
+      accurate.
 
 
   III. INTERNALS
 
-    - Added BeOS-specific files in the old build sub-system.  Note that
-      no changes were required to compile the library with Jam.
+    - Added  BeOS-specific files  in the  old build  sub-system.  Note
+      that no changes were required to compile the library with Jam.
 
-    - The configuration is now capable of automatically detecting 64-bit
-      integers on a set of predefined compilers (GCC, Visual C++, Borland
-      C++) and will use them by default.  This provides a small performance
-      boost.
+    - The  configuration  is now  capable  of automatically  detecting
+      64-bit integers  on a set  of predefined compilers  (GCC, Visual
+      C++, Borland C++) and will use them by default.  This provides a
+      small performance boost.
 
-    - A small memory leak that happened when opening 0-sized files (duh!)
-      have been fixed.
+    - A  small memory leak  that happened  when opening  0-sized files
+      (duh!)  have been fixed.
 
-    - Fixed bezier stack depth bug in the routines provided by the
-      FT_BBOX_H header file.  Also fixed similar bugs in the rasterizers.
+    - Fixed bezier  stack depth  bug in the  routines provided  by the
+      FT_BBOX_H  header   file.   Also  fixed  similar   bugs  in  the
+      rasterizers.
 
-    - The outline bounding box code has been rewritten to use direct
-      computations, instead of bezier sub-division, to compute the exact
-      bounding box of glyphs.  This is slightly slower but more accurate.
+    - The outline bounding  box code has been rewritten  to use direct
+      computations,  instead of  bezier sub-division,  to  compute the
+      exact bounding box of glyphs.   This is slightly slower but more
+      accurate.
 
-    - The build system has been improved and fixed, mainly to support "make"
-      on Windows 2000 correctly, avoid problems with "make distclean" on non
-      Unix systems, etc.
+    - The build system has been  improved and fixed, mainly to support
+      "make"  on Windows  2000  correctly, avoid  problems with  "make
+      distclean" on non Unix systems, etc.
 
-    - Hexadecimal constants have been suffixed with "U" to avoid problems
-      with certain compilers on 64-bit platforms.
+    - Hexadecimal  constants  have been  suffixed  with  "U" to  avoid
+      problems with certain compilers on 64-bit platforms.
 
     - A new directory named "src/tools" has been created.  It contains
       Python scripts and simple unit test programs used to develop the
       library.
 
-    - The DocMaker tool has been moved from "docs" to "src/tools" and
+    - The DocMaker tool has been  moved from "docs" to "src/tools" and
       has been updated with the following:
 
          - Now accepts the "--title=XXXX" or "-t XXXX" option from the
            command line to set the project's name in the generated API
            reference.
 
-         - Now accepts the "--output=DIR" or "-o DIR" option from the
-           command line to set the output directory for all generated HTML
-           files.
+         - Now accepts the "--output=DIR"  or "-o DIR" option from the
+           command line to set  the output directory for all generated
+           HTML files.
 
          - Now accepts the "--prefix=XXXX" or "-p XXX" option from the
-           command line to set the file prefix to use for all generated HTML
-           files.
+           command  line  to  set  the  file prefix  to  use  for  all
+           generated HTML files.
 
-         - Now generates the current time/data on each generated page
+         - Now generates the current  time/data on each generated page
            in order to distinguish between versions.
 
-      DocMaker can be used with other projects now, not only FT2 (e.g. MLib,
-      FTLayout, etc.).
+      DocMaker  can be  used with  other  projects now,  not only  FT2
+      (e.g. MLib, FTLayout, etc.).
 
-===========================================================================
 
-LATEST CHANGES BETWEEN 2.0.2 and 2.0.1
+======================================================================
 
+LATEST CHANGES BETWEEN 2.0.2 and 2.0.1
 
   I. CHANGES TO THE MODULES / FONT DRIVERS
 
@@ -1445,7 +1486,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
     * Support for transforms and direct rendering in FT_Load_Glyph:
 
       Most of the functionality found in <freetype/ftglyph.h> has been
-      moved to the core library. Hence, the following:
+      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
@@ -1476,7 +1517,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES
 
 OLD CHANGES FOR BETA 7
 
-  - bug-fixed the  OpenType/CFF parser. It  now loads and  displays my
+  - 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 :-)
 
@@ -1484,20 +1525,20 @@ OLD CHANGES FOR BETA 7
     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
+  - 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..
+  - fixed potential "divide by zero" bugs in ftcalc.c.
 
   - 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
+    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..
 
@@ -1508,8 +1549,8 @@ OLD CHANGES FOR BETA 7
   - 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
+  - added  support for  Multiple Master  fonts in  "type1z".  There is
+    also 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..
@@ -1521,7 +1562,7 @@ OLD CHANGES FOR BETA 7
     correctly (used for many oblique fonts..)
 
   - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
-    to use %p instead of %lx).. Thanks to Karl Robillard
+    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
@@ -1540,7 +1581,7 @@ OLD CHANGES FOR BETA 7
 
 OLD CHANGES 16 May 2000
 
-  - tagged "BETA-6"  in the  CVS tree. This  one is a  serious release
+  - 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
@@ -1570,8 +1611,8 @@ OLD CHANGES 16 May 2000
     |
     |  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:
+    |  correctly   when  one  of   the  argument  is  a  macro.  Also,
+    |  something like:
     |
     |     #define F(x)  print##x
     |
@@ -1581,12 +1622,12 @@ OLD CHANGES 16 May 2000
     |
     |     print "hello")
     |
-    |  by its pre-processor. For  this reason, you simply cannot build
+    |  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.
+  - 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.
 
     This  is necessary to  compile FreeType  as a  DLL on  Windows and
     OS/2.  Depending on the compiler used, a compiler-specific keyword
@@ -1594,7 +1635,7 @@ OLD CHANGES 16 May 2000
     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..
+    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)
@@ -1623,17 +1664,17 @@ OLD CHANGES 16 May 2000
     (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.
+    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
+  - 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 :-)
 
       * second,  to  allow  external  programs to  effectively  access
-        internal  data  fields. For  example,  this  can be  extremely
+        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.
 
@@ -1646,14 +1687,15 @@ OLD CHANGES 16 May 2000
     Some new include sub-directories are available:
 
      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.
+        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
+        describes library  internals.  These are the header files that
         were  previously  found  in  the "src/base"  and  "src/shared"
         directories.
 
@@ -1736,9 +1778,9 @@ OLD CHANGES - 14-apr-2000
     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
+    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
@@ -1751,14 +1793,14 @@ OLD CHANGES - 14-apr-2000
     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"
+    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!
 
-  - Note: The tutorial is out-of-date, grumpf.. :-(
+  - Note: The tutorial is out-of-date.
 
 
 ======================================================================
@@ -1800,7 +1842,7 @@ OLD CHANGES - 12-mar-2000
 
 OLD CHANGES - 22-feb-2000
 
-  - introduced the "psnames" module. It is used to:
+  - 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
@@ -1812,16 +1854,16 @@ OLD CHANGES - 22-feb-2000
         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
+  - 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
+    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
+    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).
 
@@ -1829,7 +1871,7 @@ OLD CHANGES - 22-feb-2000
     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
+    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..
@@ -1880,7 +1922,7 @@ OLDER CHANGES - 27-jan-2000
     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
+    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
@@ -1932,9 +1974,9 @@ High-Level Interface:
       field "face->glyph.format"
 
     - the list  of available  charmaps is directly  accessible through
-      "face->charmaps",  counting "face->num_charmaps"  elements. Each
+      "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 :
+      encoding it deals with.  Valid values are, for example:
 
           ft_encoding_unicode      (for ASCII, Latin-1 and Unicode)
           ft_encoding_apple_roman
@@ -1942,7 +1984,7 @@ High-Level Interface:
           ft_encoding_adobe_standard
           ft_encoding_adobe_expert
 
-      other  values may  be added  in the  future. Each  charmap still
+      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
 
@@ -1992,12 +2034,12 @@ Glyph Image Formats:
   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
+  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
+  default,  which tends  to smooth  many  things.  Note that the  demo
   programs have been updated significantly in order to display these..
 
 
@@ -2012,7 +2054,7 @@ Build system:
      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
+     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
@@ -2023,9 +2065,9 @@ Build system:
   Here's how it works:
 
   - 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
+    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.
 
   - the second time, the build system detects the `config.mk' then use
@@ -2039,7 +2081,7 @@ Build system:
   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
+  this will hopefully changed in the future).  You can however specify
   a different  compiler by specifying  it after the 'setup'  target as
   in:
 
@@ -2063,7 +2105,7 @@ 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:
+  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
@@ -2077,12 +2119,12 @@ Portability:
 
     - resources have disappeared (they created more problems than they
       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.
+      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
+      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).
@@ -2103,18 +2145,19 @@ Font Drivers:
   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"
-  rules file, used to describe the driver to the build system.
+  This  file is  autogenerated  when  invoking  `make modules'.   This
+  target  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.
 
-  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..
+  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..
 
 
 ----------------------------------------------------------------------
@@ -2128,14 +2171,14 @@ Extensions support:
   driver.
 
   Extension ids are  now strings, rather than 4-byte  tags, as this is
-  usually more readable..
+  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
-  to the correct font driver. Here is some example code:
+  to the correct font driver.  Here is some example code:
 
    // Registering an extensions
    //
diff --git a/include/freetype/internal/ftserv.h b/include/freetype/internal/ftserv.h
index 5e2c32f..ac75513 100644
--- a/include/freetype/internal/ftserv.h
+++ b/include/freetype/internal/ftserv.h
@@ -135,5 +135,6 @@
 #define FT_SERVICE_GLYPH_DICT_H        <freetype/internal/services/glyfdict.h>
 #define FT_SERVICE_BDF_H               <freetype/internal/services/bdf.h>
 #define FT_SERVICE_XFREE86_NAME_H      <freetype/internal/services/xf86name.h>
+#define FT_SERVICE_SFNT_H              <freetype/internal/services/sfnt.h>
 
 #endif /* __FT_SERVICE_H__ */
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index e50011f..6a06e3d 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -27,6 +27,7 @@
 #include FT_TRUETYPE_IDS_H
 #include FT_OUTLINE_H
 
+#include FT_SERVICE_SFNT_H
 #include FT_SERVICE_POSTSCRIPT_NAME_H
 #include FT_SERVICE_GLYPH_DICT_H
 
diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c
index 19c7fa8..b018a93 100644
--- a/src/cff/cffdrivr.c
+++ b/src/cff/cffdrivr.c
@@ -217,8 +217,6 @@
   *
   */
 
-#include FT_SERVICE_GLYPH_DICT_H
-
   static FT_Error
   cff_get_glyph_name( CFF_Face    face,
                       FT_UInt     glyph_index,